Listbox qui ne se rempli pas ????

Bonjour,

J'essai de mettre en place une listbox en place avec un combox de recherche et j'aurai besoin de votre aide car je suis un peu perdu, ma list box ne se rempli pas et je ne trouve pas pourquoi ?

Je souhaite que ma listbox1 soit rempli avec les valeurs de mon tableau C1:I400 de la feuille Cfg

Ci-dessous mon code ou plutôt celui que j'ai adapté d'une exemple trouvé sur le web.

Private O As Worksheet 'déclare la variable O (Onglet)

Private TC As Variant 'déclare la variable TC (Tableau de Cellules)

Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm

Dim I As Integer 'déclare la variable I (Incrément)

Dim D As Object 'déclare la variable J (incrément)

Dim T As Variant 'déclare la variable T (Tableau)

Me.ListBox1.ColumnCount = 5 'définit le nombre de colonnes de la ListBox1

Me.ListBox1.ColumnWidths = "0;60;50;40;30;" 'définit la largeur des tois premières colonne de la ListBox1 (zéro signifie que la première sera cachée)

Set O = Sheets(DATASOURCEFEUIL) 'définit l'onglet O

TC = O.Range("C1").CurrentRegion 'définit la tableau de cellule TC

Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D

For I = 2 To UBound(TC, 1) 'boucle sur toutes les lignes du tableau TC (en partant de la 2ème ligne)

    If TC(I, 1) <> "" Then D(TC(I, 1)) = "" 'si la valeur ligne I colonne 7 de TC n'est pas nulle, alimente le dictionnaire D

Next I 'prochaine ligne de la boucle

T = D.keys 'récupère dans le tableau D les éléments du dictionaire D sans doublon

Call tri(T, LBound(T), UBound(T)) 'lance la procédure de tri alphabétique du tableau D

Me.Cmd_search.List = T 'alimente la ComboBox1 d'une liste triée et sans doublon

End Sub

Private Sub Cmd_search_Change() 'au changement dans la ComboBox1

Dim I As Integer 'déclare la variable I (Incrément)

Dim J As Byte 'déclare la variable J (incrément)

With Me.ListBox1 'prend en compte la ListBox1

    .Clear 'efface le contenu

    For I = 1 To UBound(TC, 1) 'boucle 1 : sur toutes les lignes du tableau TC (en partant de la 1ère ligne)

        If TC(I, 1) = Me.Cmd_search.Value Then 'condition : si la valeur ligne I colonne 1 de TC est égale à la valeur de la ComboBox1

            .AddItem I 'ajoute le numéro de ligne dans la colonne 0 cachée

            For J = 1 To 9 'boucle 2 : sur les 9 autres colonnes de la ListBox

                .Column(J, .ListCount - 1) = TC(I, J) 'ajoute les données du tableau

            Next J 'prochaine colonne de la boucle 2

        End If 'fin de la conditon

    Next I 'prochaine ligne de la boucle 1

    If .ListCount = 1 Then 'condition : si la ListBox1 ne contient qu'un seul élément

        Me.TextBox_name.Value = .Column(1, 0) 'affiche le modèle dans la Textbox1

        Me.ComboBox_fonct.Value = .Column(2, 0) 'affiche l'année dans la TextBox2

    Else 'sinom

        Me.TextBox_name.Value = "" 'efface la Textbox1

        Me.ComboBox_fonct.Value = "" 'efface la Textbox2

    End If 'fin de la condition

End With 'fin de la prise en compte de la ListBox1

End Sub

Private Sub TextBox_name_Click() 'au clic dans la ListBox1

With Me.ListBox1 'prend en compte la ListBox1

    Me.TextBox_name.Value = .Column(1, .ListIndex) 'affiche le modèle de l'élément sélectionné dans la Textbox1

    Me.ComboBox_fonct.Value = .Column(2, .ListIndex) 'affiche le modèle de l'élément sélectionné dans la Textbox2

End With 'fin de la prise en compte de la ListBox1

'si tu dois sélectionner ou récupérer une donnée le numéro de ligne de l'élément sélectionné est stocké dans la ligne 0 de lá ListBox1

'tu peux, par exemple, utiliser une variable LI : Li = Me.ListBox1(0, Me.ListBox.ListIndex)

End Sub

Sub tri(a, gauc, droi) ' Quick sort, tiré du site de Jacques BOISGONTIER : http://boisgontierjacques.free.fr/pages_site/Dictionnaire.htm

ref = a((gauc + droi) \ 2)

g = gauc: D = droi

Do

    Do While a(g) < ref: g = g + 1: Loop

    Do While ref < a(D): D = D - 1: Loop

    If g <= D Then

        temp = a(g): a(g) = a(D): a(D) = temp

        g = g + 1: D = D - 1

  End If

Loop While g <= D

If g < droi Then Call tri(a, g, droi)

If gauc < D Then Call tri(a, gauc, D)

End Sub

Private Sub CommandButton_enregister_Click()

    If TextBox_name.Value = "" And ComboBox_fonct = "" And TextBox_d_deb = "" Then

        Dd = MsgBox("Merci de renseigner" & Chr(10) & Chr(10) & "- Nom," & Chr(10) & "- Prénom," & Chr(10) & "- Fonction", 48, "Erreur")

    Else 'Si Ok

        ligne_insertion = Sheets(DATASOURCEFEUIL).Range("D65000").End(xlUp).Row + 1

        Sheets(DATASOURCEFEUIL).Cells(ligne_insertion, 4) = TextBox_name.Value

        Sheets(DATASOURCEFEUIL).Cells(ligne_insertion, 5) = ComboBox_fonct.Value

        Sheets(DATASOURCEFEUIL).Cells(ligne_insertion, 6) = CDate(TextBox_d_deb.Value)

        MsgBox "votre agent à bien été ajouté", vbOKOnly + vbInformation, "CONFIRMATION"

    End If

End Sub

Private Sub Cmd_Recherche_Click()

    If Not Cmd_search.Value = "" Then

        Dim no_ligne As Integer

        no_ligne = Cmd_search.ListIndex + 2

        ComboBox_fonct.Value = Cells(no_ligne, 5)

        TextBox_name.Value = Cells(no_ligne, 4)

        TextBox_d_deb = Cells(no_ligne, 6)

        Else

    End If

    CommandButton_enregister.Enabled = False

End Sub

Private Sub Cmd_change_Click()

    If Not Cmd_search.Value = "" Then

    Sheets("Cfg").Select

    modif = Cmd_search.ListIndex + 2

    Cells(modif, 5) = ComboBox_fonct.Value

    Cells(modif, 4) = TextBox_name.Value

    Cells(modif, 6) = TextBox_d_deb

    MsgBox ("Modification effectuée")

    Else

    MsgBox ("Veuillez sélectionner le Nom & Prénom de la personne à modifier")

    End If

    Unload Usf_Pers

    Usf_Pers.Show

End Sub

Private Sub CommandButton_annuler_Click()

    Unload Me

End Sub

Merci,

Bonjour,

il y a une réponse sur l'autre forum !!!

Bonjour,

Exemple

Boisgontier

Bonjour,

Exemple

Boisgontier

Merci beaucoup

Comment faire pour que les entête soit le frame liste du personnel

Bonjour,

Exemple

Boisgontier

Merci beaucoup

Rechercher des sujets similaires à "listbox qui rempli pas"