Creer menu deroulant avec choix multiple [Résolu/Fermé]

Signaler
-
 Guesline -
Bonjour,

je voudrais créer un menu avec choix multiple sur excel. J'ai trouvé une façon de faire avec VBA dans une case mais quand je glisse dans les autres cases ça marche pas. Pouvez vous m'aider s'il vous plait. est ce que je dois le faire pour chaque case, j'ai une colonne de 200 informations :o ?

Voici mes codes

Private Sub Worksheet_Change(ByVal Target As Range)

'Code by Sumit Bansal from www.trumpexcel.com
' To Select Multiple Items from a Drop Down List in Excel

Dim Oldvalue As String
Dim Newvalue As String

On Error GoTo Exitsub
If Target.Address = "$R$5" Then
    If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
    GoTo Exitsub
    Else: If Target.Value = "" Then GoTo Exitsub Else
        Application.EnableEvents = False
        Newvalue = Target.Value
        Application.Undo
        Oldvalue = Target.Value
        If Oldvalue = "" Then
            Target.Value = Newvalue
        Else
            Target.Value = Oldvalue & ", " & Newvalue
        End If
    End If
End If
Application.EnableEvents = True

Exitsub:
Application.EnableEvents = True

End Sub


Déjà un grand Merci !

1 réponse

Messages postés
15378
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 octobre 2020
1 379
Bonjour,
remplacez cette ligne:
If Target.Address = "$R$5" Then

par celle-ci en remplacant R10 par Rxx, xx etant la ligne de votre derniere validation de liste
If Not Application.Intersect(Target, Range("R5:R10")) Is Nothing Then


To Select Multiple Items from a Drop Down List in Excel
Ce code permet de mettre plusieurs choix sur la meme ligne!!!!
Super ça a marché. Mille merci.

Comme je voulais utiliser cette même option dans d'autre colonne de la même feuille Excel, je sais pas comment ajouter les autres colonnes dans la formule. je vois pas ou créer d'autre fichier sur VBA dans une même feuille. j’ai aussi essaye d'ajouter (Range("A5: A30") dans la phrase que tu m'as donné juste après Range("R5:R10") genre comme ça :
If Not Application.Intersect(Target, Range("R5:R10"), Range("A5: A30") ) Is Nothing Then
Ça ne marche pas.
Messages postés
15378
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 octobre 2020
1 379 > Guesline
Bonjour,

Separer les plages(ou cellules) par une virgules

If Not Application.Intersect(Target, Range("R5:R10,A5: A30")) Is Nothing Then
>
Messages postés
15378
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 octobre 2020

Super ça marche. Merci vous êtes Génial.

:)