Liste selection multiple VBA

Maud44

XLDnaute Junior
Bonjour
J'ai un problème, je n'arrive pas à mettre dans une cellule plusieurs données d'une même liste déroulante...Par exemple faire apparaitre A , B , C dans une même cellule ... en partant de la liste déroulante A, B , C ,D
Malgré les codes existants je ne comprends pas le fonctionnement du codE...
Quel code faut - il réaliser?
D'avance merci,
Cordialement,
 

Pièces jointes

  • Classeur1.xlsx
    28 KB · Affichages: 74
  • Classeur1.xlsx
    28 KB · Affichages: 75
  • Classeur1.xlsx
    28 KB · Affichages: 61

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Liste selection multiple VBA

Bonjour Maud,

un essai en pièce jointe (il est nécessaire d'activer les macros à l'ouverture)

à+
Philippe
 

Pièces jointes

  • 111.xls
    35 KB · Affichages: 83
  • 111.xls
    35 KB · Affichages: 78
  • 111.xls
    35 KB · Affichages: 90

job75

XLDnaute Barbatruc
Re : Liste selection multiple VBA

Bonjour Maud44,

Par exemple faire apparaitre A , B , C dans une même cellule ... en partant de la liste déroulante A, B , C ,D

Pas tout à fait limpide, mais peut-être avec cette macro :

