Je me permets d'ouvrir un nouveau post sur cette question, car malgré les
conseils judicieux de MPI (qui m'ont permis de mieux gérer le QueryClose),
je ne m'en sors toujours pas avec la gestion du bouton Annuler.
J'aimerais pouvoir quitter un formulaire sans tenir compte de ce qui a pu
être saisie par erreur (par exemple une saisie, commencée dans un textbox)
en cliquant simplement sur le bouton Annuler. Avec ce bout de code, Excel ne
me le
permet pas.
Merci d'avance et promis je ne vous embêterai plus ce soir. Bonne fin de
soirée ou début de journée
Steph D
Sub Lance()
Load fmLeMien
fmLeMien.Show
End Sub
Private Sub UserForm_Activate()
txtMonNom.Text = ""
End Sub
Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(txtMonNom.Text) = 0 Then Exit Sub
If Len(txtMonNom.Text) <= 4 Then
MsgBox "Saisie 5 caractères minimum"
Cancel = True
End If
End Sub
Private Sub cmdOK_Click()
If txtMonNom = "" Then
MsgBox "Saisie obligatoire"
txtMonNom.SetFocus
Exit Sub
End If
Unload Me
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour Steph,
Voilà un petit secret, faut pas le dévoiler à tout le monde !!!
Je n'ai retenu que les 2 procédures pertinentes à la petite démonstration :
'Dans le haut du module du formulaire, 'Déclaration de la variable Dim Ok As Boolean
'------------------------------ Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean) cmdAnnuler_Click If Ok = True Then 'une chaîne de 5 espaces txtMonNom = " " Cancel = True Unload Me Else If Len(txtMonNom.Text) = 0 Then Exit Sub If Len(txtMonNom.Text) <= 4 Then MsgBox "Saisie 5 caractères minimum" Cancel = True End If End If
End Sub '------------------------------ Sub cmdAnnuler_Click() Ok = True End Sub '------------------------------
Salutations!
"Steph_D" a écrit dans le message de news: 430ce7c2$0$24727$ Bonsoir,
Je me permets d'ouvrir un nouveau post sur cette question, car malgré les conseils judicieux de MPI (qui m'ont permis de mieux gérer le QueryClose), je ne m'en sors toujours pas avec la gestion du bouton Annuler. J'aimerais pouvoir quitter un formulaire sans tenir compte de ce qui a pu être saisie par erreur (par exemple une saisie, commencée dans un textbox) en cliquant simplement sur le bouton Annuler. Avec ce bout de code, Excel ne me le permet pas.
Merci d'avance et promis je ne vous embêterai plus ce soir. Bonne fin de soirée ou début de journée Steph D
Sub Lance() Load fmLeMien fmLeMien.Show End Sub
Private Sub UserForm_Activate() txtMonNom.Text = "" End Sub
Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Len(txtMonNom.Text) = 0 Then Exit Sub If Len(txtMonNom.Text) <= 4 Then MsgBox "Saisie 5 caractères minimum" Cancel = True End If End Sub
Private Sub cmdOK_Click() If txtMonNom = "" Then MsgBox "Saisie obligatoire" txtMonNom.SetFocus Exit Sub End If Unload Me End Sub
Private Sub cmdAnnuler_Click() Unload Me End Sub
Bonjour Steph,
Voilà un petit secret, faut pas le dévoiler à tout le monde !!!
Je n'ai retenu que les 2 procédures pertinentes à la petite démonstration :
'Dans le haut du module du formulaire,
'Déclaration de la variable
Dim Ok As Boolean
'------------------------------
Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean)
cmdAnnuler_Click
If Ok = True Then
'une chaîne de 5 espaces
txtMonNom = " "
Cancel = True
Unload Me
Else
If Len(txtMonNom.Text) = 0 Then Exit Sub
If Len(txtMonNom.Text) <= 4 Then
MsgBox "Saisie 5 caractères minimum"
Cancel = True
End If
End If
End Sub
'------------------------------
Sub cmdAnnuler_Click()
Ok = True
End Sub
'------------------------------
Salutations!
"Steph_D" <Steph_D@caramail.com> a écrit dans le message de news: 430ce7c2$0$24727$636a15ce@news.free.fr...
Bonsoir,
Je me permets d'ouvrir un nouveau post sur cette question, car malgré les
conseils judicieux de MPI (qui m'ont permis de mieux gérer le QueryClose),
je ne m'en sors toujours pas avec la gestion du bouton Annuler.
J'aimerais pouvoir quitter un formulaire sans tenir compte de ce qui a pu
être saisie par erreur (par exemple une saisie, commencée dans un textbox)
en cliquant simplement sur le bouton Annuler. Avec ce bout de code, Excel ne
me le
permet pas.
Merci d'avance et promis je ne vous embêterai plus ce soir. Bonne fin de
soirée ou début de journée
Steph D
Sub Lance()
Load fmLeMien
fmLeMien.Show
End Sub
Private Sub UserForm_Activate()
txtMonNom.Text = ""
End Sub
Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(txtMonNom.Text) = 0 Then Exit Sub
If Len(txtMonNom.Text) <= 4 Then
MsgBox "Saisie 5 caractères minimum"
Cancel = True
End If
End Sub
Private Sub cmdOK_Click()
If txtMonNom = "" Then
MsgBox "Saisie obligatoire"
txtMonNom.SetFocus
Exit Sub
End If
Unload Me
End Sub
Voilà un petit secret, faut pas le dévoiler à tout le monde !!!
Je n'ai retenu que les 2 procédures pertinentes à la petite démonstration :
'Dans le haut du module du formulaire, 'Déclaration de la variable Dim Ok As Boolean
'------------------------------ Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean) cmdAnnuler_Click If Ok = True Then 'une chaîne de 5 espaces txtMonNom = " " Cancel = True Unload Me Else If Len(txtMonNom.Text) = 0 Then Exit Sub If Len(txtMonNom.Text) <= 4 Then MsgBox "Saisie 5 caractères minimum" Cancel = True End If End If
End Sub '------------------------------ Sub cmdAnnuler_Click() Ok = True End Sub '------------------------------
Salutations!
"Steph_D" a écrit dans le message de news: 430ce7c2$0$24727$ Bonsoir,
Je me permets d'ouvrir un nouveau post sur cette question, car malgré les conseils judicieux de MPI (qui m'ont permis de mieux gérer le QueryClose), je ne m'en sors toujours pas avec la gestion du bouton Annuler. J'aimerais pouvoir quitter un formulaire sans tenir compte de ce qui a pu être saisie par erreur (par exemple une saisie, commencée dans un textbox) en cliquant simplement sur le bouton Annuler. Avec ce bout de code, Excel ne me le permet pas.
Merci d'avance et promis je ne vous embêterai plus ce soir. Bonne fin de soirée ou début de journée Steph D
Sub Lance() Load fmLeMien fmLeMien.Show End Sub
Private Sub UserForm_Activate() txtMonNom.Text = "" End Sub
Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Len(txtMonNom.Text) = 0 Then Exit Sub If Len(txtMonNom.Text) <= 4 Then MsgBox "Saisie 5 caractères minimum" Cancel = True End If End Sub
Private Sub cmdOK_Click() If txtMonNom = "" Then MsgBox "Saisie obligatoire" txtMonNom.SetFocus Exit Sub End If Unload Me End Sub
Private Sub cmdAnnuler_Click() Unload Me End Sub
jps
entre nous, tu as raison d'être discret, denis, avec tous ces gens qui nous épient... jps
"michdenis" a écrit dans le message de news: %
Bonjour Steph,
Voilà un petit secret, faut pas le dévoiler à tout le monde !!!
entre nous, tu as raison d'être discret, denis, avec tous ces gens qui nous
épient...
jps
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23bsWbMQqFHA.3520@tk2msftngp13.phx.gbl...
Bonjour Steph,
Voilà un petit secret, faut pas le dévoiler à tout le monde !!!
entre nous, tu as raison d'être discret, denis, avec tous ces gens qui nous épient... jps
"michdenis" a écrit dans le message de news: %
Bonjour Steph,
Voilà un petit secret, faut pas le dévoiler à tout le monde !!!
michdenis
Justement, j'espère que tu n'en dévoilera pas le secret ! ;-))
Certaines attentes pourraient être déçu
Salutations!
"jps" a écrit dans le message de news: entre nous, tu as raison d'être discret, denis, avec tous ces gens qui nous épient... jps
"michdenis" a écrit dans le message de news: %
Bonjour Steph,
Voilà un petit secret, faut pas le dévoiler à tout le monde !!!
Justement, j'espère que tu n'en dévoilera pas le secret ! ;-))
Certaines attentes pourraient être déçu
Salutations!
"jps" <vaderetrosp@mas> a écrit dans le message de news: ucssLWQqFHA.3108@TK2MSFTNGP12.phx.gbl...
entre nous, tu as raison d'être discret, denis, avec tous ces gens qui nous
épient...
jps
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
%23bsWbMQqFHA.3520@tk2msftngp13.phx.gbl...
Bonjour Steph,
Voilà un petit secret, faut pas le dévoiler à tout le monde !!!
Justement, j'espère que tu n'en dévoilera pas le secret ! ;-))
Certaines attentes pourraient être déçu
Salutations!
"jps" a écrit dans le message de news: entre nous, tu as raison d'être discret, denis, avec tous ces gens qui nous épient... jps
"michdenis" a écrit dans le message de news: %
Bonjour Steph,
Voilà un petit secret, faut pas le dévoiler à tout le monde !!!
michdenis
Bonjour Steph,
La façon la plus simple pour valider le contenu des "champs" d'un formulaire, c'est lors d'un clic sur un bouton de commande dont la seule et unique fonction est de s'assurer que les conditions minimales pour valider cet "enregistrement" sont respectées.
Ceci suppose que le développeur a bien défini ces conditions et qu'il les a traduites dans UNE procédure générale de vérification.
L'événement On_Exit est la première procédure à s'exécuter peu importe ce que l'on fasse. Que ce soit cliquer sur un bouton de commande ou la sélection d'un autre textbox. Je ne vois pas comment on pourrait empècher cette sub de s'exécuter ! à mon avis de vouloir vérifier si la chaîne de caractères à 5 digits à la sortie du textbox est une perte de temps car lors de la vérification générale, il va falloir vérifier si ce testbox est vide ou non ... car ce n'est pas la procédure On_exit qui va obliger l'usager à y entrer pour saisir ces données !
De vouloir utiliser de boutons de commande au moment où on "exige" que l'usager se comporte d'une façon spécifique est inopportum. tu ne peux pas jouer à la police et tout permettre en même temps !!! c'est l'un ou l'autre !:
Sur l'Événement "enter" , on désactive les boutons "Annuler" et "ok" . L'usager n'aura d'autre choix que de taper 5 caractères.
Seulement à titre d'exemple, voici un bout de code ... tu peux le peaufiner !!!
'------------------------ Private Sub txtMonNom_Enter()
End Sub '------------------------ Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'If Len(txtMonNom.Text) = 0 Then Exit Sub If Len(txtMonNom.Text) <= 4 Then MsgBox "Saisie 5 caractères minimum" res = MsgBox("voulez-vous continuer ?", vbCritical + vbYesNo, "Attentiion") If res = vbNo Then Me.cmdOk.Enabled = True Me.cmdAnnuler.Enabled = True Else Cancel = True Me.txtMonNom.SelStart = 0 Me.txtMonNom.SelLength = Len(Me.txtMonNom) End If Else Me.cmdOk.Enabled = True Me.cmdAnnuler.Enabled = True End If
End Sub '------------------------
Salutations!
"Steph_D" a écrit dans le message de news: 430ce7c2$0$24727$ Bonsoir,
Je me permets d'ouvrir un nouveau post sur cette question, car malgré les conseils judicieux de MPI (qui m'ont permis de mieux gérer le QueryClose), je ne m'en sors toujours pas avec la gestion du bouton Annuler. J'aimerais pouvoir quitter un formulaire sans tenir compte de ce qui a pu être saisie par erreur (par exemple une saisie, commencée dans un textbox) en cliquant simplement sur le bouton Annuler. Avec ce bout de code, Excel ne me le permet pas.
Merci d'avance et promis je ne vous embêterai plus ce soir. Bonne fin de soirée ou début de journée Steph D
Sub Lance() Load fmLeMien fmLeMien.Show End Sub
Private Sub UserForm_Activate() txtMonNom.Text = "" End Sub
Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Len(txtMonNom.Text) = 0 Then Exit Sub If Len(txtMonNom.Text) <= 4 Then MsgBox "Saisie 5 caractères minimum" Cancel = True End If End Sub
Private Sub cmdOK_Click() If txtMonNom = "" Then MsgBox "Saisie obligatoire" txtMonNom.SetFocus Exit Sub End If Unload Me End Sub
Private Sub cmdAnnuler_Click() Unload Me End Sub
Bonjour Steph,
La façon la plus simple pour valider le contenu des "champs" d'un formulaire, c'est lors d'un clic sur un bouton de commande dont la
seule et unique fonction est de s'assurer que les conditions minimales pour valider cet "enregistrement" sont respectées.
Ceci suppose que le développeur a bien défini ces conditions et qu'il les a traduites dans UNE procédure générale de vérification.
L'événement On_Exit est la première procédure à s'exécuter peu importe ce que l'on fasse. Que ce soit cliquer sur un bouton de
commande ou la sélection d'un autre textbox. Je ne vois pas comment on pourrait empècher cette sub de s'exécuter !
à mon avis de vouloir vérifier si la chaîne de caractères à 5 digits à la sortie du textbox est une perte de temps car lors de la
vérification générale, il va falloir vérifier si ce testbox est vide ou non ... car ce n'est pas la procédure On_exit qui va obliger
l'usager à y entrer pour saisir ces données !
De vouloir utiliser de boutons de commande au moment où on "exige" que l'usager se comporte d'une façon spécifique est inopportum.
tu ne peux pas jouer à la police et tout permettre en même temps !!! c'est l'un ou l'autre !:
Sur l'Événement "enter" , on désactive les boutons "Annuler" et "ok" . L'usager n'aura d'autre choix que de taper 5 caractères.
Seulement à titre d'exemple, voici un bout de code ... tu peux le peaufiner !!!
'------------------------
Private Sub txtMonNom_Enter()
End Sub
'------------------------
Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'If Len(txtMonNom.Text) = 0 Then Exit Sub
If Len(txtMonNom.Text) <= 4 Then
MsgBox "Saisie 5 caractères minimum"
res = MsgBox("voulez-vous continuer ?", vbCritical + vbYesNo, "Attentiion")
If res = vbNo Then
Me.cmdOk.Enabled = True
Me.cmdAnnuler.Enabled = True
Else
Cancel = True
Me.txtMonNom.SelStart = 0
Me.txtMonNom.SelLength = Len(Me.txtMonNom)
End If
Else
Me.cmdOk.Enabled = True
Me.cmdAnnuler.Enabled = True
End If
End Sub
'------------------------
Salutations!
"Steph_D" <Steph_D@caramail.com> a écrit dans le message de news: 430ce7c2$0$24727$636a15ce@news.free.fr...
Bonsoir,
Je me permets d'ouvrir un nouveau post sur cette question, car malgré les
conseils judicieux de MPI (qui m'ont permis de mieux gérer le QueryClose),
je ne m'en sors toujours pas avec la gestion du bouton Annuler.
J'aimerais pouvoir quitter un formulaire sans tenir compte de ce qui a pu
être saisie par erreur (par exemple une saisie, commencée dans un textbox)
en cliquant simplement sur le bouton Annuler. Avec ce bout de code, Excel ne
me le
permet pas.
Merci d'avance et promis je ne vous embêterai plus ce soir. Bonne fin de
soirée ou début de journée
Steph D
Sub Lance()
Load fmLeMien
fmLeMien.Show
End Sub
Private Sub UserForm_Activate()
txtMonNom.Text = ""
End Sub
Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(txtMonNom.Text) = 0 Then Exit Sub
If Len(txtMonNom.Text) <= 4 Then
MsgBox "Saisie 5 caractères minimum"
Cancel = True
End If
End Sub
Private Sub cmdOK_Click()
If txtMonNom = "" Then
MsgBox "Saisie obligatoire"
txtMonNom.SetFocus
Exit Sub
End If
Unload Me
End Sub
La façon la plus simple pour valider le contenu des "champs" d'un formulaire, c'est lors d'un clic sur un bouton de commande dont la seule et unique fonction est de s'assurer que les conditions minimales pour valider cet "enregistrement" sont respectées.
Ceci suppose que le développeur a bien défini ces conditions et qu'il les a traduites dans UNE procédure générale de vérification.
L'événement On_Exit est la première procédure à s'exécuter peu importe ce que l'on fasse. Que ce soit cliquer sur un bouton de commande ou la sélection d'un autre textbox. Je ne vois pas comment on pourrait empècher cette sub de s'exécuter ! à mon avis de vouloir vérifier si la chaîne de caractères à 5 digits à la sortie du textbox est une perte de temps car lors de la vérification générale, il va falloir vérifier si ce testbox est vide ou non ... car ce n'est pas la procédure On_exit qui va obliger l'usager à y entrer pour saisir ces données !
De vouloir utiliser de boutons de commande au moment où on "exige" que l'usager se comporte d'une façon spécifique est inopportum. tu ne peux pas jouer à la police et tout permettre en même temps !!! c'est l'un ou l'autre !:
Sur l'Événement "enter" , on désactive les boutons "Annuler" et "ok" . L'usager n'aura d'autre choix que de taper 5 caractères.
Seulement à titre d'exemple, voici un bout de code ... tu peux le peaufiner !!!
'------------------------ Private Sub txtMonNom_Enter()
End Sub '------------------------ Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'If Len(txtMonNom.Text) = 0 Then Exit Sub If Len(txtMonNom.Text) <= 4 Then MsgBox "Saisie 5 caractères minimum" res = MsgBox("voulez-vous continuer ?", vbCritical + vbYesNo, "Attentiion") If res = vbNo Then Me.cmdOk.Enabled = True Me.cmdAnnuler.Enabled = True Else Cancel = True Me.txtMonNom.SelStart = 0 Me.txtMonNom.SelLength = Len(Me.txtMonNom) End If Else Me.cmdOk.Enabled = True Me.cmdAnnuler.Enabled = True End If
End Sub '------------------------
Salutations!
"Steph_D" a écrit dans le message de news: 430ce7c2$0$24727$ Bonsoir,
Je me permets d'ouvrir un nouveau post sur cette question, car malgré les conseils judicieux de MPI (qui m'ont permis de mieux gérer le QueryClose), je ne m'en sors toujours pas avec la gestion du bouton Annuler. J'aimerais pouvoir quitter un formulaire sans tenir compte de ce qui a pu être saisie par erreur (par exemple une saisie, commencée dans un textbox) en cliquant simplement sur le bouton Annuler. Avec ce bout de code, Excel ne me le permet pas.
Merci d'avance et promis je ne vous embêterai plus ce soir. Bonne fin de soirée ou début de journée Steph D
Sub Lance() Load fmLeMien fmLeMien.Show End Sub
Private Sub UserForm_Activate() txtMonNom.Text = "" End Sub
Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Len(txtMonNom.Text) = 0 Then Exit Sub If Len(txtMonNom.Text) <= 4 Then MsgBox "Saisie 5 caractères minimum" Cancel = True End If End Sub
Private Sub cmdOK_Click() If txtMonNom = "" Then MsgBox "Saisie obligatoire" txtMonNom.SetFocus Exit Sub End If Unload Me End Sub
Private Sub cmdAnnuler_Click() Unload Me End Sub
Steph_D
Bonjour MichDenis,
Merci de t'être torturé l'esprit sur ma question ;o))
J'ai testé la procédure suivante secrète qui est parfaite par rapport à ce que j'ai demandé, à savoir quitter le formulaire sans enregistrement de données même si une saisie incorrecte ou pas a été effectuée. Mais dans ce cas, mon bouton OK devient inutile. J'ai essayé en vain de poser une condition sur la ligne "cmdAnnuler_Click", du type if cmdAnnuler_Click then etc., ou de chercher avec l'ActiveControl.
Donc je vais suivre tes conseils de sage et utiliser une procédure de validation générale (avec toutes mes conditions) liée à un bouton plutôt que l'évènement Exit. Et je me garde sous le coude ta procédure avec Enter/Exit.
Merci encore Steph D
Dim Ok As Boolean '------------------------------ Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean) cmdAnnuler_Click If Ok = True Then 'une chaîne de 5 espaces txtMonNom = " " Cancel = True Unload Me Else If Len(txtMonNom.Text) = 0 Then Exit Sub If Len(txtMonNom.Text) <= 4 Then MsgBox "Saisie 5 caractères minimum" Cancel = True End If End If
End Sub '------------------------------ Sub cmdAnnuler_Click() Ok = True End Sub
Bonjour MichDenis,
Merci de t'être torturé l'esprit sur ma question ;o))
J'ai testé la procédure suivante secrète qui est parfaite par rapport à ce
que j'ai demandé, à savoir quitter le formulaire sans enregistrement de
données même si une saisie incorrecte ou pas a été effectuée. Mais dans ce
cas, mon bouton OK devient inutile.
J'ai essayé en vain de poser une condition sur la ligne "cmdAnnuler_Click",
du type if cmdAnnuler_Click then etc., ou de chercher avec l'ActiveControl.
Donc je vais suivre tes conseils de sage et utiliser une procédure de
validation générale (avec toutes mes conditions) liée à un bouton plutôt
que l'évènement Exit. Et je me garde sous le coude ta procédure avec
Enter/Exit.
Merci encore
Steph D
Dim Ok As Boolean
'------------------------------
Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean)
cmdAnnuler_Click
If Ok = True Then
'une chaîne de 5 espaces
txtMonNom = " "
Cancel = True
Unload Me
Else
If Len(txtMonNom.Text) = 0 Then Exit Sub
If Len(txtMonNom.Text) <= 4 Then
MsgBox "Saisie 5 caractères minimum"
Cancel = True
End If
End If
End Sub
'------------------------------
Sub cmdAnnuler_Click()
Ok = True
End Sub
Merci de t'être torturé l'esprit sur ma question ;o))
J'ai testé la procédure suivante secrète qui est parfaite par rapport à ce que j'ai demandé, à savoir quitter le formulaire sans enregistrement de données même si une saisie incorrecte ou pas a été effectuée. Mais dans ce cas, mon bouton OK devient inutile. J'ai essayé en vain de poser une condition sur la ligne "cmdAnnuler_Click", du type if cmdAnnuler_Click then etc., ou de chercher avec l'ActiveControl.
Donc je vais suivre tes conseils de sage et utiliser une procédure de validation générale (avec toutes mes conditions) liée à un bouton plutôt que l'évènement Exit. Et je me garde sous le coude ta procédure avec Enter/Exit.
Merci encore Steph D
Dim Ok As Boolean '------------------------------ Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean) cmdAnnuler_Click If Ok = True Then 'une chaîne de 5 espaces txtMonNom = " " Cancel = True Unload Me Else If Len(txtMonNom.Text) = 0 Then Exit Sub If Len(txtMonNom.Text) <= 4 Then MsgBox "Saisie 5 caractères minimum" Cancel = True End If End If
End Sub '------------------------------ Sub cmdAnnuler_Click() Ok = True End Sub
michdenis
Bonjour Steph,
La procédure proposée est à ignorer. À chaque fois que tu vas sortir du textbox, le formulaire va se fermer pour la seule et unique raison qu'il est impossible d'interdire l'exécution de son code !
Salutations!
"Steph_D" a écrit dans le message de news: dek79m$rr1$ Bonjour MichDenis,
Merci de t'être torturé l'esprit sur ma question ;o))
J'ai testé la procédure suivante secrète qui est parfaite par rapport à ce que j'ai demandé, à savoir quitter le formulaire sans enregistrement de données même si une saisie incorrecte ou pas a été effectuée. Mais dans ce cas, mon bouton OK devient inutile. J'ai essayé en vain de poser une condition sur la ligne "cmdAnnuler_Click", du type if cmdAnnuler_Click then etc., ou de chercher avec l'ActiveControl.
Donc je vais suivre tes conseils de sage et utiliser une procédure de validation générale (avec toutes mes conditions) liée à un bouton plutôt que l'évènement Exit. Et je me garde sous le coude ta procédure avec Enter/Exit.
Merci encore Steph D
Dim Ok As Boolean '------------------------------ Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean) cmdAnnuler_Click If Ok = True Then 'une chaîne de 5 espaces txtMonNom = " " Cancel = True Unload Me Else If Len(txtMonNom.Text) = 0 Then Exit Sub If Len(txtMonNom.Text) <= 4 Then MsgBox "Saisie 5 caractères minimum" Cancel = True End If End If
End Sub '------------------------------ Sub cmdAnnuler_Click() Ok = True End Sub
Bonjour Steph,
La procédure proposée est à ignorer. À chaque fois que tu vas sortir du textbox, le formulaire va se fermer pour la seule et unique
raison qu'il est impossible d'interdire l'exécution de son code !
Salutations!
"Steph_D" <steph_D@caramail.com> a écrit dans le message de news: dek79m$rr1$1@s1.news.oleane.net...
Bonjour MichDenis,
Merci de t'être torturé l'esprit sur ma question ;o))
J'ai testé la procédure suivante secrète qui est parfaite par rapport à ce
que j'ai demandé, à savoir quitter le formulaire sans enregistrement de
données même si une saisie incorrecte ou pas a été effectuée. Mais dans ce
cas, mon bouton OK devient inutile.
J'ai essayé en vain de poser une condition sur la ligne "cmdAnnuler_Click",
du type if cmdAnnuler_Click then etc., ou de chercher avec l'ActiveControl.
Donc je vais suivre tes conseils de sage et utiliser une procédure de
validation générale (avec toutes mes conditions) liée à un bouton plutôt
que l'évènement Exit. Et je me garde sous le coude ta procédure avec
Enter/Exit.
Merci encore
Steph D
Dim Ok As Boolean
'------------------------------
Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean)
cmdAnnuler_Click
If Ok = True Then
'une chaîne de 5 espaces
txtMonNom = " "
Cancel = True
Unload Me
Else
If Len(txtMonNom.Text) = 0 Then Exit Sub
If Len(txtMonNom.Text) <= 4 Then
MsgBox "Saisie 5 caractères minimum"
Cancel = True
End If
End If
End Sub
'------------------------------
Sub cmdAnnuler_Click()
Ok = True
End Sub
La procédure proposée est à ignorer. À chaque fois que tu vas sortir du textbox, le formulaire va se fermer pour la seule et unique raison qu'il est impossible d'interdire l'exécution de son code !
Salutations!
"Steph_D" a écrit dans le message de news: dek79m$rr1$ Bonjour MichDenis,
Merci de t'être torturé l'esprit sur ma question ;o))
J'ai testé la procédure suivante secrète qui est parfaite par rapport à ce que j'ai demandé, à savoir quitter le formulaire sans enregistrement de données même si une saisie incorrecte ou pas a été effectuée. Mais dans ce cas, mon bouton OK devient inutile. J'ai essayé en vain de poser une condition sur la ligne "cmdAnnuler_Click", du type if cmdAnnuler_Click then etc., ou de chercher avec l'ActiveControl.
Donc je vais suivre tes conseils de sage et utiliser une procédure de validation générale (avec toutes mes conditions) liée à un bouton plutôt que l'évènement Exit. Et je me garde sous le coude ta procédure avec Enter/Exit.
Merci encore Steph D
Dim Ok As Boolean '------------------------------ Private Sub txtMonNom_Exit(ByVal Cancel As MSForms.ReturnBoolean) cmdAnnuler_Click If Ok = True Then 'une chaîne de 5 espaces txtMonNom = " " Cancel = True Unload Me Else If Len(txtMonNom.Text) = 0 Then Exit Sub If Len(txtMonNom.Text) <= 4 Then MsgBox "Saisie 5 caractères minimum" Cancel = True End If End If
End Sub '------------------------------ Sub cmdAnnuler_Click() Ok = True End Sub
Steph_D
Merci encore MichDenis pour ton aide, je progresse, je progresse ;o))) Bonne journée Steph
Merci encore MichDenis pour ton aide, je progresse, je progresse ;o)))
Bonne journée
Steph