Bonjour à tous,
Je suis débutant en VBA. J'ai fait beaucoup d'essais et erreurs pour arriver où j'en suis avec ce petit projet... J'ai 2 combobox en cascade : le premier avec les pays qui sont dans la colonne A et les villes se retrouvant dans le 2e combobox sont dans les colonnes B et les subséquentes. Les combobox sont sur une feuille différente que celle où les données se trouvent. Chaque pays ne contient pas exactement le même nombre de villes. J'ai joint un fichier pour rendre la chose plus claire. Éventuellement, j'aimerais ajouter beaucoup plus de pays (au moins une centaine).
À date, j'ai réussi à peupler le 2e combobox grâce à la sélection du 1er (les villes associées à un pays), par contre il y a des vides :
Private Sub ComboBox1_Change()
Me.ComboBox2.Clear
Dim rngVilles As Range
Set rngVilles = ThisWorkbook.Sheets("PaysVille").Range("B3:G5").Offset(Me.ComboBox1.ListIndex - 1)
ComboBox2.List = _
WorksheetFunction.Transpose(rngVilles)
ComboBox2.ListIndex = 0
End Sub
Pour tenter de résoudre le problème, j'ai réussi à trouver le code ici-bas qui enlève les vides (j'attends qu'il soit au point pour le mettre dans ComboBox1_Change()), mais je ne réussis pas à faire en sorte qu'il ne donne que les valeurs (villes) du pays sélectionné dans le 1er combobox. Il va chercher toutes les villes de tous les pays dans la plage... Je ne m'y prends certainement pas de la bonne façon et ne suis qu'à mes premiers balbutiements de codage VBA, donc je sollicite votre aide.
Private Sub AjouterValeursNonVidesSelonSelectionDu1erAu2eCombo()
Me.ComboBox2.Clear
With Worksheets("PaysVille")
For Each r In ThisWorkbook.Sheets("PaysVille").Range("B3:G5").Offset(Me.ComboBox1.ListIndex - 1)
If r.Value <> "" Then ComboBox2.AddItem r.Value
Next r
End With
End Sub
Merci,