Code:
Private Sub worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$2" Then Exit Sub
If Target = "" Then Exit Sub
[C3] = [C3] & IIf([C3].Text = "", "", vbLf) & Target
Rows(2).AutoFit 'ajustement de la hauteur
End Sub
Elle est à coller dans le code de la feuille (clic droit sur l'onglet et Visualiser le code).

Le fichier doit être enregistré en .xls (fichier joint) ou .xlsm.

Edit : salut Philippe, pas rafraîchi

A+
 

Pièces jointes

  • Classeur(1).xls
    33.5 KB · Affichages: 52
  • Classeur(1).xls
    33.5 KB · Affichages: 65
  • Classeur(1).xls
    33.5 KB · Affichages: 59
Dernière édition:

Maud44

XLDnaute Junior
Re : Liste selection multiple VBA

Bonjour,
Je mets en pièces jointesle dossier pour lequel je veux réaliser la liste de sélection multiple.
je voudrais que dans la cellule E2 puisse apparaitre plusieurs agents en les sélectionnant à l'aide de la liste déroulante de la cellule. Actuellement quand on en choisit un, et que l'on veut en mettre un autre ca enlève celui sélectionner en premier.
Je voudrais que ca fasse une liste des agents en E2.

J'espère avoir été plus claire

Cordialement
 

Pièces jointes

  • Classeur diffusionV2.xlsx
    31 KB · Affichages: 65
  • Classeur diffusionV2.xlsx
    31 KB · Affichages: 72
  • Classeur diffusionV2.xlsx
    31 KB · Affichages: 72

Maud44

XLDnaute Junior
Re : Liste selection multiple VBA

Non... Je n'ai clairement aucune connaissance... Donc archi simple ... je ne pense pas quand on découvre VBA...On me demande de faire une fichier mais VBA je ne connaissais pas avant...
Et lorsque je fais "éxecuter" ça ne retrouve pas la macro que je viens de saisir...J'ai fais le tour de l'ensemble des macro internet (exemple de choix multiple) en essayant de les adapter... sans succès...
 

Maud44

XLDnaute Junior
Re : Liste selection multiple VBA

J'ai fait ca :
Private Sub worksheet_Change(ByVal Target As Range)
If Target.Address <> "$E$2" Then Exit Sub
If Target = "" Then Exit Sub
[F2] = [F3] & IIf([F3].Text = "", "", vbLf) & Target
Rows(2).AutoFit 'ajustement de la hauteur
End Sub
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Liste selection multiple VBA

Re,

Quand je fais éxécuter la macro ... elle n'existe pas alors que je l'ai créee...

où se trouve la macro créée ? si elle est dans un module, elle ne se déclenchera pas lors d'une modif faite sur le feuille

à+
Philippe

Edit: Plutôt que d'envoyer une "image", le fichier serait plus utile

Edit2: Je dois m'absenter, Job, je te laisse continuer
 
Dernière édition:

Maud44

XLDnaute Junior
Re : Liste selection multiple VBA

OK. La macro ne doit pas être réalisée au bon endroit alors... dans ce cas ou faut il la faire.
C'est vraiment la première fois que je touche à VBA alors je ne connais pas le langage NI les bases même les plus simples...
C'est toujours pour le fichier joint précédemment " Classeur de diffusion V2".

D'avance merci,
 

job75

XLDnaute Barbatruc
Re : Liste selection multiple VBA

Re,

Voyez le fichier joint avec cette macro :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Intersect(Target, Range("E2", Range("E" & Rows.Count).End(xlUp)))
If r Is Nothing Then Exit Sub
Application.EnableEvents = False 'désactive les événements
For Each r In r 'si plusieurs cellules sont modifiées
  With Cells(r.Row, "G")
    If CStr(r) = "" Then
      .Value = ""
    Else
      .Value = .Text & IIf(.Text = "", "", ", ") & CStr(r)
      r = .Value
    End If
  End With
Next
Application.EnableEvents = True 'réactive les événements
End Sub
Les CStr c'est pour le cas où un petit malin entrerait une valeur d'erreur...

A+
 

Pièces jointes

  • Classeur diffusion(1).xls
    48 KB · Affichages: 67

job75

XLDnaute Barbatruc
Re : Liste selection multiple VBA

Re,

Pardon, la dernière ligne ne s'effaçait pas, il faut écrire :

Code:
Set r = Intersect(Target, Range("E2:E" & Rows.Count), Me.UsedRange)
La macro corrigée :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Intersect(Target, Range("E2:E" & Rows.Count), Me.UsedRange)
If r Is Nothing Then Exit Sub
Application.EnableEvents = False 'désactive les événements
For Each r In r 'si plusieurs cellules sont modifiées
  With Cells(r.Row, "G")
    If CStr(r) = "" Then
      .Value = ""
    Else
      .Value = .Text & IIf(.Text = "", "", ", ") & CStr(r)
      r = .Value
    End If
  End With
Next
Application.EnableEvents = True 'réactive les événements
End Sub

Bis repetita
: elle est à placer dans le code de la feuille (clic droit sur l'onglet et Visualiser le code).

Fichier (2).

A+
 

Pièces jointes

  • Classeur diffusion(2).xls
    48 KB · Affichages: 43

job75

XLDnaute Barbatruc
Re : Liste selection multiple VBA

Re,

Des renvois à la ligne sont peut-être mieux :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = Intersect(Target, Range("E2:E" & Rows.Count), Me.UsedRange)
If r Is Nothing Then Exit Sub
Application.EnableEvents = False 'désactive les événements
For Each r In r 'si plusieurs cellules sont modifiées
  With Cells(r.Row, "G")
    If CStr(r) = "" Then
      .Value = ""
    Else
      .Value = .Text & IIf(.Text = "", "", vbLf) & CStr(r)
      r = .Value
    End If
    r.EntireRow.AutoFit 'ajustement de la hauteur
  End With
Next
Application.EnableEvents = True 'réactive les événements
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Classeur diffusion(3).xls
    45 KB · Affichages: 68

Maud44

XLDnaute Junior
Re : Liste selection multiple VBA

Bonsoir,
Merci beaucoup déjà pour l'aide précieuse que vous venez de m'apporter. Moi qui n'y connait rien ca m'aide énormément.
Par contre, dans le cas du dernier message lorsqu'on clique sur un agent deux fois...le nom se met deux fois dans la cellule. Cependant je voudrais qu'il disparaisse. Une sorte de "cochage" et "décochage".
Que faut-il modifier dans le code?

D'avance merci beaucoup,

Cordialement,
 

Discussions similaires

Réponses
15
Affichages
572

Statistiques des forums

Discussions
312 331
Messages
2 087 358
Membres
103 528
dernier inscrit
hplus