Microsoft 365 Récupération données ListBox dans TextBox

  • Initiateur de la discussion Initiateur de la discussion NONO14
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

NONO14

XLDnaute Impliqué
Bonjour,
Avec ce code, après un clic sur une ligne de ma ListBox (Lst_Employ) je récupére les données dans 4 TextBox (Txt_Code, Txt_Nom, Txt_Prénom, Txt_Temps).
Il fonctionne bien pour 3 TextBox sauf la Txt_Code où je suis obligé de cliquer sur une autre ligne pour le code s'affiche, ensuite je n'ai plus de soucis d'affichage.
Je ne comprends pas pourquoi ça fonctionne ainsi, j'ai certainement dû oublier quelque chose.
Pouvez-vous m'éclairer s'il vous plait ?
Merci par avance

VB:
Private Sub Lst_Employ_Click()

'Vérifie si une ligne a été sélectionné
    If Me.Lst_Employ.ListIndex <> -1 Then
    
'On récupère les valeurs de la ligne sélectionnée dans les TextBox
        Me.Txt_Code.Value = Me.Lst_Employ.List(Me.Lst_Employ.ListIndex, 0)
        Me.Txt_Nom.Value = Me.Lst_Employ.List(Me.Lst_Employ.ListIndex, 1)
        Me.Txt_Prénom.Value = Me.Lst_Employ.List(Me.Lst_Employ.ListIndex, 2)
        Me.Txt_Temps.Value = Me.Lst_Employ.List(Me.Lst_Employ.ListIndex, 3)
    End If

End Sub
 
Solution
Re
Bonjour sylvanu
j'allais le dire Lol
Ce qui serait plus logique , c'est de mettre le Control "Txt_Code" en première position sur le Userform!
Tu supprimes alors la procédure
VB:
Txt_Code_Change
ce que j'ai mis comme Procédure et qui semble fonctionné :
VB:
Private Sub Lst_Employ_Click()
'Vérifie si une ligne a été sélectionné
With Me
 With .Lst_Employ
    If .ListIndex <> -1 Then
'On récupère les valeurs de la ligne sélectionnée dans les TextBox
         Me.Txt_Code.Value = .List(.ListIndex, 0)
         Me.Txt_Nom.Value = .List(.ListIndex, 1)
         Me.Txt_Prénom.Value = .List(.ListIndex, 2)
         Me.Txt_Temps.Text = Application.Text(.List(.ListIndex, 3), "[h]:mm")
    End If
  End With
End With
End Sub
...
Re,
Inversez les lignes 1 et 2 comme ceci :
VB:
'On récupère les valeurs de la ligne sélectionnée dans les TextBox
        Me.Txt_Nom.Value = Me.Lst_Employ.List(Me.Lst_Employ.ListIndex, 1)
        Me.Txt_Code.Value = Me.Lst_Employ.List(Me.Lst_Employ.ListIndex, 0)
        Me.Txt_Prénom.Value = Me.Lst_Employ.List(Me.Lst_Employ.ListIndex, 2)
        Me.Txt_Temps.Value = Me.Lst_Employ.List(Me.Lst_Employ.ListIndex, 3)
Car si vous faites Code en premier, vous allez à Txt_Code_Change .... qui remet le Code à vide car Nom non présent. 😅
Il suffit de faire du pas à pas pour suivre le cheminement.
 
Re,
Inversez les lignes 1 et 2 comme ceci :
VB:
'On récupère les valeurs de la ligne sélectionnée dans les TextBox
        Me.Txt_Nom.Value = Me.Lst_Employ.List(Me.Lst_Employ.ListIndex, 1)
        Me.Txt_Code.Value = Me.Lst_Employ.List(Me.Lst_Employ.ListIndex, 0)
        Me.Txt_Prénom.Value = Me.Lst_Employ.List(Me.Lst_Employ.ListIndex, 2)
        Me.Txt_Temps.Value = Me.Lst_Employ.List(Me.Lst_Employ.ListIndex, 3)
Car si vous faites Code en premier, vous allez à Txt_Code_Change .... qui remet le Code à vide car Nom non présent. 😅
Il suffit de faire du pas à pas pour suivre le cheminement.
C'est vraiment tout bête... Je n'ai pas encore le reflex pas à pas, il va falloir que je m'y mette.
Merci beaucoup
Par contre le format [h]:mm est bien dans la ListBox, mais pas dans la TextBox "Txt_Temps" quand je clique sur une ligne de la ListBox
 
Re
Bonjour sylvanu
j'allais le dire Lol
Ce qui serait plus logique , c'est de mettre le Control "Txt_Code" en première position sur le Userform!
Tu supprimes alors la procédure
VB:
Txt_Code_Change
ce que j'ai mis comme Procédure et qui semble fonctionné :
VB:
Private Sub Lst_Employ_Click()
'Vérifie si une ligne a été sélectionné
With Me
 With .Lst_Employ
    If .ListIndex <> -1 Then
'On récupère les valeurs de la ligne sélectionnée dans les TextBox
         Me.Txt_Code.Value = .List(.ListIndex, 0)
         Me.Txt_Nom.Value = .List(.ListIndex, 1)
         Me.Txt_Prénom.Value = .List(.ListIndex, 2)
         Me.Txt_Temps.Text = Application.Text(.List(.ListIndex, 3), "[h]:mm")
    End If
  End With
End With
End Sub

Edit : à quoi sert ce "CodeAgent" qui s'affiche partout ?
Bonne fin de Journée
Jean marie
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
429
  • Question Question
Microsoft 365 ListBox TextBox
Réponses
5
Affichages
2 K
Retour