XL 2010 [RESOLU] Problème de référence dans Listbox

hatem1234

XLDnaute Junior
Bonjour,

J'essaye d'afficher des données filtrées dans ListBox

L'affichage fonctionne bien avec la fonction ListBox1.AddItem mais lorsque je clique sur un élément de la Listbox pour afficher les détails dans des Textbox, ce sont les données d'un autre élément qui sont pris en compte

Je suis sur que ctte situation a déjà été posée dans ce forum mais je ne trouve aucune discussion qui répond à ma question

Voici le code pour ajouter des éléments à la listeBox :

Private Sub Affiche_Liste()

With Me.ListBox1

.ColumnCount = 4
.ColumnWidths = "80;100;120;80" 'Statut,Nom, Prénom, CodePostal
.Clear

End With

Dim k, i
k = 0
With Sheets("Data")
For i = 3 To .[A65000].End(xlUp).row
If .Cells(i, 2) = "TempsPlein" Then
Me.ListBox1.AddItem
Me.ListBox1.List(k, 0) = .Cells(i, 2) 'Statut
Me.ListBox1.List(k, 1) = .Cells(i, 3) 'Nom
Me.ListBox1.List(k, 2) = .Cells(i, 4) 'Prénom
Me.ListBox1.List(k, 3) = .Cells(i, 8) 'CodePostal

k = k + 1
End If
Next i
End With

End Sub

Voici le code pour afficher dans des texxbox :

Private Sub ListBox1_Click()

Dim Ligne As Long
Ligne = Me.ListBox1.ListIndex + 3

With Sheets("Data")

txt_date = .Range("A" & Ligne)
txt_statut = .Range("B" & Ligne)
txt_nom = .Range("C" & Ligne)
txt_prenom = .Range("D" & Ligne)
txt_ddn = .Range("E" & Ligne)
txt_tel = .Range("F" & Ligne)
txt_adresse = .Range("G" & Ligne)
txt_codepostal = .Range("H" & Ligne)

End With

End Sub

Merci pour vos conseils
 

Pièces jointes

  • ListBox_click.xlsm
    35.8 KB · Affichages: 42
Dernière édition:

hatem1234

XLDnaute Junior
Bonjour Chris,
J'ai seulement modifié la Ligne par ta formule et ça fonctionne parfaitement bien
Je vais rajouter des données et modifier certains TempsPartiel par TempPlein pour faire des tests mais selon ce que je peux voir, c'est excellent
Un Gros Merci Chris et au plaisir
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour hatem1234, Chris401,

Une autre méthode consiste à ajouter une colonne masquée (largeur=0) à la ListBox1. Cette colonne est initialisée avec la ligne de l'enregistrement sur la feuille 'Data' : Me.ListBox1.List(k, 4) = i

Quand on clique sur la ListBox1, le numéro s'obtient par : Ligne = ListBox1.List(ListBox1.ListIndex, 4).

Cette méthode permet d'avoir des doublons parmi les noms et d'afficher le bon enregistrement malgré tout.
(voir fichier joint où les deux premiers temps pleins ont le même nom)
 

Pièces jointes

  • hatem1234- ListBox_click- v1.xlsm
    28.4 KB · Affichages: 62
Dernière édition:

Discussions similaires

Réponses
4
Affichages
261
Réponses
17
Affichages
1 K

Statistiques des forums

Discussions
312 963
Messages
2 093 996
Membres
105 906
dernier inscrit
aifa