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