Liste déroulante à choix multiples

Bonjour à tous,

Est ce qu'il est possible d'obtenir de l'aide pour créer une liste déroulante à choix multiples ? Je m'explique : je souhaiterais que lorsque la liste s'affiche, pouvoir sélectionner plusieurs choix, et que chacun d'entre eux s'affiche dans la cellule selectionnée.

Je suis novice concernant Excel et surtout très nulle !!

Je mets en piece jointe le fichier que j'ai commencé à créer et sur lequel j'aurais besoin de cette fonctionnalité. Je n'aurai besoin de cette liste a choix multiples que pour les colonnes V et W.

Merci d'avance,

cordialement,

Mag

Bonjour,

Ton fichier ne contenant rien est déjà particulièrement lent ! Cela parce que tu l'as affublé d'un tableau qui occupe la totalité de la feuille.

Commence par régler ça pour ne pas avoir très vite un classeur inexploitable. Tu détruis irrémédiablement cette feuille. Tu fais ton tableau avec le nombre de colonnes qui te convient et tu n'étends pas un tableau Excel si tu conserves ce mode de travail au-delà des lignes occupées...

Cordialement.

Bonjour et merci de votre réponse rapide,

En effet je vois bien que ce fichier rame, comme je vous l'ai dit je ne maitrise pas du tout Excel et je ne vois pas comment faire pour limiter mon tableau... (je souhaite rajouter une ou deux dernières colonnes a ce tableau)

Ca ne doit pas être difficile mais pourriez vous m'indiquer la marche à suivre ?

Merci

Il fait déjà 16 384 colonnes et 1 048 576 lignes !!! Tu ne peux rien rajouter ! Tu détruis cette feuille ou tu changes même de classeur...

31fichier-avp-2.xlsx (25.60 Ko)

Voici la version (normalement) allégée de mon tableau...

C'est bon mais je ne vois pas tes listes.

Ce que je cherche à lister c'est ce qu'il y a dans la ligne "codage" (ligne 2) des colonnes V et W.

Bonjour,

Qui peut le plus.... peut le moins

Regarde ce que j'ai fait en ligne3 (A recopier vers le bas).

J'ai utilisé la validation des données - Liste - Et j'ai mis les options ( séparées pard des ";").

Pour une mise à jour et des modifications éventuelles plus faciles il serait bon de créer des tables sur une autre feuille du classeur et dans le champ "liste" de la validation de mettre "=NomDeLaTable"

J'ai aussi mis des validations de données sur d'autres champs, et limiter certaines saisies pour n'avois que des dates, des heures des nombres entiers, ..... dans d'autre colonnes.

A toi de voir ce qui te convient.

A ta dispo pour d'autres explications

@+

52fichier-avp-2.xlsx (10.12 Ko)

bonjour et merci bernard22 ! c'est presque ce dont j'aurai besoin, j'avais réussi a créer ce type menu déroulant parfaitement adapté pour les autres colonnes qui ne peuvent contenir qu'une seule réponse par cellule, alors que pour mes colonnes V et W plusieurs choix sont possibles, pour mieux me faire comprendre, ce que j'aimerai pour ces deux colonnes c'est donc de pouvoir créer un menu déroulant avec lequel je peux par exemple sélectionner à la fois "OH" et "métamphétamines" pour une même cellule.

Je ne sais pas si je suis claire dans ma demande...

Merci en tout cas de l'aide que vous m'apportez !

Bonsoir,

Je ne suis pas assez compétent.

Je m'étais déjà cassé les dents sur un sujet similaire.

Ce que j'avais trouvé de plus approchant c'est sur ce forum.

Vois le fichier joint si tu peux en tirer quelque chose.

Sinon, pourquoi ne pas avoir plusieurs colonnes ( une pour chaque choix) et dans la colonne résultat : concaténer les choix.....

@+

Ce que je cherche à lister c'est ce qu'il y a dans la ligne "codage" (ligne 2) des colonnes V et W.

