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

  1. 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