VBA Excel - modification de données capricieuse

Résolu/Fermé
TonyLucky - 20 nov. 2014 à 18:46
 TonyLucky - 21 nov. 2014 à 16:44
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


A voir également:

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
21 nov. 2014 à 09:32
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
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