RowSource automatisé

Val2202 -  
Polux31 Messages postés 7219 Statut Membre -
Bonsoir!

Comme j'ai pu l'expliquer dans un sujet précédent, je réalise un progiciel sous Excel. Nouveau petit problème sous VBA & Excel donc, voilà pourquoi je suis ici.

J'ai une base de données de plus de 5000 aéroports dans différents pays.
Dans un userform sous VBA, j'ai mis en place deux listes défillantes. L'une contiendra la liste des pays, l'autre, les aéroports du pays selectionnés.

Il faut donc programmé les RowSource des barres défilantes. Pour les pays pas de problème, mais pour les aéroports correspondants, c'est plus complexe.. Car cela change en fonction des pays.

J'ai mis en place un filtrage dans ma BD pour pouvoir afficher seulement les aéroports de tel ou tel pays, seulement le nombre d'aéroports varie et je ne peux donc pas programmer sous VBA une selection de telle ligne à telle ligne.

Il y aurait la solution de nommer une par une les plage de cellule pour chaque pays, mais avec le nombre de pays et d'aéroports, bonjour le boulot. Je cherche donc une solution plus rapide, vous l'aurez compris ;)

Merci d'avance,
Bonne soirée

1 réponse

Polux31 Messages postés 7219 Statut Membre 1 204
 
Bonjour,

Sur la feuille 1 du fichier :
Dans la colonne A = pays
Dans la colonne B = villes

Sur le formulaire :
Combo1 = Pays
Combo2 = Villes

Private Sub Combo1_Change()
Dim ws As Worksheet
Dim lig As Long

    Set ws = Worksheets(1)
    lig = 2
    Combo2.Clear
    
    With ws
        While .Range("A" & lig).Value <> ""
            If .Range("A" & lig).Value = Combo1.Text Then
                Combo2.AddItem .Range("B" & lig).Value
            End If
        lig = lig + 1
        Wend
    End With
    
    Set ws = Nothing
    
End Sub


;o)
0