Liste déroulante à choix multiple Excel 2007
Résolu/Fermé
studio103
Messages postés
51
Date d'inscription
samedi 2 août 2008
Statut
Membre
Dernière intervention
6 décembre 2010
-
27 oct. 2010 à 13:30
fval - 2 juin 2016 à 20:14
fval - 2 juin 2016 à 20:14
A voir également:
- Excel - vba liste déroulante à choix multiples
- Liste déroulante excel - Guide
- Excel liste déroulante en cascade - Guide
- Supprimer liste déroulante excel ✓ - Forum Excel
- Supprimer liste déroulante Excel ✓ - Forum Excel
- Effacer le contenue d'une cellule avec liste déroulante - Forum Excel
19 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
28 oct. 2010 à 15:09
28 oct. 2010 à 15:09
Et bien allons y.
I/ Création
1- Tu ouvres ton classeur,
2- Tapes ALT+F11 (ou Outils/Macros/Visual Basic Editor)
3- Insertion/UserForm
4- Adaptes en la forme à la taille désirée,
5- Sur la gauche de ton écran tu dois avoir une fenêtre "propriétés". Si ça n'est pas le cas, appuies sur F4. Dans cette fenêtre cherche la propriété "caption". Dans la cellule à côté change le UserForm1 par le titre que tu souhaites (ex : Ma Liste Multiple). !!! ATTENTION : ne change pas la propriété Name !!!!!
6- Clic sur ton UserForm. Normalement, une boîte à outils apparait. Non? et bien : Affichage/Boîte à Outils
7- Dans cette boîte à outils cherche (et trouve) le contrôle : "zone de liste". Clic dessus et va dessiner ta zone de liste dans ton UserForm
8- Toujours dans la boîte à outils cherche (et trouve) le contrôle : "Bouton de commande". Clic dessus et va dessiner ton boutondans ton UserForm.
9- Simple clic sur le bouton (dans le UserForm) et va changer la propriété (fenêtre propriétés... Mais si à gauche de l'écran, F4, tout ça...) "caption" remplacer CommandButton1 (ex : VALIDER). !!! ATTENTION : ne change pas la propriété Name !!!!! ;-) Tu t'y attendais? Non? Ah bon...
10- Tu peux également changer l'apparence de ton bouton en changeant les propriétés : BackColor, Font, ForeColor. Idem pour l'UserForm (simple clic dessus et hop hophop, tu as accès à ses propriétés)
II/ Les Codes VBA
Là ça devient sérieux, on arrête de bricoler!!
1- Double clic sur le bouton de commande dans ton UserForm. Une nouvelle fenêtre apparait avec dedans :
2- Supprime ces deux lignes et à la place, copie / colle tout ce code :
3- Les 9 dans les parties en gras dans le code ci dessus sont à adapter selon l'endroit ou tu as mis tes données de remplissage de ta liste. 9 = 9ème Colonne (Colonne I)
3 bis- Dans la ligne : Derlig = Sheets("Feuil1").Cells(65536, 9).End(xlUp).Row, "Feuil1" est le nom de la feuille ou se trouve la liste des données. A remplacer par le nom de votre feuille (entouré de "")
3 ter- "C4" dans : .Range("C4") = Left(ValeurARetourner, Len(ValeurARetourner) - 3) est la cellule dans laquelle vous voulez envoyer vos choix
.Range("C5").Activate à adapter également
With Sheets("Feuil1") Feuil1 à remplacer aussi...
4- Ferme Visual Basic Editor (fichier / fermer et retourner sous excel ou ALT+Q)
5- Clic droit sur l'onglet de la feuille concernée par le UserForm (feuille ou tu souhaites voir apparaitre le résultat) / Visualiser le code
Nouvelle fenêtre visual basic. Copie / colle y ce code :
Ici "$C$4" est la cellule dans laquelle tu va à l'avenir double cliquer pour lancer le UserForm. A adpater donc...
6- Ferme à nouveau Visual Basic (Alt+Q) et teste en double cliquant sur C4 (ou ce que tu aurs bien voulu choisir).
J'ai fait de mon mieux pour que ces explications soient le plus claires possibles. En cas d'erreur, n'hésite pas à revenir ici.
I/ Création
1- Tu ouvres ton classeur,
2- Tapes ALT+F11 (ou Outils/Macros/Visual Basic Editor)
3- Insertion/UserForm
4- Adaptes en la forme à la taille désirée,
5- Sur la gauche de ton écran tu dois avoir une fenêtre "propriétés". Si ça n'est pas le cas, appuies sur F4. Dans cette fenêtre cherche la propriété "caption". Dans la cellule à côté change le UserForm1 par le titre que tu souhaites (ex : Ma Liste Multiple). !!! ATTENTION : ne change pas la propriété Name !!!!!
6- Clic sur ton UserForm. Normalement, une boîte à outils apparait. Non? et bien : Affichage/Boîte à Outils
7- Dans cette boîte à outils cherche (et trouve) le contrôle : "zone de liste". Clic dessus et va dessiner ta zone de liste dans ton UserForm
8- Toujours dans la boîte à outils cherche (et trouve) le contrôle : "Bouton de commande". Clic dessus et va dessiner ton boutondans ton UserForm.
9- Simple clic sur le bouton (dans le UserForm) et va changer la propriété (fenêtre propriétés... Mais si à gauche de l'écran, F4, tout ça...) "caption" remplacer CommandButton1 (ex : VALIDER). !!! ATTENTION : ne change pas la propriété Name !!!!! ;-) Tu t'y attendais? Non? Ah bon...
10- Tu peux également changer l'apparence de ton bouton en changeant les propriétés : BackColor, Font, ForeColor. Idem pour l'UserForm (simple clic dessus et hop hophop, tu as accès à ses propriétés)
II/ Les Codes VBA
Là ça devient sérieux, on arrête de bricoler!!
1- Double clic sur le bouton de commande dans ton UserForm. Une nouvelle fenêtre apparait avec dedans :
Private Sub CommandButton1_Click() End Sub
2- Supprime ces deux lignes et à la place, copie / colle tout ce code :
Option Explicit Private Sub CommandButton1_Click() Dim i As Byte Dim ValeurARetourner As String For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) = True Then ValeurARetourner = ValeurARetourner & ListBox1.List(i) & " & " End If Next i With Sheets("Feuil1") .Range("C4") = Left(ValeurARetourner, Len(ValeurARetourner) - 3) .Range("C5").Activate End With UserForm1.Hide Unload UserForm1 End Sub Private Sub UserForm_Initialize() Dim i As Integer, Derlig As Integer ListBox1.Clear Derlig = Sheets("Feuil1").Cells(65536, 9).End(xlUp).Row For i = 1 To Derlig ListBox1.AddItem Cells(i, 9).Value Next i For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) = True Then ListBox1.Selected(i) = False End If Next i End Sub
3- Les 9 dans les parties en gras dans le code ci dessus sont à adapter selon l'endroit ou tu as mis tes données de remplissage de ta liste. 9 = 9ème Colonne (Colonne I)
3 bis- Dans la ligne : Derlig = Sheets("Feuil1").Cells(65536, 9).End(xlUp).Row, "Feuil1" est le nom de la feuille ou se trouve la liste des données. A remplacer par le nom de votre feuille (entouré de "")
3 ter- "C4" dans : .Range("C4") = Left(ValeurARetourner, Len(ValeurARetourner) - 3) est la cellule dans laquelle vous voulez envoyer vos choix
.Range("C5").Activate à adapter également
With Sheets("Feuil1") Feuil1 à remplacer aussi...
4- Ferme Visual Basic Editor (fichier / fermer et retourner sous excel ou ALT+Q)
5- Clic droit sur l'onglet de la feuille concernée par le UserForm (feuille ou tu souhaites voir apparaitre le résultat) / Visualiser le code
Nouvelle fenêtre visual basic. Copie / colle y ce code :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$C$4" Then Target.Value = "" Load UserForm1 UserForm1.Show End If End Sub
Ici "$C$4" est la cellule dans laquelle tu va à l'avenir double cliquer pour lancer le UserForm. A adpater donc...
6- Ferme à nouveau Visual Basic (Alt+Q) et teste en double cliquant sur C4 (ou ce que tu aurs bien voulu choisir).
J'ai fait de mon mieux pour que ces explications soient le plus claires possibles. En cas d'erreur, n'hésite pas à revenir ici.
13 févr. 2013 à 12:06
Je sais que j'arrive avec de nombreux mois de retard, mais si jamais quelqu'un peut m'aider... ?
Voilà mon problème :
J'apprends à créer des listes à choix multiples grace à votre tuto et merci pour tout.
Lorsque je crée le bouton de commande, il n'apparait pas (transparent) et lorsque j'ai terminé, même si ma liste a bien été créée, il n'y a pas le bouton de validation lorsque on a sélectionné.
Pouvez-vous m'aider ?
Merci d'avance
28 mai 2014 à 14:05
j'ai suivi tes instructions et j'arrive à avoir une fenêtre qui propose plusieurs en double clicant sur une cellule (ici C16)
J'aimerais savoir comment modifier le code ci dessous pour que je puisse avoir la même liste de choix en C17, C18 etc.. et cela sans limite (idéalement pour toute la colonne).
Voici le code actuellement utilisé pour l'UF :
Private Sub CommandButton1_Click()
Dim i As Byte
Dim ValeurARetourner As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ValeurARetourner = ValeurARetourner & ListBox1.List(i) & " & "
End If
Next i
With Sheets("Demande")
.Range("C16") = Left(ValeurARetourner, Len(ValeurARetourner) - 3)
.Range("C16").Activate
End With
UserForm1.Hide
Unload UserForm1
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer, Derlig As Integer
ListBox1.Clear
With Sheets("Infos")
Derlig = .Cells(65536, 2).End(xlUp).Row
For i = 1 To Derlig
ListBox1.AddItem .Cells(i, 2).Value
Next i
End With
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ListBox1.Selected(i) = False
End If
Next i
End Sub