Excel - Plusieurs listes déroulantes à choix multiples

Bonjour à tous,

Je sollicite votre aide car j'ai crée un fichier excel avec une colonne à choix multiples.

Je m'explique :

1. Je souhaite pouvoir sélectionner plusieurs choix dans une liste déroulante

2. J'ai réussi à le faire grâce au code suivant :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim ValSaisie

Dim P As Integer

If Not Intersect(Columns("G"), Target) Is Nothing And Target.Count = 1 And Target.Row > 1 Then

Application.EnableEvents = False

ValSaisie = Target

Application.Undo

P = InStr(Target, ValSaisie)

If P > 0 Then

Target = Left(Target, P - 1) & Mid(Target, P + Len(ValSaisie) + 1)

If Right(Target, 1) = "," Then

Target = Left(Target, Len(Target) - 1)

End If

Else

If Target = "" Then

Target = ValSaisie

Else

Target = Target & "," & ValSaisie

End If

End If

Application.EnableEvents = True

End If

End Sub

3. Cependant j'aimerais avoir une autre colonne avec un choix multiple et je ne sais pas quoi changer dans le code pour pouvoir y arriver > la colonne architecture et la colonne restaurants

Pourriez vous m'aider ?

Bien à vous,

Margot

Bonjour,

Essai un truc comme ça....

Remplace ton code par celui-ci

Slts

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ValSaisie
Dim P As Integer

  If Not Intersect(Columns("G"), Target) Is Nothing And Target.Count = 1 And Target.Row > 1 Then
    Application.EnableEvents = False
    ValSaisie = Target
    Application.Undo
    P = InStr(Target, ValSaisie)
    If P > 0 Then
      Target = Left(Target, P - 1) & Mid(Target, P + Len(ValSaisie) + 1)
      If Right(Target, 1) = "," Then
        Target = Left(Target, Len(Target) - 1)
      End If
    Else
      If Target = "" Then
        Target = ValSaisie
      Else
        Target = Target & "," & ValSaisie
      End If
    End If
    Application.EnableEvents = True
  End If
    If Not Intersect(Columns("H"), Target) Is Nothing And Target.Count = 1 And Target.Row > 1 Then
    Application.EnableEvents = False
    ValSaisie = Target
    Application.Undo
    P = InStr(Target, ValSaisie)
    If P > 0 Then
      Target = Left(Target, P - 1) & Mid(Target, P + Len(ValSaisie) + 1)
      If Right(Target, 1) = "," Then
        Target = Left(Target, Len(Target) - 1)
      End If
    Else
      If Target = "" Then
        Target = ValSaisie
      Else
        Target = Target & "," & ValSaisie
      End If
    End If
    Application.EnableEvents = True
  End If
End Sub

Trop fort boss_68 merci beaucoupppp !

Du coup si je veux ajouter plusieurs autres colonnes avec des choix multiples (ce qui risque d'arriver) comment je dois faire j'ai juste à ajouter un paragraphe de code du style :

If Not Intersect(Columns("H"), Target) Is Nothing And Target.Count = 1 And Target.Row > 1 Then

Application.EnableEvents = False

ValSaisie = Target

Application.Undo

P = InStr(Target, ValSaisie)

If P > 0 Then

Target = Left(Target, P - 1) & Mid(Target, P + Len(ValSaisie) + 1)

If Right(Target, 1) = "," Then

Target = Left(Target, Len(Target) - 1)

Désolée je suis débutante en codage j'espère de comprendre comment ça marche

Re bonsoir

Oui effectivement mais je pense que tu as omis de mettre ceci à la suite

End If
    Else
      If Target = "" Then
        Target = ValSaisie
      Else
        Target = Target & "," & ValSaisie
      End If
    End If
    Application.EnableEvents = True
  End If

Par contre à la place de l'ancien code tu peux tester celui-là en-dessous......... et et rajouter tes colonnes supplémentaire ici à l'ocasion

If Not Intersect(Range(""G2:G100", "H2:H100""), Target) Is Nothing And Target.Count = 1 Then

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Range("G2:G100", "H2:H100"), Target) Is Nothing And Target.Count = 1 Then
    If Target = "" Then Exit Sub
     Application.EnableEvents = False
     ValSaisie = Target
     Application.Undo
     p = InStr(Target, ValSaisie)
     If p > 0 Then
       Target = Left(Target, p - 1) & Mid(Target, p + Len(ValSaisie) + 4)
       If Right(Target, 4) = ", " Then
          Target = Left(Target, Len(Target) - 4)
       End If
     Else
       If Target = "" Then
         Target = ValSaisie
       Else
        Target = Target & ", " & ValSaisie
       End If
     End If
     Application.EnableEvents = True
  End If
End Sub

Sub ret()
  Application.EnableEvents = True
End Sub

Bonjour Boss_68,

Je re-solicite votre aide car je ne comprends pas ce que je fais de mal, mon fichier ne marche plus.

1. J'ai ajouté une étape de code à chaque fois pour les colonnes que je voulais ajouter en choix multiples (cf mon code dans le excel en PJ)

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim ValSaisie

Dim P As Integer

If Not Intersect(Columns("G"), Target) Is Nothing And Target.Count = 1 And Target.Row > 1 Then

Application.EnableEvents = False

ValSaisie = Target

Application.Undo

P = InStr(Target, ValSaisie)

If P > 0 Then

Target = Left(Target, P - 1) & Mid(Target, P + Len(ValSaisie) + 1)

