vodkaddict | Bonjour,
J'ai repris un programme qui me permet de mettre une valeur dans une case en double cliquant dessus, je l'ai arrangé à ma sauce pour que cela ouvre une UserForm qui me lance sur 3 liste déroulante et un bouton Valider:
le 1er choix influence le 2ème qui lui même influence le 3ème.
Le problème c'est que quand je double sur ma feuille ("D1" ), l'UF se lance, j'ai mes 3 liste déroulante et mon bouton "valider" mais quand je veux pour choisir mon 1er choix, ma liste déroulante est vide... et je ne vois pas pourquoi :s. ComboBox3 = C'est mon 1er choix ComboBox1 = C'est mon 2ème choix ComboBox2 = C'est mon 3ème choix, celui que je veux retourner sur la case ou je double clic Voici ce qu'il y a dans "D1" Code Visual Basic :
Code :
- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
- On Error Resume Next
- If IsEmpty(ActiveCell.Value) Then
- UserForm9.Show
- ActiveCell.Value = ComboBox2.Text
- ElseIf ActiveCell.Value = "X" Then
- ActiveCell.Value = ""
- End If
- Cancel = True
- End Sub
|
Dans mon UF(n°9) Code Visual Basic :
Code :
- Private Sub UserForm_click()
- ComboBox3.Rowsource = "Feuil10!F11:F12" 'Récupération des Données à partir de la feuille 10, 2 choix possible : Module/onduleur
- If ComboBox3.Text = "Module" Then
- Option Explicit
- 'La sélection du ComboBox1 (données colonne B) définit le contenu du ComboBox2 (données colonne 1)
- Dim TabTemp As Variant
- Dim L As Long
- 'Mémorise les données dans un tableau variant temporaire
- With Sheets("Module" )
- L = .Cells(.Rows.Count, 1).End(xlUp).Row
- TabTemp = .Range(.Cells(2, 1), .Cells(L, 3)).Value
- End With
- 'Remplir ComboBox1
- RemplirCbo 1, ""
- Else
- Dim L As Long
- 'Mémorise les données dans un tableau variant temporaire
- With Sheets("Onduleur" )
- L = .Cells(.Rows.Count, 1).End(xlUp).Row
- TabTemp = .Range(.Cells(2, 1), .Cells(L, 3)).Value
- End With
- 'Remplir ComboBox1
- RemplirCbo 1, ""
- End Sub
- Private Sub ComboBox1_Change()
- Dim x As String
- 'Remplir Combo2
- RemplirCbo 2, ComboBox1.Text
- x = ComboBox2.Text
- End Sub
- Private Sub RemplirCbo(Id As Byte, T As String)
- Dim Col As New Collection 'gestion doublons
- Dim Cbo As Control
- Dim L As Long
- 'RAZ ComboBox
- For L = 2 To Id Step -1
- Controls("Combobox" & L).Clear
- Next L
- 'MAJ ComboBox (sans doublon)
- Set Cbo = Controls("Combobox" & Id)
- For L = 1 To UBound(TabTemp, 1)
- If TabTemp(L, 2) <> "" Then 'Pour éviter les lignes de titre
- If Id = 1 Then 'Pour la première ComboBox
- TabTemp(L, 3) = 1
- On Error Resume Next
- Col.Add TabTemp(L, 2), CStr(TabTemp(L, 2))
- On Error GoTo 0
- If Col.Count > Cbo.ListCount Then Cbo.AddItem TabTemp(L, 2)
- Else 'Pour la suivante
- If TabTemp(L, Id) = T Then
- If TabTemp(L, 3) = 1 Then
- On Error Resume Next
- Col.Add TabTemp(L, 1), CStr(TabTemp(L, 1))
- On Error GoTo 0
- If Col.Count > Cbo.ListCount Then Cbo.AddItem TabTemp(L, 1)
- End If
- End If
- End If
- End If
- Next L
- End Sub
- Sub CommandButton1_Click()
- 'MsgBox "Modèle choisi = " & ComboBox2.Text
- ' Sheets("D1" ).Select
- 'Range("B49" ).Select
- ActiveCell.Value = ComboBox2.Text
- Unload userform1
- End Sub
|
Si quelqu'una une idée... Merci d'avance! |