yanounou91 | Bonjour, Je m'explique. j'ai réalisé un formulaire en m'aidant couplant petites connaissances et aide code trouvés sur le forum. Le but est que pour certains éléments du formulaire, une liste deroulante propose des valeurs à l'utilisateur. Cela fonctionne mais le probleme est que lorsque le formulaire est actif, les listes de valeurs n'apparaissent que l'ors d'un clic sur le fond du formulaire. Meme probleme pour la copie des valeurs sélectionnées vers l'onglet "Données". je crains que l'utilisateurs pense que le formulaire ne fonctionne pas et de ne pas avoir les résultats en "Données". Comment faire pour qu'une fois le formulaire ouvert, les valeurs du menu déroulant s'affiche directement quand l'utilisateur clique sur la zone de liste modifiable et que les données en "Données" se copie conformément au code saisie ? (sans avoir à cliquer dans l'espace vide du formulaire). lien : En vous remerciant et m'excusant pour certains termes peut etre mal choisis dans ma question. Yannick PS : Le lien du fichier joint est un XSLM et devrait permettre de mieux comprendre le probleme Voici le code : Code :
- Option Explicit
- Dim Ws As Worksheet
- 'pour enlever la croix rouge d'un UF
- #If Win64 Then
- Private Declare PtrSafe Function GetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
- Private Declare PtrSafe Function SetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
- Private Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
- #Else
- Private Declare Function GetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
- Private Declare Function SetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
- Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
- Private Sub TextBox1_Change()
- End Sub
- #End If
- Private Sub UserForm_Initialize()
- Dim hWnd As Long
- hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D" ) _
- & "Frame", Me.Caption)
- SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
- End Sub
- 'Fermeture, validation du questionnaire
- Private Sub CommandButton1_Click()
- Unload UserForm1
- End Sub
- Private Sub UserForm_Click()
- ComboBox19.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox19.List() = Array("RH", "DAF", "MP", "COMPTA", "TECHNIQUE", "DIV", "Etablissement" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox5.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox5.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox6.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox6.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox7.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox7.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox8.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox8.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox13.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox13.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox14.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox14.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox15.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox15.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox15.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox15.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox16.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox16.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox17.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox17.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox18.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox18.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox9.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox9.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox10.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox10.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox11.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox11.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- ComboBox12.ColumnCount = 1 'Pour la liste déroulante Entité
- ComboBox12.List() = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" )
- Set Ws = Sheets("Données" ) 'Correspond au nom de votre onglet dans le fichier Excel
- 'Ecrire les réponses dans l'onglet données
- Sheets("Données" ).Range(Cells(2, 1), Cells(18, 1)) = ComboBox19.Value
- Sheets("Données" ).Range(Cells(2, 2), Cells(18, 2)) = TextBox1.Value
- Sheets("Données" ).Range(Cells(2, 3), Cells(18, 3)) = TextBox3.Value
- Sheets("Données" ).Range(Cells(2, 4), Cells(18, 4)) = TextBox2.Value
- Sheets("Données" ).Cells(2, 8) = ComboBox5.Value
- Sheets("Données" ).Cells(3, 8) = ComboBox6.Value
- Sheets("Données" ).Cells(4, 8) = ComboBox7.Value
- Sheets("Données" ).Cells(5, 8) = ComboBox8.Value
- Sheets("Données" ).Cells(6, 8) = ComboBox13.Value
- Sheets("Données" ).Cells(7, 8) = ComboBox14.Value
- Sheets("Données" ).Cells(8, 8) = ComboBox15.Value
- Sheets("Données" ).Cells(9, 8) = ComboBox16.Value
- Sheets("Données" ).Cells(10, 8) = ComboBox17.Value
- Sheets("Données" ).Cells(11, 8) = ComboBox18.Value
- Sheets("Données" ).Cells(12, 8) = ComboBox9.Value
- Sheets("Données" ).Cells(13, 8) = ComboBox10.Value
- Sheets("Données" ).Cells(14, 8) = ComboBox11.Value
- Sheets("Données" ).Cells(15, 8) = ComboBox12.Value
- Sheets("Données" ).Cells(16, 8) = TextBox4.Value
- Sheets("Données" ).Cells(17, 8) = TextBox5.Value
- Sheets("Données" ).Cells(18, 8) = TextBox6.Value
- End Sub
- Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
- Dim Ctrl As Control
- 'parcourt les contrôles du formulaire
- For Each Ctrl In Me.Controls
-
- If TypeName(Ctrl) = "TextBox" Then
- If Ctrl.Text = "" Then
- MsgBox "Veuillez renseigner tous les champs SVP"
- Cancel = True
- Exit Sub
- End If
- End If
- Next Ctrl
- End Sub
-
- Private Sub UserForm_QueryClose2(Cancel As Integer, CloseMode As Integer)
- End Sub
- Dim Ctrl As Control
- 'parcour les contrôles du formulaire
- For Each Ctrl In Me.Controls
-
- If TypeName(Ctrl) = "ComboBox" Then
- If Ctrl.Text = "" Then
- MsgBox "Veuillez renseigner tous les champs SVP"
- Cancel = True
-
- Exit Sub
- End If
-
- End If
-
- Next Ctrl
-
- End Sub
|
Merci à vous
Message édité par yanounou91 le 14-12-2014 à 21:21:19
|