J'ai bien compris !

Il y a plusieurs façons de faire pour obtenir le résultat que tu souhaites... si j'adoptais un dispositif qui m'aurait fait démonter ta liste pour y substituer autre chose (telle l'utilisation d'une ListBox...), je ne t'aurais certes pas demandé de mettre en place la liste pour la supprimer immédiatement après ! Le dispositif que j'ai utilisé récemment sur un sujet similaire laisse en place la liste de validation classique (l'ergonomie reste donc identique à ce qu'elle est habituellement) et n'intervient que pour cumuler les sélections successives... Il me semblait donc plus judicieux d'intervenir après mise en place de la liste...

Cordialement.

Pas très coopératif !

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim tx, i%, ntx$
    If Target.Row < 2 Or Target.Count > 1 Then Exit Sub
    If Intersect(Target, Me.Columns("V:W")) Is Nothing Then Exit Sub
    On Error Resume Next
    If Target.SpecialCells(xlCellTypeAllValidation).Cells.Count > 0 Then
        If Err.Number <> 0 Then Exit Sub
        If Target.Validation.Type = xlValidateList Then
            If Err.Number <> 0 Then Exit Sub
        End If
    End If
    On Error GoTo 0
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    ntx = Target.Value
    Application.Undo
    tx = Target.Value
    If tx = "" Then
        tx = ntx
    ElseIf Not tx Like "* / *" Then
        If tx = ntx Then
            tx = ""
        Else
            tx = tx & " / " & ntx
        End If
    Else
        tx = Split(tx, " / ")
        For i = 0 To UBound(tx)
            If tx(i) = ntx Then
                ntx = "": tx(i) = "@"
                Exit For
            End If
        Next i
        If ntx <> "" Then
            tx = Join(tx, " / ") & " / " & ntx
        Else
            tx = Replace(Join(tx, " / "), " / @", "")
            If tx Like "@*" Then tx = Replace(tx, "@ / ", "")
        End If
    End If
    Target.Value = tx
    Application.EnableEvents = True
End Sub

Elle est à placer dans le module de la feuille.

Particularités :

Outre les tests d'usage : que l'on n'est pas ligne 1, que l'on n'agit pas sur plusieurs cellules, que l'on n'est pas ailleurs que dans les colonnes V ou W, on s'assure en outre que la cellule soit sous validation de type liste.

Lorsqu'un item est déjà dans la cellule et qu'on en sélectionne un second dans la liste, ce dernier est ajouté à la suite du premier. Séparateur : " / " tel que indiqué. Même chose pour un 3e, un 4e, etc.

Si on sélectionne un item déjà présent dans la cellule, ce dernier est ôté. Ce qui permet de rectifier sans avoir à effacer manuellement.

Lors de la mise en place de la liste de validation, il conviendra de décocher dans l'onglet Alerte d'erreur l'option : Quand des données non valides sont tapées.

Cordialement.

Bonjour MFERRAND et encore merci,

Vous avez parfaitement saisi ce que je souhaite et ce que vous proposez dans votre dernier message est parfaitement adapté. J'ai créé la liste comme demandée dans votre avant dernière réponse (si j'ai bien compris votre demande). Maintenant je n'arrive pas à comprendre comment je dois mettre en place la liste à choix multiples... qu'est ce que le "module de la feuille" ? (pardon si mes questions vous paraissent peu pertinentes...)


20fichier-avp-3.xlsx (28.33 Ko)

Bonjour,

Clic droit sur l'onglet, Visualiser le code dans le menu contextuel (c'est un raccourci d'accès à l'éditeur VBA, conduisant directement au module de la feuille sur laquelle on cliqué).

Y coller la procédure en entier.

La procédure est ce qu'on nomme une procédure évènementielle, qui se lance automatiquement lorsque survient dans la feuille l'évènement visé par la déclaration de procédure (1re ligne : Private Sub...). Il s'agit de l'évènement Change, constitué par un changement de valeurs dans une ou plusieurs cellules de la feuille concernée.

