Liste déroulante avec sélections multiples (cocher)

Bonjour, je voudrais créer dans une colonne une liste déroulante qui me propose de "cocher"usieurs choix, et que dans la cellule, les données sélectionnées soit séparées par des virgules. Ma liste est ci-dessous. Je voudrais poar exemple que ma cellule m'afffiche "FR, DE,FI" ou "FR". Merci de votre aide.

langue
FR
DE
EN
IT
NL
DA
EL
ES
PT
FI
SV

J'ai une vba, toutefois cette dernière m'oblige à séléctionner un par un :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Oldvalue As String
Dim Newvalue As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Not Intersect(Target, Range("AF301:AF10000")) Is Nothing 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
If InStr(1, Oldvalue, Newvalue & ", ") > 0 Then

Target.Value = Replace(Oldvalue, Newvalue & ", ", "")
ElseIf InStr(1, Oldvalue, ", " & Newvalue) > 0 Then

Target.Value = Replace(Oldvalue, ", " & Newvalue, "")
ElseIf InStr(1, Oldvalue, Newvalue) = 0 Then

Target.Value = Oldvalue & ", " & Newvalue
End If
End If
End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub

Bonjour,

Malheureusement après 30 ans, Microsoft n'a pas encore mis cette possibilité dans les listes de validation !
Si vous voulez faire le seul moyen est de passer par une Userform en y créant une liste ou alors mettre des cases à cocher à droite de votre liste et d'exécuter un code qui placera vos choix dans une cellule.
Autant dire que le code que vous avez posté ne servira pas et que votre fichier sera plus compliqué au niveau VBA

Cordialement

Bonjour Dan,

Je vous remercie pour ces informations dont j'ai bien pris note.

Cordialement.

Bonjour;

je ne suis pas débutant mais pas non plus expert comme Dan.

La listbox a deux propriétés MultiSelect et ListStyle

- MultiSelect peut prendre 3 valeurs: fmMultiSelectSingle (pas utile ici), fmMultiSelectMulti, et fmMultiSelectExtended (tester une des deux dernières options)

- ListStyle peut prendre 2 valeurs: fmListStylePlain et fmListStyleOption (pour des cases à cocher)

Bonjour Scraper,

Oui mais comme je l'ai précisé dans mon post cela ne peut se faire qu'au travers d'une USF.
Le plus simple serait de consacrer sa feuille avec sa liste et à coté une possibilité de cases à cocher via un petit code VBA (pas d'objet). Au final on évite de compliquer.

Crdlt

Bonjour à tous,

Une proposition avec une USF et comme @Dan, je ne vois pas non plus d'autres possibilités. J'ai créé un tableau structuré de test, il suffit de double-cliquer sur une cellule "Pays ISO 2" pour que le formulaire s'ouvre et qu'il permette de sélectionner des pays. A l'ouverture le formulaire est alimenté avec les pays déjà saisis.

Le formulaire se positionne sur la cellule active et se décale si la place n'est pas suffisante pour l'afficher (cf module MOD_FormSurCellule).

Cdlt,

Cylfo

@Cylfo,
hum l'USF.. ça je l'aurais bien fait aussi lorsque j'ai posté. Mais bon....
Si le demandeur revient, je vous laisse continuer sur le fil.

Juste une remarque : vous utilisez Rowssource et comme souvent écrit, c'est mieux la méthode Additem ou list. Avec rowssource on a parfois des soucis

Cordialement

Bonjour,

2 modifications dans la version jointe :

  • Le formulaire est (re)mis en modal (mis en non modal pour des tests et oubli ensuite ...)
  • Utilisation de a propriété .List à la place de .RowSource comme conseillé par @Dan (à qui je ne pensais pas brûler la politesse)

Cdlt,

Cylfo

Bonjour,

C'est super ! Merci beaucoup. Mon premier onglet est nommé "Avis" , la validation des données devra se faire sur la colonne AD. Les cellules sont AD200: AD65000

Ma liste se trouve dans un deuxième onglet nommé "milckush" : A2:A11

Je souhaiterais adapter le code afin de pourvoir l'utiliser. J'ai essayé, sans succès. Merci.

Bonjour,

Dans votre classeur :

  • Dans l'éditeur VB, copier intégralement le module "MOD_FormSurCellule". Il n'y a pas de modification à effectuer. Pour copier, il suffit de faire glisser l'objet de la source vers la cible.
  • Copier le formulaire "ufSelPays". Pour copier, il suffit de faire glisser l'objet de la source vers la cible.
  • Dans votre classeur copier la procédure ci-dessous dans le module associé à votre feuille "Avis"
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Not Intersect(Target, ActiveSheet.Range("AD200:AD65000")) Is Nothing Then
          ufSelPays.Show
          Cancel = True
       End If
    End Sub

En pièce jointe le fichier adapté à votre contexte.

Cdlt,

Cylfo

L'émotion me submerge. Je tiens à vous remercier sincèrement, à vous et à tous les contributeurs, pour ce que vous apportez. Ce site est une véritable mine d'or. Je suis profondément reconnaissant pour tout ce que j'ai appris grâce aux échanges.

Bonsoir,
Cylfo, Dan bonsoir,

une proposition en passant, sans USF mais un objet List directement sur la feuille. La mise à jour de la cellule est "directe", pas de bouton valider ni quitter, simplement la sélection d'une cellule en dehors de la colonne A.
Bon la colonne n'est pas la bonne, ni la plage surveillée, mais c'est pour l'exemple.

Le Fichier :

Ou bien la version avec USF et toujours la modification en directe sur la feuille, donc sans bouton valider, et la croix pour sortir
Le fichier :

@ bientôt

LouReeD

Bonjour,

Merci beaucoup pour votre aide précieuse.

J’ai joint le fichier « 30_Avis_ECO » tel que je l’utilise. Les colonnes sont identiques à l’original.

  • Pour rappel, d’autres macros sont présentes.
  • Les listes sont situées sur l’onglet « milckush ».
  • La partie « Pays » est déjà fonctionnelle grâce à un code reçu par vos soins. Je souhaite conserver les valeurs actuelles en AD200:AD65000 pour les onglets « Avis » et « Rapport ». C’est résolu.
  • Mon principal problème concerne la liste « TYPOLOGIE » de l’onglet « milckush ». J’aimerais pouvoir l’appliquer à la colonne V (de V7 à V65000) des onglets « Avis » et « Rapport ». Excel affiche 8 choix. Je dois donc dérouler avec la souris pour apercevoir les autres choix. Je souhaiterais que l'affichage de la liste déroulante sont plus étirée, mer permettant de voir l'ensemble des choix. J'ai tenté plusieurs moyens, sans succès.

Je suis vraiment reconnaissant de votre expertise et de votre disponibilité.

2430-avis-eco.xlsm (141.72 Ko)

Bonjour, le souci a été réglé par un userform. Merci

Rechercher des sujets similaires à "liste deroulante selections multiples cocher"