If Right(Target, 1) = "," Then

Target = Left(Target, Len(Target) - 1)

End If

Else

If Target = "" Then

Target = ValSaisie

Else

Target = Target & "," & ValSaisie

End If

End If

Application.EnableEvents = True

End If

If Not Intersect(Columns("M"), Target) Is Nothing And Target.Count = 1 And Target.Row > 1 Then

Application.EnableEvents = False

ValSaisie = Target

Application.Undo

P = InStr(Target, ValSaisie)

If P > 0 Then

Target = Left(Target, P - 1) & Mid(Target, P + Len(ValSaisie) + 1)

If Right(Target, 1) = "," Then

Target = Left(Target, Len(Target) - 1)

End If

Else

If Target = "" Then

Target = ValSaisie

Else

Target = Target & "," & ValSaisie

End If

End If

Application.EnableEvents = True

End If

If Not Intersect(Columns("N"), Target) Is Nothing And Target.Count = 1 And Target.Row > 1 Then

Application.EnableEvents = False

ValSaisie = Target

Application.Undo

P = InStr(Target, ValSaisie)

If P > 0 Then

Target = Left(Target, P - 1) & Mid(Target, P + Len(ValSaisie) + 1)

If Right(Target, 1) = "," Then

Target = Left(Target, Len(Target) - 1)

End If

Else

If Target = "" Then

Target = ValSaisie

Else

Target = Target & "," & ValSaisie

End If

End If

Application.EnableEvents = True

End If

If Not Intersect(Columns("Q"), Target) Is Nothing And Target.Count = 1 And Target.Row > 1 Then

Application.EnableEvents = False

ValSaisie = Target

Application.Undo

P = InStr(Target, ValSaisie)

If P > 0 Then

Target = Left(Target, P - 1) & Mid(Target, P + Len(ValSaisie) + 1)

If Right(Target, 1) = "," Then

Target = Left(Target, Len(Target) - 1)

End If

Else

If Target = "" Then

Target = ValSaisie

Else

Target = Target & "," & ValSaisie

End If

End If

Application.EnableEvents = True

End If

End Sub

2. J'aimerais faire du choix multiples pour les colonnes suivantes : G / M / N / Q / R / S / T / V / W / X / Y avec les sélections de la feuille 2 correspondantes aux colonnes.

3. Je n'ai fait que le code pour les colonnes G / M / N / Q pour essayer mais ca ne marche pas.

Pour info : mon fichier est bien enregistré sous format prenant en compte les macros.

Je suis complétement débutante en code et mon fichier est amené à évoluer donc j'aimerais beaucoup comprendre le pourquoi du comment une fois ca marche puis ca marche pas....

Au secours !!!!

Merci d'avance pour votre aide

Bonsoir,

Un nouveau code est placé dans ThisWorkbook à la place de l'ancien, il est valable pour toute la plage G2:Y

Dans le gestionnaire des noms j'ai créer des plages nommées pour chaque listes déroulantes avec une formule décaler, qui permet d'ajouter ou de supprimer des noms dans les colonnes A,B,C,D,E,F,G,H,I,J,K sans modifier les valeurs des plages

Voir Pj

Slts

Bonjour Boss_68,

Merci pour ton aide

Je pense qu'il y a quelque chose que je fais pas bien car je n'arrive pas dans ton fichier à faire de la selection multiple ca me choisit qu'un seul truc à chaque fois

Je désespère d'y arriver un jour :p

Bonjour Boss_68,

J'ai pas lâché l'affaire et j'ai vu qu'il me manquait une mis à jour excel et miracle en la faisant tout marche YOUHOUUUUUUUUUUUUUUUUUUU

C'est génial ce que vous avez fait vraiment merci 1000 fois !

Petite question :

1/ Comment je fais si je veux ajouter des colonnes dans le futur avec une sélection multiple aussi qu'est-ce que je dois modifier dans le code ?

2/ Comment je fais pour que la selection multiple s'étende jusqu'aux dernières lignes du tableau par exemple ligne 5000?

3/ Comment je fais si je veux ajouter des choix dans la liste déroulante exemple je souhaite rajouter années 30 dans la liste déroulante architecture ?

Je veux pas tout casser haha !

En tout cas vraiment merci beaucoup c'est adorable de votre part de m'avoir tant aidé !

Bonsoir

1/ Comment je fais si je veux ajouter des colonnes dans le futur avec une sélection multiple aussi qu'est-ce que je dois modifier dans le code ?

En admettant que tu rajoutes une colonne Z alors dans le code qui ce trouve dans ThisWorbook recherche cette ligne et modifie la dernière lettre Y par Z

200617075610515779

2/ Comment je fais pour que la selection multiple s'étende jusqu'aux dernières lignes du tableau par exemple ligne 5000?

Quand tu clics sur la cellule ou ce trouve la liste déroulante tu prends la poignée de recopie "c'est le petit carré noir en bas de la cellule à droite et tu la fais glisser jusqu'à la ligne 5000

3/ Comment je fais si je veux ajouter des choix dans la liste déroulante exemple je souhaite rajouter années 30 dans la liste déroulante architecture ?

Normalement vu que chaque items à sa plage nommées avec une formule décaler, tu peux écrire directement 30 à la suite du dernier mot de la colonne Architecture dans la feuil2, il le prendra directement en compte dans ta liste déroulante au cas ou fait le moi savoir

Slts

Rechercher des sujets similaires à "listes deroulantes choix multiples"