Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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
...

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.
 

NONO14

XLDnaute Impliqué
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
 

ChTi160

XLDnaute Barbatruc
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:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…