Une zone de liste déroulante (ou ComboBox) permet à l’utilisateur de sélectionner une valeur prédéfinie dans une liste. Voici un guide étape par étape pour créer une telle zone de liste déroulante à l’aide de VBA dans Excel.
Pour travailler avec VBA, l’onglet Développeur doit être activé dans Excel.
Pour remplir la liste déroulante, insérez du code VBA dans l’éditeur VBA. Voici un exemple simple pour remplir une ComboBox :
Private Sub Workbook_Open()
With Sheets("Feuil1").ComboBox1
.Clear ' Efface les anciennes entrées
.AddItem "Option 1"
.AddItem "Option 2"
.AddItem "Option 3"
.AddItem "Option 4"
End With
End Sub
.AddItem "Option X"
ajoutent les éléments à la liste déroulante.Si les éléments à afficher se trouvent dans une plage de cellules (par exemple A1:A10
), utilisez le code suivant :
Private Sub Workbook_Open()
Dim i As Range
With Sheets("Feuil1").ComboBox1
.Clear
For Each i In Sheets("Feuil1").Range("A1:A10")
.AddItem i.Value
Next i
End With
End Sub
Pour exécuter une action lorsque l’utilisateur sélectionne une valeur dans la ComboBox, utilisez l’événement Change
:
Private Sub ComboBox1_Change()
MsgBox "Vous avez sélectionné : " & ComboBox1.Value
End Sub
Pour appliquer automatiquement le code VBA dès l’ouverture du fichier Excel ou à un événement précis (comme sélectionner une cellule, ou activer une feuille), suivez les étapes ci-dessous.
Si vous voulez que la zone de liste déroulante soit remplie ou configurée automatiquement dès l’ouverture du fichier, utilisez l’événement Workbook_Open
.
Private Sub Workbook_Open()
With Sheets("Feuil1").ComboBox1
.Clear
.AddItem "Option 1"
.AddItem "Option 2"
.AddItem "Option 3"
.AddItem "Option 4"
End With
End Sub
Si vous souhaitez que le code VBA s’exécute automatiquement dès qu’une feuille spécifique est activée, utilisez l’événement Worksheet_Activate
.
Private Sub Worksheet_Activate()
With Me.ComboBox1
.Clear
.AddItem "Option 1"
.AddItem "Option 2"
.AddItem "Option 3"
.AddItem "Option 4"
End With
End Sub
Me
fait référence à la feuille sur laquelle le code est placé.Pour exécuter automatiquement le VBA lorsque l’utilisateur sélectionne une cellule spécifique, utilisez Worksheet_SelectionChange
.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
With Me.ComboBox1
.Clear
.AddItem "Option 1"
.AddItem "Option 2"
.AddItem "Option 3"
End With
End If
End Sub
A1
est sélectionnée.Pour que les macros fonctionnent :
Lors de l’ouverture du fichier, Excel vous demandera d’autoriser les macros :
Événement | Déclenchement | Où placer le code |
---|---|---|
Workbook_Open | À l’ouverture du fichier | ThisWorkbook |
Worksheet_Activate | À l’activation d’une feuille | Feuille VBA concernée |
Worksheet_SelectionChange | À la sélection d’une cellule | Feuille VBA concernée |
Avec ces options, vous pouvez automatiser votre VBA pour remplir la zone de liste déroulante selon vos besoins.
Pour lier une ComboBox à plusieurs feuilles, vous pouvez utiliser du code VBA permettant d’accéder aux différentes feuilles, lire des données dans des plages spécifiques et les remplir dans une ComboBox.
Voici plusieurs méthodes pour gérer une ComboBox (zone de liste déroulante) liée à plusieurs feuilles dans Excel.
Private Sub Workbook_Open()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim i As Range, j As Range
' Définir les feuilles
Set ws1 = ThisWorkbook.Sheets("Feuil1")
Set ws2 = ThisWorkbook.Sheets("Feuil2")
' Effacer les éléments existants de la ComboBox
With ws1.ComboBox1
.Clear
' Remplir depuis Feuil1 (plage A1:A10)
For Each i In ws1.Range("A1:A10")
.AddItem i.Value
Next i
' Remplir depuis Feuil2 (plage B1:B5)
For Each j In ws2.Range("B1:B5")
.AddItem j.Value
Next j
End With
End Sub
Set ws1
et Set ws2
permettent de sélectionner les feuilles à utiliser.For Each
parcourt les cellules d’une plage définie (ex. : A1:A10
dans Feuil1)..AddItem
..Clear
supprime les anciennes entrées de la ComboBox avant d’en ajouter de nouvelles.Si vous voulez que le code ajoute automatiquement des données de toutes les feuilles dans le classeur, utilisez cette version :
Private Sub Workbook_Open()
Dim ws As Worksheet
Dim cell As Range
' Effacer les éléments existants
With ThisWorkbook.Sheets("Feuil1").ComboBox1
.Clear
' Parcourir toutes les feuilles
For Each ws In ThisWorkbook.Sheets
' Parcourir les cellules dans une plage spécifique (par exemple A1:A10)
For Each cell In ws.Range("A1:A10")
If Not IsEmpty(cell.Value) Then
.AddItem cell.Value
End If
Next cell
Next ws
End With
End Sub
For Each ws In ThisWorkbook.Sheets
parcourt chaque feuille du classeur.If Not IsEmpty(cell.Value)
).A1:A10
) dans toutes les feuilles.Si vous voulez que la ComboBox se mette à jour à chaque activation d’une feuille ou modification, utilisez Worksheet_Activate
:
Private Sub Worksheet_Activate()
Dim ws As Worksheet
Dim cell As Range
' Effacer les anciennes entrées
With Me.ComboBox1
.Clear
' Ajouter des données depuis toutes les feuilles
For Each ws In ThisWorkbook.Sheets
For Each cell In ws.Range("A1:A10")
If Not IsEmpty(cell.Value) Then
.AddItem ws.Name & " - " & cell.Value ' Ajouter le nom de la feuille
End If
Next cell
Next ws
End With
End Sub
ws.Name & " - " & cell.Value
, vous pouvez voir dans la ComboBox d’où provient chaque donnée.Méthode | Avantage |
---|---|
Feuilles fixes (Feuil1, Feuil2) | Personnalisation précise des feuilles ciblées |
Toutes les feuilles dynamiquement | Automatisation complète pour tout le classeur |
Mise à jour à l’activation | Synchronisation en temps réel |
Les termes de référence (TDR) constituent un outil fondamental pour la gestion des projets et…
Les termes de référence (TDR) sont un document essentiel qui décrit les objectifs, le cadre,…
Ce guide est conçu pour vous aider à comprendre et à appliquer les bases visuelles…
Le tableau de suivi des actions correctives et préventives (CAPA - Corrective and Preventive Actions)…
Un inventaire est un document essentiel pour toute location saisonnière meublée. Il sert à lister…
Un tableau Excel de gestion des stocks est un outil essentiel pour suivre les entrées,…
This website uses cookies.