Crennosaure
XLDnaute Nouveau
Bonjour à tous,
Totalement débutant en VBA je suis avec attention le forum et jusqu'à présent je m'en sors, mais je bloque.
Voici mon problème:
J'utilise un UserForm avec plusieurs ComboBox:
- ComboBox1 est une liste de pays
- ComboBox2 est une liste de détaillants (chaque détaillant est caractérisé par son pays)
Du fait du grand nombre de détaillants, j'effectue un tri en sélectionnant d'abord le pays, et la ComboBox2 se remplie avec les détaillants qui sont dans le pays choisi. En bidouillant, ça marche mais lorsqu'il n'existe qu'un seul détaillant pour le pays sélectionné, j'ai un message d'erreur sur la ligne qui est censée remplir la ComboBox2.
Voici mon code expliqué pour me bien faire comprendre, ma façon de faire n'est peut être pas la bonne ...
Merci à tous pour votre aide.
Manu
Totalement débutant en VBA je suis avec attention le forum et jusqu'à présent je m'en sors, mais je bloque.
Voici mon problème:
J'utilise un UserForm avec plusieurs ComboBox:
- ComboBox1 est une liste de pays
- ComboBox2 est une liste de détaillants (chaque détaillant est caractérisé par son pays)
Du fait du grand nombre de détaillants, j'effectue un tri en sélectionnant d'abord le pays, et la ComboBox2 se remplie avec les détaillants qui sont dans le pays choisi. En bidouillant, ça marche mais lorsqu'il n'existe qu'un seul détaillant pour le pays sélectionné, j'ai un message d'erreur sur la ligne qui est censée remplir la ComboBox2.
Voici mon code expliqué pour me bien faire comprendre, ma façon de faire n'est peut être pas la bonne ...
Code:
Private Sub CommandButton10_Click()
Dim Filtre As String
Dim Destination As Range
' Le nom du pays est rentré sous la variable Filtre
Filtre = ComboBox1.Value
' Vide les colonnes où les données vont se copier
Sheets("database").Range("B2:B65536") = ""
Sheets("database").Range("C2:C65536") = ""
' Pour obliger l'utilisateur à sélectionner un pays avant
If ComboBox1 = "" Then
MsgBox ("Rentrez un pays avant de valider!")
Else
' Filtre avec le pays
Sheets("Détaillant").Range("$A$1:$A$3427").AutoFilter Field:=2, Criteria1:=Filtre
End If
'Définis la plage où sera copiée les données
Set Destination = Sheets("database").Range("B2")
Dim MaPlage As Range
'Représente les données filtrées et les titres
Set MaPlage = Sheets("Détaillant").AutoFilter.Range
'Représente seulement les données
Set MaPlage = MaPlage.Offset(1, 0).Resize(MaPlage.Rows.Count - 1, MaPlage.Rows.Count)
'Copie les données à l'endroit qui alimente la combobox
MaPlage.Copy Destination
ComboBox2.Value = ""
Sheets("database").Select
''Remplissage de la combobox problématique si il n'y a qu'une seule ligne, c'est à dire, que dans B2
ComboBox2.List = Range("B2:B" & Cells(Application.Rows.Count, 2).End(xlUp).Row).Value
'Sauvegarde pour prendre en compte le remplissage
ActiveWorkbook.Save
End Sub
Merci à tous pour votre aide.
Manu
Dernière édition: