VBA Excel - modification de données capricieuse

Résolu
TonyLucky -  
 TonyLucky -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
  2. TonyLucky
     
    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.
    0