[Résolu] Help ! Chargement de listbox (contrôles activeX)

taupivin

XLDnaute Junior
Bonjour à tous,

Ma problématique est la suivante : lors d'une selection d'un ou plusieurs champs de la listbox 3 (connect1, connect2,...), j'aimerai remonter dans la listbox1 : les données de la feuille "données vincent" (si la valeur de la colonne 9 de "données vincent" correspond au champ selectionné dans la listbox 3).

Ci-dessous le code que j'ai essayé mais qui bug à la ligne " If CStr(Tablo(i, 9)) = ListBox3.Value Then".

Vous trouverez le fichier ci-joint pour plus de clarté.

Code:
Dim Tablo As Variant ' Déclare la variable Tablo

Sub test1()

Dim i As Integer
Dim DerLig As Long
    
    'Définit la variable Tablo => Emplacement des Données source pour l'incrémentation de la ListBox
    With Sheets("données vincent")
        DerLig = .Range("A65536").End(xlUp).Row
        Tablo = .Range("A2:I" & DerLig)
    End With
    
ListBox1.Clear
    
For i = 1 To UBound(Tablo)
    
    'Si la colonne 9 de la variable Tableau est égale à la valeur choisie alors
    If CStr(Tablo(i, 9)) = ListBox3.Value Then
    
    'Alors on ajoute les données correspondantes aux 6 colonnes de la ListBox
        ListBox1.AddItem Tablo(i, 1) 'Colonne 1 de la ListBox = Colonne 1 du tableau de réf
        ListBox1.List(ListBox1.ListCount - 1, 1) = Tablo(i, 2) 'Colonne 2 de la ListBox = Colonne 2 du tableau de réf,...
        ListBox1.List(ListBox1.ListCount - 1, 2) = Tablo(i, 3)
        ListBox1.List(ListBox1.ListCount - 1, 3) = Tablo(i, 5)
        ListBox1.List(ListBox1.ListCount - 1, 4) = Tablo(i, 6)
        ListBox1.List(ListBox1.ListCount - 1, 5) = Tablo(i, 7)
    End If
Next i

End Sub

Merci d'avance pour votre expertise. (ce bout de code se trouve dans le module 2)
 

Pièces jointes

  • SAV MONDIAL RELAY.xlsm
    77.1 KB · Affichages: 51
Dernière édition:

taupivin

XLDnaute Junior
Re : Help ! Chargement de listbox (contrôles activeX)

Re bonjour,
j'ai déplacé mon bout de code dans un private sub comme ci-dessous. Le bug n'apparait plus, toutefois rien ne se passe, la listbox n'est pas incrémenté :
Code:
Option Explicit
Dim tablo As Variant ' Déclare la variable Tablo

Private Sub ListBox3_Change()

Dim i As Integer
Dim DerLig As Long
    
    'Définit la variable Tablo => Emplacement des Données source pour l'incrémentation de la ListBox
    With Sheets("données vincent")
        DerLig = .Range("A65536").End(xlUp).Row
        tablo = .Range("A2:I" & DerLig)
    End With
    
ListBox1.Clear
    
For i = 1 To UBound(tablo)
    
    'Si la colonne 9 de la variable Tableau est égale à la valeur choisie alors
    If CStr(tablo(i, 9)) = ListBox3.Value Then
    
    'Alors on ajoute les données correspondantes aux 6 colonnes de la ListBox
        ListBox1.AddItem tablo(i, 1) 'Colonne 1 de la ListBox = Colonne 1 du tableau de réf
        ListBox1.List(ListBox1.ListCount - 1, 1) = tablo(i, 2) 'Colonne 2 de la ListBox = Colonne 2 du tableau de réf,...
        ListBox1.List(ListBox1.ListCount - 1, 2) = tablo(i, 3)
        ListBox1.List(ListBox1.ListCount - 1, 3) = tablo(i, 5)
        ListBox1.List(ListBox1.ListCount - 1, 4) = tablo(i, 6)
        ListBox1.List(ListBox1.ListCount - 1, 5) = tablo(i, 7)
    End If
Next i

End Sub
 

taupivin

XLDnaute Junior
Re : Help ! Chargement de listbox (contrôles activeX)

Après utilisation du pas à pas détaillé, j'ai l'impression qu'il ne trouve pas de correspondance entre tablo(i,9) et listbox3.value car le deboger saute directement à next i.
Quelqu'un saurait pourquoi ?
 

Paf

XLDnaute Barbatruc
Re : Help ! Chargement de listbox (contrôles activeX)

Re,

ListBox3.Value a pour valeur : Null

Utilisez
Code:
If CStr(tablo(i, 9)) = ListBox3.List(ListBox3.ListIndex) Then
ou
Code:
    If tablo(i, 9) = ListBox3.List(ListBox3.ListIndex) Then

A+
 

Paf

XLDnaute Barbatruc
Re : Help ! Chargement de listbox (contrôles activeX)

Re,Re,

si la selection peut-être multiple:

Code:
For i = 1 To UBound(tablo)
    For j = 0 To ListBox3.ListCount - 1
        'Si la ligne est sélectionnée et égale à la colonne 9 de la variable Tableau
        If ListBox3.Selected(j) = True And tablo(i, 9) = ListBox3.List(j) Then
            'Alors on ajoute les données correspondantes aux 6 colonnes de la ListBox
            ListBox1.AddItem tablo(i, 1) 'Colonne 1 de la ListBox = Colonne 1 du tableau de réf
            ListBox1.List(ListBox1.ListCount - 1, 1) = tablo(i, 2) 'Colonne 2 de la ListBox = Colonne 2 du tableau de réf,...
            ListBox1.List(ListBox1.ListCount - 1, 2) = tablo(i, 3)
            ListBox1.List(ListBox1.ListCount - 1, 3) = tablo(i, 5)
            ListBox1.List(ListBox1.ListCount - 1, 4) = tablo(i, 6)
            ListBox1.List(ListBox1.ListCount - 1, 5) = tablo(i, 7)
            Exit For
        End If
    Next
Next i

ou

Code:
For j = 0 To ListBox3.ListCount - 1
         If ListBox3.Selected(j) = True then ' Si la ligne est sélectionnée 
              For i = 1 To UBound(tablo)
                    'Si la ligne  sélectionnée est égale à la colonne 9 de la variable Tableau
                    If tablo(i, 9) = ListBox3.List(j) Then
                           'Alors on ajoute les données correspondantes aux 6 colonnes de la ListBox
                           ListBox1.AddItem tablo(i, 1) 'Colonne 1 de la ListBox = Colonne 1 du tableau de réf
                           ListBox1.List(ListBox1.ListCount - 1, 1) = tablo(i, 2) 'Col 2 de la ListBox = Col 2 du tableau,...
                           ListBox1.List(ListBox1.ListCount - 1, 2) = tablo(i, 3)
                           ListBox1.List(ListBox1.ListCount - 1, 3) = tablo(i, 5)
                           ListBox1.List(ListBox1.ListCount - 1, 4) = tablo(i, 6)
                           ListBox1.List(ListBox1.ListCount - 1, 5) = tablo(i, 7)
                           Exit For
                   End If
              Next
          End If
Next

A+
 

Discussions similaires

Réponses
4
Affichages
213
Réponses
17
Affichages
844

Statistiques des forums

Discussions
312 266
Messages
2 086 654
Membres
103 353
dernier inscrit
jerem'