A voir également:
- [VBA] (excel) Lancement évènement sans raison
- Liste déroulante excel - Guide
- Mon pc freeze sans raison - Guide
- Excel compter cellule couleur sans vba - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
12 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
Modifié par lermite222 le 13/01/2012 à 01:27
Modifié par lermite222 le 13/01/2012 à 01:27
Bonjour,
Excel version ?
L'évènement TextBox_AfterUpdate() survient quand tu quitte un TextBox après l'avoir modifié, que ce soit par la souris ou le code.
Mais pour "voir" comment ça fonctionne..
Dans l'évènement TextBox_AfterUpdate() tu met un stop
Tu travail normalement..
Quand le code s'arrête sur le stop tu tape F8 pour passer à l'instruction suivante.
F8 à répétition jusqu'à retrouver l'origine, où si c'est par la souris tu verras pourquoi suivant ce que tu auras fais avant.
y a-t-il du code dans l'évènement TextBox_AfterUpdate() ?
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Excel version ?
L'évènement TextBox_AfterUpdate() survient quand tu quitte un TextBox après l'avoir modifié, que ce soit par la souris ou le code.
Mais pour "voir" comment ça fonctionne..
Dans l'évènement TextBox_AfterUpdate() tu met un stop
Tu travail normalement..
Quand le code s'arrête sur le stop tu tape F8 pour passer à l'instruction suivante.
F8 à répétition jusqu'à retrouver l'origine, où si c'est par la souris tu verras pourquoi suivant ce que tu auras fais avant.
y a-t-il du code dans l'évènement TextBox_AfterUpdate() ?
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Bonjour
Je me permets de compléter un peu ce qu'a écrit lermite222
Quand tu es arrêté sur le stop, utilise Affichage - Pile des appels pour voir d'où tu viens, plutôt que de faire F8 jusqu'à sortir du sub
Et il y a un autre cas où TextBox_AfterUpdate() peut être appelé : c'est tout bêtement celui où on l'appelle explicitement depuis le code. Commence donc par la fonction Recherche de l'éditeur pour voir s'il n'y aurait pas un appel quelque part...
Je me permets de compléter un peu ce qu'a écrit lermite222
Quand tu es arrêté sur le stop, utilise Affichage - Pile des appels pour voir d'où tu viens, plutôt que de faire F8 jusqu'à sortir du sub
Et il y a un autre cas où TextBox_AfterUpdate() peut être appelé : c'est tout bêtement celui où on l'appelle explicitement depuis le code. Commence donc par la fonction Recherche de l'éditeur pour voir s'il n'y aurait pas un appel quelque part...
Après utilisation de "Stop", j'ai exactement ce que je disais, l'évènement TextBox4_AfterUpdate() se lance exactement lorsque je clique sur une autre case du UserForm.
Il y a effectivement du code dans Textbox4_afterupdate() qui permet d'entrer son contenu dans une cellule, mais elle s'exécute anormalement et est donc vide lorsqu'elle s'exécute à nouveau, j'ai modifié une variable, ce qui fait que maintenant elle cherche une cellule 0 et bug donc et ne met pas "" dans ma cellule mais ça continu de bugger.
En tout cas merci pour la fonction "Stop", elle pourra m'être utile plus tard.
Merci pour l'aide
P.S. : En regardant la pile des appels, j'ai les informations suivantes :
VBAProject.UserFormAlchimieIngredient.TextBoxEffet4_AfterUpdate
[<Code non Basic>]
VBAProject.module1.Bouton1_Clic
La dernière ligne est liée au bouton dans la feuille excel et n'existe pas si je le lance depuis VBE
P.S. : Je suis sous excel 2007
Il y a effectivement du code dans Textbox4_afterupdate() qui permet d'entrer son contenu dans une cellule, mais elle s'exécute anormalement et est donc vide lorsqu'elle s'exécute à nouveau, j'ai modifié une variable, ce qui fait que maintenant elle cherche une cellule 0 et bug donc et ne met pas "" dans ma cellule mais ça continu de bugger.
En tout cas merci pour la fonction "Stop", elle pourra m'être utile plus tard.
Merci pour l'aide
P.S. : En regardant la pile des appels, j'ai les informations suivantes :
VBAProject.UserFormAlchimieIngredient.TextBoxEffet4_AfterUpdate
[<Code non Basic>]
VBAProject.module1.Bouton1_Clic
La dernière ligne est liée au bouton dans la feuille excel et n'existe pas si je le lance depuis VBE
P.S. : Je suis sous excel 2007
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
Modifié par lermite222 le 13/01/2012 à 12:26
Modifié par lermite222 le 13/01/2012 à 12:26
trouver un problème comme ça à l'aveuglette n'est pas évident, tu n'aurais pas des évènements MouseMove qui seraient employés ? ou MouseDown/Up
Tu à fais comme j'ai dis ? quand arret sur stop continuer avec F8 ?
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Tu à fais comme j'ai dis ? quand arret sur stop continuer avec F8 ?
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non je n'ai aucun évènement lié à la souris, les seuls évènement sont liés au clic sur des boutons, à la mise à jour des textbox, ou au lancement du UserForm (c'est un programme assez simple en fait me permettant de stocker plus facilement des informations sous forme de colonne), puis les récupérer sous certain critères.
Et j'ai effectivement fait tourner le programme de la première exécution du afterupdate jusqu'au bug avec F8
Et j'ai effectivement fait tourner le programme de la première exécution du afterupdate jusqu'au bug avec F8
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
13 janv. 2012 à 12:31
13 janv. 2012 à 12:31
tu répond pas à
Tu à fais comme j'ai dis ? quand arret sur stop continuer avec F8 ?
Tu à fais comme j'ai dis ? quand arret sur stop continuer avec F8 ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 759
13 janv. 2012 à 12:52
13 janv. 2012 à 12:52
Bonjour,
Je pense qu'effectivement, tout ton code ne serait pas de refus... Ca donnerait peut être une piste...
Là, à l'aveuglette...
Je pense qu'effectivement, tout ton code ne serait pas de refus... Ca donnerait peut être une piste...
Là, à l'aveuglette...
Bonjour,
Ok alors le voilà :
Le début du code :
Le code des boutons :
Le code des TextBox :
Les quelques fonctions créées à côté :
Le problème est tout simplement l'évènement TextBoxEffet4_AfterUpdate() se déclenche lorsque j'arrive sur la TextBoxNomIngredient, que j'y arrive par la souris ou avec tab.
Ok alors le voilà :
Le début du code :
Dim nouveau As Boolean Dim Identifiant As Byte Private Sub UserForm_Initialize() Range("IngredientRecherche").ClearContents End Sub
Le code des boutons :
Private Sub CommandButtonAcceder_Click() UserForm2.Show End Sub Private Sub CommandButtonFin_Click() End End Sub Private Sub CommandButtonNouveauIngredient_Click() FrameIngredient.Visible = True LabelNomIngredient.Visible = True TextBoxNomIngredient.Visible = True nouveau = True Identifiant = Range("NouvelIngredient").Value FrameIngredient.Caption = "Nouvel ingrédient" End Sub Private Sub CommandButtonModifierIngredient_Click() FrameIngredient.Visible = True LabelNomIngredient.Visible = True TextBoxNomIngredient.Visible = True nouveau = False FrameIngredient.Caption = "Modification d'un ingrédient existant" End Sub Private Sub CommandButtonTerminer_Click() nouveau = False EffetInvisible FrameIngredient.Visible = False LabelNomIngredient.Visible = False TextBoxNomIngredient.Visible = False TextBoxEmpty Identifiant = 0 End Sub
Le code des TextBox :
Private Sub TextBoxEffet1_AfterUpdate() Range("IngredientEffet1").Cells(Identifiant).Value = TextBoxEffet1.Value End Sub Private Sub TextBoxEffet2_AfterUpdate() Range("IngredientEffet2").Cells(Identifiant).Value = TextBoxEffet2.Value End Sub Private Sub TextBoxEffet3_AfterUpdate() Range("IngredientEffet3").Cells(Identifiant).Value = TextBoxEffet3.Value End Sub Private Sub TextBoxEffet4_AfterUpdate() Range("IngredientEffet4").Cells(Identifiant).Value = TextBoxEffet4.Value End Sub Private Sub TextBoxNomIngredient_AfterUpdate() MsgBox "AfterUpdate : TextBoxNomIngredient" Range("IngredientRecherche").Value = TextBoxNomIngredient.Value If (nouveau) Then If (Range("RechercheIngredient").Value = "") Then Range("Ingredient").Cells(Identifiant).Value = TextBoxNomIngredient.Value EffetVisible Range("IdentifiantIngredient").Cells(Identifiant).Value = Identifiant Else MsgBox "Ingrédient déjà existant" End If Else If (Range("RechercheIngredient").Value <> "") Then Identifiant = Range("RechercheIngredientIdentifiant").Value TextBoxEffet1.Value = Range("IngredientEffet1").Cells(Identifiant).Value TextBoxEffet2.Value = Range("IngredientEffet2").Cells(Identifiant).Value TextBoxEffet4.Value = Range("IngredientEffet4").Cells(Identifiant).Value TextBoxEffet3.Value = Range("IngredientEffet3").Cells(Identifiant).Value EffetVisible Else MsgBox "Ingrédient introuvable" End If End If End Sub
Les quelques fonctions créées à côté :
Sub EffetVisible() LabelEffet1.Visible = True LabelEffet2.Visible = True LabelEffet3.Visible = True LabelEffet4.Visible = True TextBoxEffet1.Visible = True TextBoxEffet2.Visible = True TextBoxEffet3.Visible = True TextBoxEffet4.Visible = True End Sub Sub EffetInvisible() LabelEffet1.Visible = False LabelEffet2.Visible = False LabelEffet3.Visible = False LabelEffet4.Visible = False TextBoxEffet1.Visible = False TextBoxEffet2.Visible = False TextBoxEffet3.Visible = False TextBoxEffet4.Visible = False End Sub Sub TextBoxEmpty() TextBoxNomIngredient.Value = "" TextBoxEffet1.Value = "" TextBoxEffet2.Value = "" TextBoxEffet4.Value = "" TextBoxEffet3.Value = "" End Sub
Le problème est tout simplement l'évènement TextBoxEffet4_AfterUpdate() se déclenche lorsque j'arrive sur la TextBoxNomIngredient, que j'y arrive par la souris ou avec tab.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
Modifié par lermite222 le 13/01/2012 à 14:52
Modifié par lermite222 le 13/01/2012 à 14:52
Il est LA ton probl...
met ces lignes en commentaire (je sais ca marchera plus ,mais c'est provisoire)
et vois si tu a encore ce phénomène !!
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
If (Range("RechercheIngredient").Value <> "") Then Identifiant = Range("RechercheIngredientIdentifiant").Value TextBoxEffet1.Value = Range("IngredientEffet1").Cells(Identifiant).Value TextBoxEffet2.Value = Range("IngredientEffet2").Cells(Identifiant).Value TextBoxEffet4.Value = Range("IngredientEffet4").Cells(Identifiant).Value TextBoxEffet3.Value = Range("IngredientEffet3").Cells(Identifiant).Value EffetVisible Else MsgBox "Ingrédient introuvable" End If End If
met ces lignes en commentaire (je sais ca marchera plus ,mais c'est provisoire)
et vois si tu a encore ce phénomène !!
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
13 janv. 2012 à 15:14
13 janv. 2012 à 15:14
Et tu pourrais déjà simplifier..
Appel>>
EffetVisible True si tu dois les voir ou EffetVisible False si tu dois les cacher
et tu supprime l'autre procédure >> EffetInvisible
Sub EffetVisible( B as boolean) LabelEffet1.Visible = B LabelEffet2.Visible = B LabelEffet3.Visible = B LabelEffet4.Visible = B TextBoxEffet1.Visible = B TextBoxEffet2.Visible = B TextBoxEffet3.Visible = B TextBoxEffet4.Visible = B End Sub
Appel>>
EffetVisible True si tu dois les voir ou EffetVisible False si tu dois les cacher
et tu supprime l'autre procédure >> EffetInvisible
Merci pour le conseil.
Sinon même en mettant :
En commentaire, le programme continu de lancer le afterupdate sans raison apparente. C'est seulement celui de TextBoxEffet4 qui se lance.
Qui plus est ça se lance sans passer par ce textboxnomingredient_afterupdate.
Sinon même en mettant :
TextBoxEffet1.Value = Range("IngredientEffet1").Cells(Identifiant).Value TextBoxEffet2.Value = Range("IngredientEffet2").Cells(Identifiant).Value TextBoxEffet4.Value = Range("IngredientEffet4").Cells(Identifiant).Value TextBoxEffet3.Value = Range("IngredientEffet3").Cells(Identifiant).Value
En commentaire, le programme continu de lancer le afterupdate sans raison apparente. C'est seulement celui de TextBoxEffet4 qui se lance.
Qui plus est ça se lance sans passer par ce textboxnomingredient_afterupdate.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
Modifié par lermite222 le 13/01/2012 à 16:53
Modifié par lermite222 le 13/01/2012 à 16:53
IngredientEffet1 >> C'est quoi ?
IngredientEffet2 >> c'est quoi, .. etc.
Identifiant >> C'est quoi ? où c'est déclarer ?
en fait ça plante mais parce que tu à des problème dans tes range, prochaine fois décrit AVEC EXACTITUDE le N° et le nom de l'erreur.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
IngredientEffet2 >> c'est quoi, .. etc.
Identifiant >> C'est quoi ? où c'est déclarer ?
en fait ça plante mais parce que tu à des problème dans tes range, prochaine fois décrit AVEC EXACTITUDE le N° et le nom de l'erreur.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
En fait ya ni N° ni nom d'erreur
De base j'ai pas d'erreur, c'est juste que l'évènement s'exécute alors qu'il ne devrait pas.
Quant à IngredientEffet1, etc. C'est les différentes plages de cellules nommées.
De base j'ai pas d'erreur, c'est juste que l'évènement s'exécute alors qu'il ne devrait pas.
Quant à IngredientEffet1, etc. C'est les différentes plages de cellules nommées.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
13 janv. 2012 à 17:28
13 janv. 2012 à 17:28
Pfooouuufff..
ET
Identifiant >> C'est quoi ? où c'est déclarer ?
Si tu veux que l'ont essaye de t'aidé la moindre chose c'est de répondre aux questions ?
ET
Identifiant >> C'est quoi ? où c'est déclarer ?
Si tu veux que l'ont essaye de t'aidé la moindre chose c'est de répondre aux questions ?