Liste déroulante sur une cellule - choix multiples

Bonjour la communauté ! 👀

Je suis en alternance dans une entreprise et je concocte en ce moment un suivi client sur excel.

Cependant j'ai un petit soucis que je ne parviens pas à résoudre malgré mes recherches sur internet (et mes difficultés à maitriser VBA ...)

Je souhaiterai obtenir des listes déroulantes à choix multiples (cases à cocher). J'ai vu que c'était possible mais je ne maîtrise pas du tout.

Et je souhaiterai que les informations sélectionnées apparaissent dans la même cellule séparée d'une virgule.

J'ai cherché toute la matinée mais sans succès...

Auriez-vous un peu de temps pour m'aider ?

Le fichier est trop volumineux pour le joindre malheureusement ...

Merci d'avance ! 🙌🏼

Organdi!

Bonjour Organdi, et bienvenue sur le Forum,

Avant de commencer à t'aider ce serait bien de savoir si tu souhaite utiliser la VBA ?

Par exemple un "Private Sub Worsheet" ou un "UserForm" avec "ListBox " pourrait solutionner ton problème !

Bonjour Juice,

Merci pour ta réponse!

Je ne sais ce que sont les choses que tu as évoqué haha. Ça ne m'est pas encore familier ..

Si je pouvais éviter d'utiliser la VBA je le ferai. Mais il me semble que je ne peux pas faire autrement.

Peux-tu m'en dire plus sur les exemples cités ?

Organdi,

Un exemple est plus parlant que des explications :p Surtout en VBA xD

Tu trouvera donc ci-joint une ListBox qui te permet un choix multiple puis d'insérer tout ces choix dans une cellule !

Mais si tu a des questions sur le code n'hésite surtout pas !

Édit: Macro mis à jour pour sa soit plus propre :p

302pour-organdi.xlsm (24.64 Ko)

Juice;

Quelle est la manoeuvre à suivre ?

En cliquant sur le bouton, une "UserForm1" s'ouvre et est vide. Je ne peux rien faire.

J'ai eu l'idée de créer une liste déroulante traditionnelle puis cliquer sur le bouton mais ça ne devait franchement pas être ça ^^

Merci encore pour ton investissement!

Ce que je ne t'ai pas précisé Juice c'est que je souhaiterai que cette manip de liste déroulante à contenu variable soit réutilisée pour 500 lignes ...

(et je suis sur mac ... je n'ai pas d'autre solution)

Organdi,

je suis sur mac ... je n'ai pas d'autre solution

Ah, est-ce que c'est à cause de sa que tu n'a pas de contenu dans la ListBox ?

Est-ce que tu a bien activé le contenu du classeur à l'ouverture ?

je souhaiterai que cette manip de liste déroulante à contenu variable soit réutilisée pour 500 lignes ...

Sa ce n'est pas un problème

Il nous suffira de déclarer une variable (Dim DernLigne As Long) et de dire combien de ligne tu a dans ton tableau à l'ouverture de l'UserForm pour que ta ListBox ce mette à jour automatiquement !

Mais commençons d'abord par voir pour afficher des résultats dans cette ListBox, après nous la peaufinerons ^^

J'ai en effet bien activé les macros à l'ouverture du doc. Je ne vois pas ce qui bloque sinon le fait que je sois sur mac.

Je dois juste cliquer sur le bouton ? Peut-être est il nécessaire de sélectionner une plage ou cellule particulière ?

Si les 500 lignes de sont pas un problème, tant mieux 💪🏼

Organdi,

Peux tu regarder que la ListBox a bien des données insérer dans ta version du fichier ?

Pour cela tu :

1 - Va dans l'onglet développeur

2 - Clic sur l'icône tout a gauche "Visual Basic"

3 - Double clic "UserForm1" à gauche de la fenêtre qui viens de s'ouvrir

4 - Clic sur la ListBox (Fenêtre blanche dans ton UserForm1)

5 - Une fenêtre de propriété viens de s'ouvrir en bas à gauche de ton écran, peux tu vérifier à la ligne "RowSource" qu'il y a bien indiqué la plage de donnée C6:C15 ?

Est-ce que sa fonctionne avec ce second fichier :0 ?

87pour-organdi.xlsm (25.30 Ko)

Juice,

En effet, j'ai bien la plage C6:C15

' Source : http://dj.joss.free.fr/usf9.htm
Private Sub UserForm_Initialize()
Range("E6").Select
Selection.ClearContents
ListBox1.RowSource = "Feuil1!C6:C15"
End Sub
Private Sub CommandButton1_Click()
Dim I As Integer, y As Integer
With Me.ListBox1
For I = 0 To .ListCount - 1
If .Selected(I) = True Then
y = y + 1
[E6] = [E6] & ", " & .List(I)
End If
Next I
End With
Call Remise_en_forme
Unload Me
End Sub

