Excel 2016 : réaliser un menu déroulant avec choix multiple

Résolu
Bonjour,
J'aimerais réaliser deux menus déroulants avec choix multiple.
Mes connaissances se limitent actuellement au choix unique dans un menu déroulant.
J'ai d'ores et déjà créé dans une feuille à part les menus déroulants sous forme tableau.
La validation des données est aussi prête.

Seulement, j'ai besoin de proposer :
1- un menu déroulant avec choix multiple, en bloquant lorsque des choix sont différents des propositions , dans une colonne
2 - un menu déroulant avec choix multiple, avec priorisation des choix (1er = principal, 2 = secondaire, 3 = complémentaire), sur 3 colonnes.

Avez-vous une démo pour m'aider ?
Pouvez-vous m'expliquer le pas à pas ?

En tant de besoin, je peux vous envoyer le fichier.

Je vous en remercie particulièrement,

Bonne journée
Anne

Configuration: Windows / Chrome 99.0.4844.84

17 réponses

  1. Bonjour Anne

    Oui sans un exemple de ton fichier et des choix possibles difficile de t'aider !
    Fichier à poster sur cjoint.com https://www.cjoint.com/
    , faire créer un lien, le copier et revenir le coller ici

    Explique aussi ce que tu veux dira par "en bloquant lorsque des choix sont différents des propositions , dans une colonne "
    avec un ou des exemples précis

    Dans l’attente
    Cdlmnt
    Via

    0
    1. Bonjour,

      Cjoint.com refuse de me proposer un joint. Il y aurait il un bug aujourd'hui ?

      Pour bloquant, je veux dire que la personne ne pourra remplir rien d'autres que ce qui lui est proposé.

      Bien cordialement,
      Anne
      0
      1. Non chez moi ça marche bien
        une fois le fichier téléchargé bien aller au bas de la page pour avoir le bouton Créer le lien


        Si ça ne marche pas cjooint tu peux passer par un autre site comme WeTransfer

        0
        1. Via55,
          C'était bien bloqué chez moi...
          Après multiples essais, le voici : https://www.cjoint.com/c/LCCoVM2co3Q
          0
          1. Raté !!!
            Ton lien ne fonctionne pas

            Crdlmt
            0
            1. Si le lien fonctionne
              0
          2. Et là ?...
            https://www.cjoint.com/c/LCCpwaGgwwQ
            0
            1. Bonjour Via55,
              Merci pour ta réponse.

              J'ai du mal à comprendre ta réponse dans le tableau.
              Pour la colonne C, la personne peut saisir plusieurs actions. Comment faire autre que par un menu déroulant simple, comme présenté dans l'exemple ?

              Pour les colonnes D, E, F, j'ai du mal avec le commentaire. je pense faire simple surtout que nous avons 600 lignes à répondre.

              Bonne journée,
              Bien cordialement,
              Anne

              https://www.cjoint.com/c/LCDh6mBhubQ
              0
              1. Bonjour Anne

                Pas possibilité de choix multiples dans une liste déroulante par formule
                Il faut mieux passer par des colonnes avec les différentes actions et cocher celles choisies
                https://www.cjoint.com/c/LCDjSJdYsyG

                Pour interdire 2 fois la même réponse dans les colonnes choix 1 choix 2 choix 3 pas moyen de faire autrement que passer par la macro :
                Private Sub Worksheet_Change(ByVal Target As Range)
                ' si entrée dans la plage I2:K1000 (NB :modifier la plage si nécessaire)
                If Not Intersect(Target, Range("I2:K1000")) Is Nothing Then
                    'NB.SI sur la ligne entre I et K pour compter le nombre d'items équivalent à celui choisi dans liste déroulante
                    a = WorksheetFunction.CountIf(Range("D" & Target.Row & ":F" & Target.Row), Target.Value)
                    ' si item choisi existe déjà dans la ligne
                        If a > 1 Then
                        'on annule en remplaçant le choix par du vide
                        Range(Target.Address) = ""
                        End If
                End If
                End Sub

                Pour mettre la macro dans ton fichier réel il suffit de la copier, dans ton fichier réel d'ouvrir l'éditeur VBA avec le raccourci ALT+F11, de choisir dans l'arborescence à gauche le nom de la feuille dans laquelle doit s'appliquer la macro, de double-cliquer dessus et dans la page blanche de droite coller la macro, modifier la plage de cellules où elle doit s’appliquer si nécessaire (pas même colonnes que dans exemple) et fermer l'éditeur VBA

                Si tu ne veux pas de macro alors il faut procéder comme pour les actions et mettre 8 colonnes de choix, on entrera dans ces colonnes le choix de priorité 1, 2 ou 3 . possible alors par validation de données d'interdire 2 fois le même choix
                https://www.cjoint.com/c/LCDkcYCJFfG

                Cdlmnt
                Via

                0
                1. Et pour une liste à selection multiple, est ce la solution ?
                  Comment faire ?
                  0
                  1. comment modifier les propositions existantes dans la macro par les Vraies ?
                    0
                    1. 1) revoir mon post 10 j'avais rajouté des infos après coup que tu n'a pas du lire
                      2) Pour une sélection multiple il faut là encore passer par une macro en VBA faisant ouvrir un userform avec une zone de liste à choix multiple et retranscrivant les données choisies dans la cellule
                      https://www.cjoint.com/c/LCDl6upBd7G
                      0
                      1. Autre possibilité que celle indiquée dans mon post 15, toujours par macro bien sûr, pas moyen de faire autrement mais ici sans userform mais avec zone de liste à cocher (et + mis entre les choix, pourrait se faire aussi sur le modèle avec userform du post 15
                        https://www.cjoint.com/c/LCDmu1jhsGG
                        0
                        1. via55, c'est exactement ce que je souhaite :-)
                          Pour modifier le "carré jaune" et les choix, je le trouve où ? Que dans le code ?
                          0
                          1. Pour modifier les choix c'est dans la feuille Menus déroulants
                            Si la liste des choix est plus longue que celle actuelle il faut modifier la plage (en gras ci dessous) dans la macro :
                            Private Sub Worksheet_SelectionChange(ByVal Target As Range)
                            If Not Intersect([c2:c1000], Target) Is Nothing And Target.Count = 1 Then
                            Me.ListBox1.MultiSelect = fmMultiSelectMulti
                            Me.ListBox1.List = Sheets("Menus déroulants").Range("A3:A8").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 = 90
                            Me.ListBox1.Width = 100
                            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

                            Pour modifier la taille de la fenêtre de choix qui s'ouvre c'est aussi dans la macro ci-dessus
                            Me.ListBox1.Height = 90 détermine la hauteur
                            et Me.ListBox1.Width = 100 détermine la largeur

                            Quand à la couleur jaune pour la changer il faut aller dans le Ruban - Développeur et cliquer sur Mode création, la liste de choix apparait - clic droit dessus puis Propriétés et dans la fenêtre qui s'ouvre modifier la couleur de la propriété Backcolor

                            Si tu n'as l'onglet Développeur dans le ruban voilà ce que dit l'aide Microsoft :
                            L’onglet Développeur n’est pas affiché par défaut, mais vous pouvez l’ajouter au ruban.
                            Sous l’onglet Fichier, voir Options>Personnaliser le ruban.
                            Sous Personnaliser le ruban et Onglets principaux, activez la case à cocher Développeur.
                            0