Listbox valeurs associées autres feuilles
Bonjour
Je ne sais pas si ce que je demande est possible : à l'ouverture du formulaire la listbox1 doit s'initialiser, non comme dans l'exemple joint, avec les 3 colonnes A, B et C de la feuille 1, mais avec les valeurs associées à savoir :
* 2eme colonne de la listbox : valeurs associées de la colonne B feuille LBOX à savoir colonnes B + D de la feuille BDLocal
* 3eme colonne de la listbox : valeurs associées de la colonne C feuille LBOX à savoir colonnes B + F de la feuille BDMob
J'ai joint une image de la listbox souhaitée pour une meilleure compréhension
Est-ce réalisable ?
J'espère avoir été clair, c'est pas évident à expliquer
Merci d'avance
Bonjour,
il reste à déterminer la dernière ligne selon la valeur max de "BDlocal" ou "BDMob"
Private Sub UserForm_Initialize()
UserForm1.ListBox1.ColumnCount = 4
Me.ListBox1.ColumnWidths = "100;180;100;180"
For i = 0 To 21
ListBox1.AddItem ' <<<<=== nécessaire ....
ListBox1.List(i, 0) = Sheets("BDlocal").Range("B" & i + 1)
ListBox1.List(i, 1) = Sheets("BDlocal").Range("D" & i + 1)
ListBox1.List(i, 2) = Sheets("BDMob").Range("B" & i + 1)
ListBox1.List(i, 3) = Sheets("BDMob").Range("F" & i + 1)
Next i
End SubBonsoir Boby, bonsoir le forum,
Essaie comme ça :
Private Sub UserForm_Initialize()
Dim BO As Worksheet 'déclare la variable BO (onglet lBOx)
Dim LO As Worksheet 'déclare la variable LO (onglet bdLOcal)
Dim MO As Worksheet 'déclare la variable MO (onglet bdMOb)
Dim TVBO As Variant 'déclare la variable TVBO (Tableau des Valeurs onglet lBOx)
Dim TVLO As Variant 'déclare la variable TVLO (Tableau des Valeurs onglet bdLOcal)
Dim TVMO As Variant 'déclare la variable TVMO (Tableau des Valeurs onglet bdMOb)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Me.ListBox1.ColumnWidths = "40;400;200"
Set BO = Worksheets("LBOX") 'définit l'onglet BO
Set LO = Worksheets("BDlocal") 'définit l'onglet LO
Set MO = Worksheets("BDMob") 'définit l'onglet MO
TVBO = BO.Range("A1").CurrentRegion 'définit le tableau des valeurs TVBO
TVLO = LO.Range("A1").CurrentRegion 'définit le tableau des valeurs TVLO
TVMO = MO.Range("A1").CurrentRegion 'définit le tableau des valeurs TVMO
For I = 2 To UBound(TVBO, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TVBO (en partant de la seconde)
With Me.ListBox1 'prend en compte la ListBox1
.AddItem 'ajoute un élément
.Column(0, .ListCount - 1) = TVBO(I, 1) 'récupère dans la colonne 0 de l'élément ajouté la donnée ligne I colonne 1 de TVBO
For J = 2 To UBound(TVLO, 1) 'boucle 2 : sur toutes les lignes J du tableau des valeurs TVLO (en partant de la seconde)
'condition : si la données ligne J colonne 1 de TVLO est égale à la donnée ligne I colonne 2 de TVBO
If TVLO(J, 1) = TVBO(I, 2) Then
'récupère dans la colonne 1 de l'élément ajouté la donnée ligne J colonnes 2 et 4 de TVLO, sort de la boucle 2
.Column(1, .ListCount - 1) = TVLO(J, 2) & " - " & TVLO(J, 4): Exit For
End If 'fin de la condition
Next J 'prochaine ligne de la boucle 2
For K = 2 To UBound(TVMO, 1) 'boucle 3 : sur toutes les lignes K du tableau des valeurs TVMO (en partant de la seconde)
'condition : si la données ligne K colonne 1 de TVMO est égale à la donnée ligne I colonne 3 de TVBO
If TVMO(K, 1) = TVBO(I, 3) Then
'récupère dans la colonne 2 de l'élément ajouté la donnée ligne K colonnes 2 et 6 de TVMO, sort de la boucle 3
.Column(2, .ListCount - 1) = TVMO(K, 2) & " - " & TVMO(K, 6): Exit For
End If 'fin de la condition
Next K 'prochaine ligne de la boucle 3
End With 'fin de la prise en compte de ls ListBox1
Next I 'prochaine ligne de la boucle 1
End Sub[Édition]
Bonsoir SabV, nos posts se sont croisés...
Bonjour,
Merci à vous deux
ThauThème,c'est trop fort ... et avec les explications en prime.
Bravo, encore merci et bonne journée