creation liste a partire d'une cellule

  • Initiateur de la discussion Initiateur de la discussion karnato1547
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

K

karnato1547

Guest
bonjour j'espère que vous pourrez m'aider,
j'ai une colonne qui contient des cellules avec des informations séparés par une virgule ","
je voudrais créer une liste a partir de ces informations automatiquement de façon par exemple grâce a a une cellule qui contient: amine, jean, pierre
j'aie automatiquement une liste avec ces choix sans manipulation manuelle.
est ce faisable s'il vous plais?
 

Pièces jointes

Re : creation liste a partire d'une cellule

Merci GUIV de ta reponse
je viens de trouver une solution plus simple
voici le code:

Sub Macro1()
Dim liste As String, c as Range
For Each c In Range("B2:B" & Range("B65536").End(xlUp).Row)
liste = c.Value
With c.Offset(0, 1).Validation 'validation en colonne C
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=liste
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Next
End Sub

ma question maintenant est : est ce que c'est possible que dans la liste j'ai pas seulement le choix de la meme ligne ca veux dire avoir dans la liste l'ensemble des noms de la colone B sans doublon
 
Re : creation liste a partire d'une cellule

Re,
Essaie pour une validation en E1
Code:
Sub ListeValidation()
    Dim liste As String, c As Range, tablo As Variant, x As Integer
    liste = ""
    For Each c In Range("B2:B" & Range("B65536").End(xlUp).Row)
        liste = liste & "," & Replace(c.Value, " ", "")
    Next

    tablo = Split(liste, ",")
    liste = ""
    For x = 0 To UBound(tablo)
        If Application.Match(tablo(x), tablo, 0) = x + 1 Then
            liste = liste & "," & tablo(x)
        End If
    Next x


    With Range("E1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=liste
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With

End Sub
Cordialement,
Guiv
 
Re : creation liste a partire d'une cellule

rebonjour
merci bcp Guiv de ton temps et de ton aide.
quand je met le script sur mon tableau il marche bien sauf que la liste deroulante est limitée a 256 caracteres genre elle m'affiche pas tous les choix qui doivent exister.
il me recupere les elements des cellules mais dés que le nombre totale des caracteres de l'ensembles des elements de la liste depasse 256 il n'affiche pas les autres.
excuse moi je suis debutant j'arrive pas a trouver la solution 🙁
merci de ta patence
 
Re : creation liste a partire d'une cellule

Re,
En insérant un combobox dans la feuille et
Code:
Sub IniCombo()
Dim liste As String, c As Range, tablo As Variant, x As Integer
    liste = ""
    For Each c In Range("B2:B" & Range("B65536").End(xlUp).Row)
        liste = liste & "," & Replace(c.Value, " ", "")
    Next

    tablo = Split(liste, ",")
    liste = ""
    For x = 0 To UBound(tablo)
        If Application.Match(tablo(x), tablo, 0) = x + 1 Then
            Sheets("Feuil1").ComboBox1.AddItem tablo(x)
        End If
    Next x

End Sub

Je ne crois pas que les combos soient limitées en nombre d'items ou de caractères 😕, mais à vérifier!!!
Essaie et dis nous...
A +
Guiv
 
Re : creation liste a partire d'une cellule

Rebonjour,
d'abord merci a tous le monde puis,
merci Guiv pour ton exemple mais j'ai toujours le même problème
je pense que c juste une variable qui déconne dans ce script. mais j'arrive pas encore a trouver un moyen de contrer ca :s
ahh oui en meme temps si je laisse une cellule vide entre deux enregistrement dans la colonne B ca me plante le script

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$B$1" Then
    If Target = "Participants" Then
        If Me.FilterMode Then ActiveSheet.ShowAllData
    Else
        Target.AutoFilter Field:=2, Criteria1:="*" & Target & "*"
    End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cel As Range
Dim I As Byte
Dim LaListe As Object
Dim Noms
If Target.Count > 1 Then Exit Sub
If Target.Address = "$B$1" Then
    Set LaListe = CreateObject("Scripting.Dictionary")
    For Each Cel In Range("B2:B" & [B65000].End(xlUp).Row)
        Noms = Split(Cel, ",")
        For I = LBound(Noms) To UBound(Noms)
            LaListe.Item(Application.Proper(Trim(Noms(I)))) = Application.Proper(Trim(Noms(I)))
        Next I
    Next Cel
    Liste = "Participants" & "," & Join(LaListe.items, ",")
    With Target.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=Liste
    End With
End If
End Sub
 
Re : creation liste a partire d'une cellule

Re,
Chez moi, la macro que je t'ai envoyée fonctionne même avec plus de 255 caractères et même avec un cellule vide dans la colonne (cf fichier joint)
Cordialement,
Guiv
 

Pièces jointes

Dernière édition:
Re : creation liste a partire d'une cellule

Re:
Merci de votre réponse Guiv.
vous avez raison ca marche parfaitement je pense que j'avais du faire une mauvaise manoeuvre.
je suis nouveau en vba et excel c'est pour ca 🙁.
dernière question svp
comment je peux utiliser cette liste comme filtre pour filtrer ma liste?
 
Re : creation liste a partire d'une cellule

Code:
comment je peux utiliser cette liste comme filtre pour filtrer ma liste?

...je dirais même plus:
Code:
comment peux-tu utiliser ce filtre comme liste pour lister ton filtre?
😛 😛 😉 😕

Peux-tu préciser ce que tu voudrais faire?
Cordialement,
Guiv
 
Re : creation liste a partire d'une cellule

lol
t'as raison je pose de droles de questions,🙄
alors je voulais dire est t'il possible d'utiliser la combobox comme filtre?
filtrer mon tableau grace a la combobox.😛
Merci de ta patience Guiv
Cordialement.
 
Re : creation liste a partire d'une cellule

Re,
Le choix d'un nom dans la combobox peut déclencher n'importe quelle macro avec l'évènement Combobox_change.
Par exemple, n'afficher que les lignes où la colonne B contient le nom en question... Est-ce ça que tu veux?
 
Re : creation liste a partire d'une cellule

Oupsss tres bonne remarque.
je l'avais creé parceque le probleme avait changé (premier probleme cration d'une liste a partir d'une cellule apres l'avoir fais j'ai eu un autre probleme completement different relatif a la limitation du nombre de caracteres) et je pensait que je devais faire un nouveau sujet c'etait a environ 10h mais apres heureusement j'ai recu des reponses sur mon probleme ici grace a Guiv.
Merci Modeste je vais fermer l'autre discussion ou la mettre sur resolu.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour