ListeModifiable

Retour vers Excel

Les listes déroulantes

Exposé : Réaliser une liste déroulante, à partir d'une liste incluse dans le fichier (elle peut se trouver dans une autre feuille, c'est même préférable...surtout si elle est masquée,cela empêchera l’altération des valeurs) et déterminer le comportement lors des changements de valeur de la liste déroulante....On crée donc une mise en page comme suit :

Il nous faut maintenant éditer les propriétés de cette liste déroulante, par un clic droit. Une nouvelle fenêtre apparaît contenant tous les paramètres modifiables de cette liste déroulante (ComboBox, en langage informatique)

La propriété qui va particulièrement nous intéresser est ListFillRange où nous allons inscrire les références de la plage de données qui constituera les items de notre liste déroulante, si on avait placé cette liste sur la deuxième feuille, nous aurions des références
de type Feuil2!F3:F5. Ici pour des raisons de clarté, j'ai tout placé sur la même feuille

Voici ce que cela donne :
On peut aussi la remplir avec VBA

Private Sub ComboBox2_DropButtonClick()
    ComboBox2.Clear
    Plage = ActiveSheet.UsedRange.Columns(6)
    For Each cell In Plage
        ComboBox2.AddItem cell
    Next
End Sub

Il faut maintenant déterminer ce que les changements de valeur dans la liste déroulante provoqueront. On passe dans le VBE (Visual Basic Editor) par un clic droit sur la ComboBox en mode construction et l'on clique sur "Visualiser le code". On détermine le comportement en programmant. Ce qui donne ceci :

Private Sub ComboBox1_Change()
If ComboBox1.Value = "Pommes" Then
    Range("A1").Value = "Hello World!"
Else
    Range("A1").Value = "Fini de rire"
End If
End Sub

Et voilà, c'est terminé...Faisons quelques essais pour vérifier si tout se passe bien


On peut aussi travailler avec une liste dont on ne connait pas la longueur.Nous la nommerons "Plage". Pour cela, nous devrons remplir dynamiquement les items de la ComboBox au moment où nous enfoncerons la flèche déroulante et déterminer ensuite ce que l'on souhaite faire avec le contenu ainsi récupéré. Ici nous allons recopier cette saisie dans la cellule A2. Nous prenons soin de recopier l'ancien contenu de la cellule dans une variable appelée Temp car si nous annulons notre action, nous pourrions perdre cette donnée

Private Sub ComboBox2_Change()
    temp = [A2]
'Pour conserver le contenu de la cell A2 si l'on
'décide de ne pas opérer de changement sinon
'le contenu de A2 est perdu irrémédiablement
    If ComboBox2 = "" Then
        [A2] = temp
        Exit Sub
    Else
'ici on place la nouvelle valeur dans A2
        [A2] = ComboBox2.Value
    End If
End Sub

Troisième cas : Nous allons saisir des liens hypertextes et ainsi provoquer l'ouverture du navigateur internet et afficher les pages web

Private Sub ComboBox3_Change()
    ActiveWorkbook.FollowHyperlink Address:=ComboBox3.Text, NewWindow:=True
End Sub

Quatrième cas : On peut aussi se déplacer dans le fichier

Private Sub ComboBox4_Change()
If ComboBox4.Text = "Aller sur 2" Then
    Sheets("Feuil2").Select
ElseIf ComboBox4.Text = "Aller sur 3" Then
    Sheets("Feuil3").Select
End If
End Sub

Télécharger le fichier exemple ListeDeroulante

FIN