VBA Excel - modification de données capricieuse

Résolu
Bonjour à tous,

J'utilise un formulaire pour gérer des données stockées dans un onglet excel. Je crée, modifie ou supprime les infos contenues par des TextBox.

En modification, je n'arrive à prendre en compte que la modif de la première TextBox. Pour les autres, excel récupère les données de l'onglet. Je n'arrive pas à comprendre ce qui cloche dans mon code, même en pas à pas. Sauf à voir qu'excel récupère les anciennes données après la première ligne de mise à jour, sans comprendre pourquoi.

J'ai fait un petit fichier de démo :
http://cjoint.com/?0KusPLyf48Y

D'avance, merci de votre attention et de votre aide
Tony

2 réponses

  1. Bonjour,

    Merci d'avoir pris le temps de regarder ma question et de m'avoir apporté une réponse qui fonctionne.
    Je n'avais pas identifié cet appel récursif. Je n'y avais même pas du tout pensé !

    Bonne fin de journée,
    Tony.

    PS : bien que cochant la case "recevoir réponse", je ne reçois pas les réponses par mail et je ne peux donc pas clôturer cette discussion. Sans vouloir abuser de votre temps, pouvez-vous avoir la gentillesse de le faire pour moi. D'avance, merci.
    1. Bonjour,

      Pour une raison que je n'ai pas trouvee, en mode "programme", il y a un appel recurcif de la procedure: Private Sub ListBox1_Click() qui fait la relecture des cellules et la mise a jour des textboxs 2 et 3 mais pas la 1 (?????). En mode "pas a pas" en utilisant des points d'arret, cet appel recurcif est aleatoire

      les lignes en gras sont a ajouter chez vous

      j'ai palier a cette anomalie par un drapeau de modification:
      Flag_Modif


      Option Explicit

      Dim message As String
      Dim Marque As Byte
      Dim ii As Byte
      Dim derligne As Long, f As Long, i As Long, infos As Long

      Dim Flag_Modif As Boolean

      Private Sub A_Modifier_Click()

      If TextBox1.Value = vbNullString Then
      message = "Valeur nulle ! "
      MsgBox message, vbExclamation
      TextBox1.SetFocus
      Exit Sub
      End If

      Flag_Modif = True
      With Sheets("Info_Express")
      'copie les données
      .Range("C" & i + 5).Value = Me.TextBox1
      .Range("D" & i + 5).Value = Me.TextBox2
      .Range("E" & i + 5).Value = Me.TextBox3
      .Range("B" & i + 5).Value = format(Me.TextBox4, "mm/dd/yyyy")
      End With
      Flag_Modif = False

      Private Sub ListBox1_Click()

      If Flag_Modif Then Exit Sub