Seulement quand je clique sur le bouton j'obtiens une erreur : pj

capture d ecran 2018 07 24 a 11 27 58

Si la propriété "RowSource" provoque une erreur d'exécution c'est que la référence à la plage n'est pas la même :

ListBox1.RowSource = "Feuil1!C6:C15"

Sur cette ligne, la où il y a marquer "Feuil1" change par le nom de ta propre feuille.

pour organdie

J'ai changer le nom de ma feuille. Capture 1

Puis j'ai changé le nom dans VBA. Capture 2

Mais en cliquant il me demande toujours de résoudre le bug. Et j'arrive sur cette page VBA. Capture 3

capture 1 capture 2 capture 3

Organdi,

Après recherche sur des Forums Américain, je te confirme que les MAC ne prennent pas en charge les mêmes propriétés de VBA que les autres PC (hors MAC) :

page traduite :

pour organdie

Je ne peux pas utiliser moi même l'exemple que tu trouveras dans la capture ci-dessus.

Je t'invite donc à copier ce code :

Private Sub UserForm_Initialize()
Dim oneCell As Range
For Each oneCell In Range("C6:C15")
    ListBox1.AddItem oneCell.Value
Next oneCell
End Sub

Et à le coller à la place de ton UserForm_Initialize que tu a déjà.

Si cela ne fonctionne pas, essaye de changer "UserForm_Initialize" par "UserForm_Activate"

C'est super, cela fonctionne ! Merci grandement Juice !

Ça me rapproche de doucement de ce que je souhaite !

Sachant que je suis sur Mac, que le fichier sur lequel je travail est trop volumineux pour le transmettre sur le forum, comment souhaites-tu procéder pour la suite ?

MERCI MERCI MERCI !

Aaaah super !!!

Aha ! Faut s'attaquer au reste du fichier maintenant x)

Pour la suite nous pourrions procéder par capture d'écran pour que je puisse avoir les références dont j'ai besoin pour modifier le fichier :

  • Dans quelle colonne est la liste que tu souhaite avoir dans la ListBox et à quelle cellule est-ce qu'elle démarre ?
  • Quelle est la cellule cible où tu souhaite mettre les résultats des choix que tu a fais dans ta ListBox ?
  • Quelle est le nom de ta feuille ?

Voilà voilà

Déjà avec sa on pourra te refaire une procédure pour ton propre fichier !

J'avais perdu espoir ! Ouf !

Alors pour les informations :

La feuille où je souhaite que les listes à choix se trouvent se nomme "Suivi clients Trame"

La feuille où se trouve les informations des listes déroulantes se nomme : "Liste infos"

1)

Les infos de la première liste se trouvent donc au champ : 'Listes infos'!$E$3:$E$7

Et je souhaiterai que la liste soit sur 'Suivi clients Trame'!$M$17:$M$517

2)

Les infos de la deuxième liste se trouvent donc au champ : 'Listes infos'!$I$3:$I$11

Et je souhaiterai que la liste soit sur 'Suivi clients Trame'!$AB$17:$AB$517

3)

Et les infos de la dernière liste se trouvent donc au champ : 'Listes infos'!$J$3:$J$15

Et je souhaiterai que la liste soit sur 'Suivi clients Trame'!$AC$17:$AC$517

Est-ce que je suis assez précis ?

Organdi,

Je n'ai pas très bien compris excuse moi :0

En gros, (en prenant ton 1° pour exemple) les données qui doivent être entrées dans ta ListBox se trouve sur 'Suivi clients Trame'!$M$17:$M$517 et lorsque tu a cliquer sur le bouton valider, il faut que le résultat se mette sur Listes infos'!$E$3:$E$7 ?

Pourrais tu me faire une capture de ce que tu a et de ce que tu aimerai avoir après utilisation de la ListBox ?

En gros, (en prenant ton 1° pour exemple) les données qui doivent être entrées dans ta ListBox se trouve sur 'Suivi clients Trame'!$M$17:$M$517 et lorsque tu a cliquer sur le bouton valider, il faut que le résultat se mette sur Listes infos'!$E$3:$E$7 ?

Pourrais tu me faire une capture de ce que tu a et de ce que tu aimerai avoir après utilisation de la ListBox ?

C'est moi qui me suis mal exprimé.

Pour le 1° exemple :

Je souhaiterai que les cellules se trouvant sur 'Suivi clients Trame'!$M$17:$M$517 contiennent une liste déroulante avec choix multiple (comme tu as réussi à le faire tout à l'heure). Et les informations de cette liste déroulante se trouvent sur 'Listes infos'!$E$3:$E$7

C'est mieux comme ça ?

Je tente quelque chose et je te l'envoie

Si sa te conviens on généralise sa sur ton petit 2) et ton petit 3)

Rechercher des sujets similaires à "liste deroulante choix multiples"