Liste déroulante choix multiple [Résolu/Fermé]

Signaler
Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
-
Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
-
Bonjour,

Je voudrais avoir une cellule avec une liste de choix où l'on peut cocher plus d'un choix dans la liste déroulante.
J'ai regardé sur les forum, j'ai trouvé des exemples donnés pour un fichier en particulier, mais je n'arrive pas à l'adapter à mon fichier et il n'y a pas d'explication sur la façon de faire.
Par exemple, si mon classeur a une feuille appelée Entreprise et que dans la colonne A, j'entre le nom d'une entreprise, dans la colonne B, j'aimerais entrer les emplois disponibles dans cette entreprise. Il peut donc y en avoir plus d'un (secrétaire, concierge, etc.). J'ai une autre feuille qui s'appelle Liste qui contient une liste de métiers (cette liste est nommée "Métiers"). Alors comment je dois procéder? Est-ce seulement une VBA?

Merci beaucoup de votre aide (et ça aidera sûrement d'autres personnes qui cherchent)


7 réponses

Messages postés
688
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
8 juillet 2020
108
Bonjour,

Un peu compliqué pour t'expliquer de but en blanc,
Si tu copies que la macro, cela ne marchera pas, il faut copier la listBox1 aussi, l'as-tu fait?? .... si non....tu ouvres le fichier que j'ai mis à ta dispo au post 16, lorsqu'il est ouvert tu clic en haut dans le bandeau sur développeur, puis sur mode création et là va s'afficher la liste complète que tu pourras copier et coller sur ton fichier perso et pour la suite je te laisse découvrir. Au cas où je reste à ta dispo

Slts
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57892 internautes nous ont dit merci ce mois-ci

Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
10
Wow!, ça marche!!! tu fais ma journée... ma semaine... mon mois!!! Je vais inscrire comme résolu, mais une dernière question :

Si je le fais dans un nouveau fichier, je vais coller ton VBA, mais est-ce que je peux juste insérer un ListBox (j'ai vu comment) ou je dois aussi coller TA listBox, autrement dit, y a-t-il quelque chose de spécial dans ta listBox?

Merci encore, ça va m'être très utile... et pour d'autres aussi peut-être.

Slts
Messages postés
688
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
8 juillet 2020
108
Bonjour,

En fait ce n'est pas ma listbox mais celle que j'ai déjà pris sur le fichier de Boisgontier au post16, par contre cela ne t’empêche pas à toi de créer une listbox si tu en es capable. Ici en l'occurrence c'était du copier collé, pour faciliter les choses.

Slts
Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
10
Merci beaucoup!

Slts
Messages postés
25188
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
20 juillet 2020
5 375
Il ne devrait pas y avoir besoin de VBA

1° niveau,
par exemple en A2:A100 on commence en A2
validation par une liste comprenant les noms d'entreprises

2° niveau
dans chacune de vos feuilles, nommez la liste des métiers correspondant avec le nom de l'entreprise écrit exactement comme dans le menu déroulant 1° niveau

pour installer la liste de validations en B2:
Données/ Validation/ liste et la formule:
=INDIRECT(A2)

si besoin pour nommer:
sélectionnez le champ / Ruban / Onglet formule / définir un nom et inscrivez le nom dans le cadre en haut


crdlmnt
Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
10
Rebonjour,

Merci de votre toujours grande rapidité à répondre. Comme le dit votre phrase, je crois que je n'ai pas été claire dans ma question :) J'aimerais vous envoyer un exemple, mais je ne vois comment inclure un fichier (désolée!!).

Je n'ai pas plusieurs feuilles. Dans ma feuille 1 (entreprise), dans la colonne A, j'entre le nom d'une entreprises (ce nom ne vient pas d'une liste) et dans les colonnes suivantes j'entre des infos pour cette entreprise (ex. coordonnées, secteur, etc.). J'ai une colonne qui s'appelle "Emplois disponibles" et je voudrais y entrer plus d'un métiers (car pour une même entreprise il peut y avoir des emplois de secrétaire, concierge, conseiller, directeur, etc.) dans la même cellule. Cette liste de métiers est dans un onglet nommé liste et la liste se nomme "Métier"

J'ai vu sur un forum, on clique sur la cellule et une liste déroulante apparaît où on peut cocher plusieurs choix séparés par un trait ou une virgule.

Si vous préférez que je vous envoie un exemple, SVP, juste me dire comment joindre un fichier.

Merci beaucoup.
Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
10
Rebonjour Vaucluse,

Voici un exemple, ce n'est pas mon vrai fichier, question de confidentialité. Je veux la liste de choix multiple dans la colonne en jaune.

Je sens qu'il ne me manque pas grand chose avec ce que j'ai vu avec les forum, mais il me manque un détail (et c'est un peu frustrant!), alors si vous avez une VBA et le détail pour l'adapter...
Merci beaucoup, beaucoup!
Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
10
Oups, voici le lien :
https://www.cjoint.com/c/HBAuVLNWv1I
Messages postés
51982
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
23 juillet 2020
13 719
Bonjour Marlj

- 1) https://www.commentcamarche.net/faq/33905-listes-deroulantes-de-cellule-en-cascade
pour créer des listes déroulantes en cascade.
- 2) " je voudrais y entrer plus d'un métiers ... dans la même cellule " ; ça, c'est impossible ! Tu peux les entrer dans plusieurs cellules, et dans une nouvelle cellule faire une concaténation. Mais si tu as vu ça dans un forum, utilise donc ce que tu y as vu ; parce que moi, je ne connais rien de tel (sans VBA) ...
- 3) Pour envoyer un fichier, tu peux utiliser Cjoint.com
 1) Tu vas dans https://www.cjoint.com/ 
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
5) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".
=>Voir la fiche https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers
Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
10
Bonjour,

Merci pour votre réponse et merci pour le lien cjoint.com, je l'utiliserai.

Pour ce qui est de ma liste déroulante, merci pour la liste déroulante en cascade, mais ce n'est pas de cela que j'ai besoin.
Pour l'entrée de plusieurs choix dans une même cellule, ce n'est pas "impossible". Ça se fait avec une VBA (je n'ai pas dit que je ne voulais pas de VBA, je pense qu'il y a une action de plus qui accompagne la VBA). Je vous met un lien pour vous montrer où je l'ai vu https://www.excel-downloads.com/threads/liste-selection-multiple.83182/ (voir le fichier de réponse de Sergio) Ce que je n'arrive pas à faire c'est de le transposer à mon fichier, juste le copier-coller du VBA, ça ne marche pas, il me manque une info dans la marche à suivre... de là ma demande sur ce forum.
Merci.
Messages postés
9522
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
23 juillet 2020
1 869
Bonjour à tous

Un exemple du à eric
https://www.cjoint.com/c/HBAul5docOB

Cdlmnt
Messages postés
688
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
8 juillet 2020
108
Bonsoir,

Aucun exemple joint dans le post 6

Oups"désolé je n'ai pas vu le post 7 j'ai oublié d'actualiser"

Slts
Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
10
Oui, petit oubli :), voir post 7. Merci.
Messages postés
688
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
8 juillet 2020
108
Re

Un exemple, d'une liste déroulante à choix multiple, dans la colonne D tu peux faire un choix d'autant d'emploi que tu désires, ne pas oublier d'activer les macros pour que cela fonctionne

https://www.cjoint.com/c/HBAvZAfN7uj

Slts
Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
10
Bonjour,

Merci, mais malheureusement, je ne peux ouvrir votre fichier, ça me dit comme message : "Impossible d'ouvrir le fichier car son format ou son extension n'est pas valide". :(
Messages postés
688
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
8 juillet 2020
108
Bonjour,

Un autre essai....., en tout cas chez moi il fonctionne
https://mon-partage.fr/f/VOhTbudr/

Slts
Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
10
SUPER, j'ai transposé dans mon fichier et ça fonctionne! Merci beaucoup.
J'ai une petite question supplémentaire (puis-je abuser de vos savoirs? :)), juste pour aller plus loin.

Dans votre exemple, je choisi un métier et je dois retourner dans la liste de choix pour faire un autre choix. Dans un exemple que j'ai vu, il y avait des cases à cocher et quand la liste apparaissait, on pouvait cocher plusieurs choix. Est-ce quelque chose à ajouter dans la VBA.

Merci beaucoup -à tous- de vos lumières
Cdlmnt
Messages postés
51982
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
23 juillet 2020
13 719
Le fichier contient des macros ;
le document joint a donc le suffixe xlsm ; mais, lorsque tu vas cliquer sur le lien,
c'est un fichier en xlsx qui est proposé !
Si tu fais directement [Ouvrir] tu obtiendras le message de refus cité plus haut ...
... il faut donc faire [Enregistrer] ;
ensuite cliquer sur [Ouvrir le dossier]
et enfin, modifier le nom du fichier ainsi téléchargé
en remplaçant le dernier caractère x par m ...
Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
10
Ah Merci! Ça fonctionne.

Bonne journée.
Messages postés
688
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
8 juillet 2020
108
Re

Un autre exemple que j'ai adapté sur ton fichier mais que j'ai puisé chez Boisgontier Jacques

https://mon-partage.fr/f/M69CBsQG/


Exemple de Boisgontier Jacques

http://boisgontierjacques.free.fr/fichiers/DonneesValidation/DVChoixMultListBoxOption.xls

Slts
Messages postés
58
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
12 mars 2020
10
Rebonjour The_boss_68. Merci de votre grande patience avec moi :)

Votre exemple avec mon fichier, c'est exactement ce que je veux. Mais je veux pouvoir le transposer dans d'autres fichier dans le futur. Dans votre exemple précédent, j'ai copié-collé votre VBA, j'ai modifier les plages et ça marché.

Dans le présent exemple, si je fais la même chose, ça ne marche pas. Mais, j'ai trouvé où je bloque (j'avance!), c'est au niveau de la ListBox.

Donc, si je copie-colle votre VBA et que je fais les modifs pour mon nouveau fichier (plage de la ligne 2 et de la ligne 4), ca ne marche pas. Dois-je modifier autre chose? Ou faire quelque chose par rapport à la ListBox? Encore merci de votre super patience avec moi!

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([D2:D23], Target) Is Nothing And Target.Count = 1 Then
Me.ListBox1.MultiSelect = fmMultiSelectMulti
Me.ListBox1.List = Sheets("Liste").Range("A2:A34").Value
a = Split(Target, " ")
If UBound(a) >= 0 Then
For i = 0 To Me.ListBox1.ListCount - 1
If Not IsError(Application.Match(Me.ListBox1.List(i), a, 0)) Then Me.ListBox1.Selected(i) = True
Next i
End If
Me.ListBox1.Height = 430
Me.ListBox1.Width = 120
Me.ListBox1.Top = Target.Top
Me.ListBox1.Left = Target.Left + Target.Width
Me.ListBox1.Visible = True
Else
Me.ListBox1.Visible = False
End If
End Sub
Private Sub ListBox1_Change()
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then temp = temp & Me.ListBox1.List(i) & " , "
Next i
ActiveCell = Trim(temp)
End Sub