Microsoft 365 Modification impossible d'une TextBox

NONO14

XLDnaute Impliqué
Bonjour,
J'ai mis en place ces 2 codes qui permettent de la rapatrier les données d'une ListBox dans des TextBox après un clic sur une ligne et ensuite, après modification et en appuyant sur le bouton "Modifier" de remplacer les données existantes dans le TS (t_Noms) de la feuille "List_agents".
Hors, dès que je modifie une TextBox autre que le Nom, la donnée revient systématiquement après tabulation automatique à celle de la ListBox sans la modifier.
Pouvez-vous m'éclairer s'il vous plaît ? Je ne comprends pas.
Merci par avance

Code lorsque l'on clique sur une ligne de la ListBox
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_Nom.Value = .List(.ListIndex, 1)
         Me.Txt_Code.Value = .List(.ListIndex, 0)
         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

Module pour transférer les données modifiées vers le TS
Code:
Sub RemplacerTableau()
Dim Ws As Worksheet
Dim Tbl As ListObject
Dim Cell As Range
Dim CodRec As String

'On définie la feuille de calcul
    Set Ws = Sheets("Liste_agents")
    
'On définie le TS
    Set Tbl = Ws.ListObjects("t_Noms")
    
'On définie le code à rechercher
    CodRec = UfGestTemps.Txt_Code.Value

'On recherche le code dans la 1ère colonne du TS
    Set Cell = Tbl.ListColumns(1).DataBodyRange.Find(What:=CodRec, LookIn:=xlValues, LookAt:=xlWhole)

'Si le code est trouvé, on remplace les données de la ligne
    If Not Cell Is Nothing Then
        Cell.Offset(0, 1).Value = UfGestTemps.Txt_Nom.Value 'On remplace la valeur de la colonne 2
        Cell.Offset(0, 2).Value = UfGestTemps.Txt_Prénom.Value 'On remplace la valeur de la colonne 3
        Cell.Offset(0, 3).Value = UfGestTemps.Txt_Temps.Value 'On remplace la valeur de la colonne 4
    Else
        MsgBox "Code non trouvé"
    End If
End Sub
 

Pièces jointes

  • GestPersonnnel (3).xlsm
    498 KB · Affichages: 6
Solution
Une proposition modifiant le moins possible de choses (seulement 4 lignes de code à ajouter) :

- Ajouter une variable booléenne ayant pour portée le classeur.
VB:
Dim MaJ_en_cours As Boolean

- Mettre à True ladite variable au début de la macro But_ModifP1_Click et la remettre à False à la fin.
VB:
Private Sub But_ModifP1_Click()
'
    MaJ_en_cours = True
    RemplacerTableau
    MaJ_en_cours = False

End Sub

- Ajouter un test sur la valeur de ladite variable au début de la macro Lst_Employ_Click.
VB:
If MaJ_en_cours Then Exit Sub

NONO14

XLDnaute Impliqué
Re
Tu as posté le fichier ou tu as ce problème ?
Je regarde ce soir !
Jean marie
Le voici. Franchement j'ai cherché partout et j'ai essayé plusieurs codes sans succès. Celui dans le fichier est le dernier.
Merci sincèrement pour ton aide, je me suis fatigué à chercher et ça m'agace de ne pas avoir trouvé tout seul.
 

Pièces jointes

  • GestPersonnnel (3).xlsm
    500.8 KB · Affichages: 3

TooFatBoy

XLDnaute Barbatruc
Or, dès que je modifie une TextBox autre que le Nom, la donnée revient systématiquement après tabulation automatique à celle de la ListBox sans la modifier.
Pouvez-vous m'éclairer s'il vous plaît ? Je ne comprends pas.
Qu'appelles-tu "tabulation automatique" ?

Quand je modifie un champ et que je passe au champ suivant, je n'ai pas le problème que tu décris.
 

TooFatBoy

XLDnaute Barbatruc
Appuies sur le bouton modifier et tu verras que les données reviendront en arrière.
Ah oui, quand on appuie sur le bouton [Modifier], ça ne modifie rien et ça remet les données du TS ou de la ListBox, on est d'accord.

Je croyais que tu disais que c'était en passant d'un champ à l'autre (donc avec la touche de tabulation) que ça remettait, dans les champs d'édition, les données du TS.

Maintenant j'ai compris. Je regarde ça cette nuit. ;)
 

NONO14

XLDnaute Impliqué
Ah oui, quand on appuie sur le bouton [Modifier], ça ne modifie rien et ça remet les données du TS ou de la ListBox, on est d'accord.

Je croyais que tu disais que c'était en passant d'un champ à l'autre (donc avec la touche de tabulation) que ça remettait, dans les champs d'édition, les données du TS.

Maintenant j'ai compris. Je regarde ça cette nuit. ;)
Désolé pour mes mauvaises explications.
Reposes toi quand même, mon projet peut attendre.
Merci beaucoup
 

Discussions similaires

Réponses
49
Affichages
1 K

Statistiques des forums

Discussions
315 111
Messages
2 116 340
Membres
112 721
dernier inscrit
Ulricn