ListBox Plusieurs colonnes : combinaison unique

Bonjour,

Je viens vers cette communauté car je suis à nouveau dans le besoin.

Je vais essayer d'être clair car ce que je veux est un peu complexe. (Pour ça que je n'ai même pas l'ombre d'une piste pour démarer )

Alors voilà le problème :

Je dois créer une listebox de 6 colonnes (déjà là je pèche) qui serait alimenté par 6 colonnes d'une feuille excel.

Mais, une combinaison ne doit pas apparaître deux fois :

Donc dans l'exemple que je fournis on ne doit avoir qu'une ligne AM C G W Bm E.

Mais il peut y avoir une ligne AM C G W Bm E et une ligne AM C G W Bm É. (j'espère être clair )

Je dois ensuite quand je sélectionne la ligne de la liste box, récupérer les 6 valeurs dans des variables.

J'apprécierais qu'on me débloque sur ce coup s'il vous plait.

Je vous remercie d'avance.

ps: si il peut y avoir le titre de chaque colonne de la listebox ça serait parfait mais ce n'est pas genant sans

28exemple.xlsm (10.17 Ko)

Bonjour.

Je ne sais pas où est ta list box, mais j'ai tenté

Sub Lewandowski()
Dim i As Integer
Dim j As Integer
i = 2
Dim t As String
Dim k As Integer
Dim flag As Integer
flag = 0
Do Until IsEmpty(Cells(i, 1))
    For j = 1 To 6
        t = t & Cells(i, j).Value & " "
    Next j
    For k = 0 To ListBox1.ListCount - 1
        If t = ListBox1.List(k) Then
            flag = 1
            Exit For
        End If
    Next k
    If flag = 0 Then
        ListBox1.AddItem t
    Else
        flag = 0
    End If
    i = i + 1
Loop
End Sub

A chaque ligne on met les six cases dans t

Si t est déjà dans la listbox on passe au i suivant, sinon on l'y met et on passe au suivant. (enfin c'est ce que j'ai en tête, j'ai ptet planté un truc quelque part )

Bonne journée.

Du coup, j'ai essayé ton code et rien ne se passe.

Je remets le fichier avec le userform cette fois qui se déclenche avec le click du bouton ^^'

39exemple.xlsm (22.18 Ko)

Bonjour,

c'est à quoi je penser aussi , car avec cela , une fois la valeur sélectionner dans le combobox, il suffit d'appliquer un split et on a les 6 variable

à tester

le message à la fin c'étai pour tester de ma part

60exemple.xlsm (23.83 Ko)

Bonjour Minanse !

Ton code marche super bien. Je remarque juste un petit détail qui me chiffonne.

En effet, quand une cellule contient un espace (dans l'exemple la cellule E37), il crée deux colonnes dans la liste box et du coup (avec ton code) v5=Bm et v6=BmO alors que ça devrait être v5=Bm BmO et v6=É.

Bonjour,

pour corriger ce problème, il suffit de modifier 2 petite ligne dans le code :

1er ligne remplace

 For j = 1 To 6
        t = t & Cells(i, j).Value & " "
    Next j

par

 For j = 1 To 6
        t = t & Cells(i, j).Value & "."
    Next j

2eme ligne

mot = split(t 

par

mot ) split(t,".")

Blobfish a écrit :

Bonjour Minanse !

Ton code marche super bien. Je remarque juste un petit détail qui me chiffonne.

c'est le code de Elhevan j'ai juste copier collé

Donc j'ai fait ce que tu as dis :

mais avec :

mot = Split(t, ".")

Il m'indique une erreur (Erreur de compilation : Incompatibilité de type).

c'est le code de Elhevan j'ai juste copier collé  :lol:

Sérieux ? Surprenant, j'avais du mal le recopier

voila avec la modification

87exemple.xlsm (23.97 Ko)

Merci beaucoup à vous deux du coup !

C'est exactement ce que je cherchais !

Encore merci

Blobfish a écrit :
c'est le code de Elhevan j'ai juste copier collé  :lol:

Sérieux ? Surprenant, j'avais du mal le recopier

Quand les gens sont surpris que ton code fonctionne

(Mais je le vis bien )

Blobfish a écrit :
c'est le code de Elhevan j'ai juste copier collé  :lol:

Sérieux ? Surprenant, j'avais du mal le recopier

j'ai apporter des modification mineur mais le plus gros travaille était déjà fait avec le code de départ

Bah du coup, je comprends mieux.

Encore merci pour ton aide.

Bonjour, je reposte ici car c'est en lien.

Je voulais rajouter deux choses, une je sais pas du tout comment, l'autre j'ai une idée mais elle a pas marché.

La première :

J'aimerais que la liste dans la combobox soit triée par ordre alphabétique.

La seconde : j'aimerais faire une boucle sur les valeurs de la combo box du style :

Private Sub sauvegarder_tout_click()

'Déclaration des variables
Dim mot As String
Dim t() As String
Dim ac As String, nc As String, pc As String, lc As String, tc As String, dc As String
Dim k As String

For k = 1 To ComboBox1.ListCount - 1 'Pour toutes les valeurs ajouter à la Combobox
    mot = Me.ComboBox1(k).Text 'on désigne par mot l'ensemble de la ligne
    t = Split(mot, "   ,   ") 'on sépare chaque partie de la ligne
    ac = t(0) 'on stocke la première partie dans la variable ac (acteur choisi)
    nc = t(1) 'on stocke la deuxième partie dans la variable nc (nature choisie)
    pc = t(2) 'on stocke la troisième partie dans la variable pc (porteur choisi)
    lc = t(3) 'on stocke la quatrième partie dans la variable lc (LRU choisi)
    tc = t(4) 'on stocke la cinquième partie dans la variable tc (Type de moyen choisi)
    dc = t(5) 'on stocke la sixième partie dans la variable dc (Demandeur choisi)
    Call save(ac, nc, pc, lc, tc, dc)
Next

End Sub

le problème est que je ne maitrise absolument pas les combobox

Bonjour,

la boucle est bonne mais pour récupéré dans un combobox c'est :

mot = Me.ComboBox1.List(k)

ComboBox1.Text renvoie uniquement la valeur sélectionner dans le combobox


Blobfish a écrit :

La première :

J'aimerais que la liste dans la combobox soit triée par ordre alphabétique.

trie la colonne "A" par ordre alphabétique et la liste le sera plus ou moins

Merci une nouvelle fois, ça a marché.

C'est pas une mauvaise idée le tri comme ça

Rechercher des sujets similaires à "listbox colonnes combinaison unique"