On programme donc cet évènement pour contrôler les changements qui nous intéressent. Ces changements étant bien localisés et correspondant à des modalités précises, cela explique que l'on commence par vérifier toutes ces conditions avant d'en venir à la raison d'être de la procédure. Si les conditions sont réunies, celle-ci récupère la valeur sélectionnée, annule cette insertion pour aller récupérer la valeur antérieure et la modifier dans le sens que j'ai indiqué dans le post précédent, en s'assurant que son intervention ne déclenche pas de nouvel évènement (ce qui pourrait entraîner une succession en chaîne... jusqu'à survenance d'erreur par saturation de la mémoire).

Il faudra enregistrer le classeur en xlsm (avec macro).

Cordialement.

Merciiiiiiiiiiiii ! Ca fonctionne parfaitement et c'est exactement ce que je voulais !

Merci pour votre patience et vos explications.

Bonjour,

Hé oui je suis de retour...

Pour rappel j'ai fait appel à vous pour pouvoir créer une liste déroulante avec plusieurs possibilités de choix pour une même liste déroulante (pour une liste contenant les possibilités 1 2 3, pouvoir sélectionner 1 et 3 à la fois). Le code envoyé fonctionnait parfaitement mais pour je ne sais quelle raison il y a eu un bug et ce code ne fonctionne plus donc je ne peux plus sélectionner mes multiples possibilités pour une même liste. J'ai pourtant de nouveau copié ce fameux code dans le VBA mais rien n'y fait.

Est ce qu'il est possible de nouveau de me venir en aide s'il vous plait ? Comment faire pour que le code soit de nouveau actif ?

Je vous joints le fichier sur lequel je travaille et voici le code qui avait été créé :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim tx, i%, ntx$

If Target.Row < 2 Or Target.Count > 1 Then Exit Sub

If Intersect(Target, Me.Columns("V:Z")) Is Nothing Then Exit Sub

On Error Resume Next

If Target.SpecialCells(xlCellTypeAllValidation).Cells.Count > 0 Then

If Err.Number <> 0 Then Exit Sub

If Target.Validation.Type = xlValidateList Then

If Err.Number <> 0 Then Exit Sub

End If

End If

On Error GoTo 0

Application.ScreenUpdating = False

Application.EnableEvents = False

ntx = Target.Value

Application.Undo

tx = Target.Value

If tx = "" Then

tx = ntx

ElseIf Not tx Like "* / *" Then

If tx = ntx Then

tx = ""

Else

tx = tx & " / " & ntx

End If

Else

tx = Split(tx, " / ")

For i = 0 To UBound(tx)

If tx(i) = ntx Then

ntx = "": tx(i) = "@"

Exit For

End If

Next i

If ntx <> "" Then

tx = Join(tx, " / ") & " / " & ntx

Else

tx = Replace(Join(tx, " / "), " / @", "")

If tx Like "@*" Then tx = Replace(tx, "@ / ", "")

End If

End If

Target.Value = tx

Application.EnableEvents = True

End Sub

Merci d'avance.

Bonjour,

Prends l'habitude de mettre le code cité dans un post sous balises Code. Cela en conserve l'indentation et le rend beaucoup plus lisible...

Qu'est-ce qui ne fonctionne pas ? Car cela m'a l'air de fonctionner dans ton fichier joint !

Bonsoir,

Ecoutez je ne comprends pas, hier impossible de le faire fonctionner correctement mais comme vous il fonctionnait sur les autres ordinateurs que le mien, et aujourd'hui sans que je fasse quoique ce soit, il a de nouveau fonctionné... En tout cas merci encore pour ce code qui me sauve comme jamais pour mon recueil de données.

Bonne soirée

Rechercher des sujets similaires à "liste deroulante choix multiples"