Microsoft 365 Modification impossible d'une 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,
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

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

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.
 
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. 😉
 
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
 
- 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
3
Affichages
572
Retour