Bonjour le forum,
Encore une fois je reste bloquée avec mes combobox et je ne trouve pas la solution. Je me tourne donc vers vos lumières pour comprendre ce qui ne marche pas avec mon code ...
Sur un formulaire (Userform2) j'ai 2 combobox : Combobox1 et Combobox2. Je charge ma première combobox avec les données d'une colonne (après élimination des doublons) et en fonction de mon choix, je filtre mes données et je dois choisir un autre critère dans ma seconde Combobox (après élimination des doublons). Là, tout fonctionne très bien.
Mon problème est que lorsque je lance le Userform 2 fois de suite, les valeurs de choix (fait précédemment) restent dans les combobox : si lors de ma 1ere saisie j'ai choisi B dans le combobox1 et B2 dans le combobox2, lors de ma 2ème saisie je vois affiché avant même y toucher B et B2.
J'ai essayé de caser un "userform2.combobox1.clear" mais ça ne fonctionne pas, j'obtient erreur d'execution 6 dépassement de capacité.
Voici un petit bout de mon code :
Encore une fois je reste bloquée avec mes combobox et je ne trouve pas la solution. Je me tourne donc vers vos lumières pour comprendre ce qui ne marche pas avec mon code ...
Sur un formulaire (Userform2) j'ai 2 combobox : Combobox1 et Combobox2. Je charge ma première combobox avec les données d'une colonne (après élimination des doublons) et en fonction de mon choix, je filtre mes données et je dois choisir un autre critère dans ma seconde Combobox (après élimination des doublons). Là, tout fonctionne très bien.
Mon problème est que lorsque je lance le Userform 2 fois de suite, les valeurs de choix (fait précédemment) restent dans les combobox : si lors de ma 1ere saisie j'ai choisi B dans le combobox1 et B2 dans le combobox2, lors de ma 2ème saisie je vois affiché avant même y toucher B et B2.
J'ai essayé de caser un "userform2.combobox1.clear" mais ça ne fonctionne pas, j'obtient erreur d'execution 6 dépassement de capacité.
Voici un petit bout de mon code :
Code:
Dim i As Byte, k As Byte
Dim Temp As String
Dim Fait As Boolean, Fait2 As Boolean
Dim Ligne As Integer, Derligne As Integer, Li As Integer
Dim Cel As Range
Sub UserForm_Initialize()
ComboBox1.Clear
Sheets("Donnees brutes").Activate
With Sheets("Donnees brutes")
Derligne = .UsedRange.Rows.Count
.Range("A2:A" & Derligne).EntireRow.Hidden = False
For j = 2 To Derligne
ComboBox1 = .Range("A" & j)
If ComboBox1.ListIndex = -1 And .Range("A" & j) <> "" Then ComboBox1.AddItem .Range("A" & j)
Next j
With ComboBox1
For i = 0 To .ListCount - 1
For k = 0 To .ListCount - 1
If .List(i) < .List(k) Then
Temp = .List(i)
.List(i) = .List(k)
.List(k) = Temp
End If
Next k
Next i
.ListIndex = -1
End With
End With
Fait = True
End Sub
Private Sub ComboBox1_Change()
Fait2 = False
If Fait = False Then Exit Sub 'pour éviter le passage lors de l'initialisation
With Sheets("Donnees brutes")
.Range("A2:A" & ActiveSheet.UsedRange.Rows.Count).EntireRow.Hidden = False
Set Mondico = CreateObject("Scripting.Dictionary")
For Each Cel In Range("C2:C" & Derligne)
If Cel.Offset(0, -2) Like ComboBox1.Value Then
If Not Mondico.Exists(Cel.Value) Then Mondico.Add Cel.Value, Cel.Value
End If
Next
ComboBox2.List = Mondico.items
With ComboBox2
For i = 0 To .ListCount - 1
For k = 0 To .ListCount - 1
If .List(i) < .List(k) Then
Temp = .List(i)
.List(i) = .List(k)
.List(k) = Temp
End If
Next k
Next i
.ListIndex = -1
End With
a = Mondico.RemoveAll
Application.ScreenUpdating = False
For Li = 2 To Derligne
If Cells(Li, 1).Value <> ComboBox1.Value Then Cells(Li, 1).EntireRow.Hidden = True
Next
Application.ScreenUpdating = True
End With
Fait2 = True
End Sub
Private Sub ComboBox2_Change()
Application.ScreenUpdating = False
If Fait2 = False Then Exit Sub
With Sheets("Donnees brutes")
.Range("A2:A" & ActiveSheet.UsedRange.Rows.Count).EntireRow.Hidden = False
For Li = 2 To Derligne
If Cells(Li, 1).Value <> ComboBox1.Value Then Cells(Li, 1).EntireRow.Hidden = True
If Cells(Li, 3).Value <> ComboBox2.Value Then Cells(Li, 1).EntireRow.Hidden = True
Next
Application.ScreenUpdating = True
Fait = True
Fait2 = True
End With
End Sub