Où déclarer cette variable? A quoi fait réference FORCE , un objet, une instruction, une expression...........? Est-ce le TextBox, la UserForm ....? Suis novice, première année maternelle prog. ! Merci. -cphil-
> Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) > ' on teste si on veut "forcer le passage" > If FORCE_QUIT Then > Exit Sub ' hop on s'en va sans avertissement > End If > ' sinon cas général > If TextBox1.Text = "" Then ' penser à tester la propriété, pas le > controle entier > Cancel = False > MsgBox "tutu" > End If > End Sub > > > Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) > ' MsgBox "On passe dans cet evenement en premier" > FORCE_QUIT = True ' on force la variable à TRUE > End Sub
Jean-Marc a écrit:
> Voici une façon de faire:
>>Dim FORCE_QUIT As Boolean
Où déclarer cette variable?
A quoi fait réference FORCE , un objet, une instruction, une
expression...........?
Est-ce le TextBox, la UserForm ....?
Suis novice, première année maternelle prog. !
Merci.
-cphil-
> Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
> ' on teste si on veut "forcer le passage"
> If FORCE_QUIT Then
> Exit Sub ' hop on s'en va sans avertissement
> End If
> ' sinon cas général
> If TextBox1.Text = "" Then ' penser à tester la propriété, pas le
> controle entier
> Cancel = False
> MsgBox "tutu"
> End If
> End Sub
>
>
> Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
> ' MsgBox "On passe dans cet evenement en premier"
> FORCE_QUIT = True ' on force la variable à TRUE
> End Sub
Où déclarer cette variable? A quoi fait réference FORCE , un objet, une instruction, une expression...........? Est-ce le TextBox, la UserForm ....? Suis novice, première année maternelle prog. ! Merci. -cphil-
> Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) > ' on teste si on veut "forcer le passage" > If FORCE_QUIT Then > Exit Sub ' hop on s'en va sans avertissement > End If > ' sinon cas général > If TextBox1.Text = "" Then ' penser à tester la propriété, pas le > controle entier > Cancel = False > MsgBox "tutu" > End If > End Sub > > > Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) > ' MsgBox "On passe dans cet evenement en premier" > FORCE_QUIT = True ' on force la variable à TRUE > End Sub
François Picalausa
"cphil" <cazenave.(suffitspam) a écrit dans le message de news:uizgr%
Jean-Marc a écrit:
Voici une façon de faire:
>>Dim FORCE_QUIT As Boolean
Où déclarer cette variable? A quoi fait réference FORCE , un objet, une instruction, une expression...........? Est-ce le TextBox, la UserForm ....? Suis novice, première année maternelle prog. ! Merci. -cphil-
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) ' on teste si on veut "forcer le passage" If FORCE_QUIT Then Exit Sub ' hop on s'en va sans avertissement End If ' sinon cas général If TextBox1.Text = "" Then ' penser à tester la propriété, pas le controle entier Cancel = False MsgBox "tutu" End If End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ' MsgBox "On passe dans cet evenement en premier" FORCE_QUIT = True ' on force la variable à TRUE End Sub
Bonjour/soir,
Dim FORCE_QUIT doit se placer dans les déclarations, c'est à dire, avant tout sub, fonction, ...
a noter que dim ne spécifie pas la protée (espace/temps d'existence de la variable) et ici, elle sera publique sans raison. Autant utiliser une variable privée... Private FORCE_QUIT As Boolean.. ou comme dans mon exemple, Private Quit As Boolean
FORCE_QUIT signifie simplement forcer l'arrêt. ça ne fait référence à rien.. c'est juste une variable de plus.. comme on aurait pu écrire Private MaVariableQuiIndiqueSiOnPeutSauterLaVérificationOuPas As Boolean Mais généralement, il est plus agréable de travaille sur des noms plus courts (ForceQuit/Quit/IsClosing/...) de préférences explicite pour comprendre ce qu'on fait sans s'encombrer de noms à rallonge....
"cphil" <cazenave.(suffitspam)philippe@free.fr> a écrit dans le message
de news:uizgr%238xDHA.2360@TK2MSFTNGP10.phx.gbl
Jean-Marc a écrit:
Voici une façon de faire:
>>Dim FORCE_QUIT As Boolean
Où déclarer cette variable?
A quoi fait réference FORCE , un objet, une instruction, une
expression...........?
Est-ce le TextBox, la UserForm ....?
Suis novice, première année maternelle prog. !
Merci.
-cphil-
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
' on teste si on veut "forcer le passage"
If FORCE_QUIT Then
Exit Sub ' hop on s'en va sans avertissement
End If
' sinon cas général
If TextBox1.Text = "" Then ' penser à tester la propriété, pas
le controle entier
Cancel = False
MsgBox "tutu"
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer) ' MsgBox "On passe dans cet evenement en premier"
FORCE_QUIT = True ' on force la variable à TRUE
End Sub
Bonjour/soir,
Dim FORCE_QUIT doit se placer dans les déclarations, c'est à dire, avant
tout sub, fonction, ...
a noter que dim ne spécifie pas la protée (espace/temps d'existence de la
variable) et ici, elle sera publique sans raison.
Autant utiliser une variable privée...
Private FORCE_QUIT As Boolean.. ou comme dans mon exemple,
Private Quit As Boolean
FORCE_QUIT signifie simplement forcer l'arrêt. ça ne fait référence à rien..
c'est juste une variable de plus.. comme on aurait pu écrire
Private MaVariableQuiIndiqueSiOnPeutSauterLaVérificationOuPas As Boolean
Mais généralement, il est plus agréable de travaille sur des noms plus
courts (ForceQuit/Quit/IsClosing/...) de préférences explicite pour
comprendre ce qu'on fait sans s'encombrer de noms à rallonge....
"cphil" <cazenave.(suffitspam) a écrit dans le message de news:uizgr%
Jean-Marc a écrit:
Voici une façon de faire:
>>Dim FORCE_QUIT As Boolean
Où déclarer cette variable? A quoi fait réference FORCE , un objet, une instruction, une expression...........? Est-ce le TextBox, la UserForm ....? Suis novice, première année maternelle prog. ! Merci. -cphil-
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) ' on teste si on veut "forcer le passage" If FORCE_QUIT Then Exit Sub ' hop on s'en va sans avertissement End If ' sinon cas général If TextBox1.Text = "" Then ' penser à tester la propriété, pas le controle entier Cancel = False MsgBox "tutu" End If End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ' MsgBox "On passe dans cet evenement en premier" FORCE_QUIT = True ' on force la variable à TRUE End Sub
Bonjour/soir,
Dim FORCE_QUIT doit se placer dans les déclarations, c'est à dire, avant tout sub, fonction, ...
a noter que dim ne spécifie pas la protée (espace/temps d'existence de la variable) et ici, elle sera publique sans raison. Autant utiliser une variable privée... Private FORCE_QUIT As Boolean.. ou comme dans mon exemple, Private Quit As Boolean
FORCE_QUIT signifie simplement forcer l'arrêt. ça ne fait référence à rien.. c'est juste une variable de plus.. comme on aurait pu écrire Private MaVariableQuiIndiqueSiOnPeutSauterLaVérificationOuPas As Boolean Mais généralement, il est plus agréable de travaille sur des noms plus courts (ForceQuit/Quit/IsClosing/...) de préférences explicite pour comprendre ce qu'on fait sans s'encombrer de noms à rallonge....
"François Picalausa" a écrit dans le message de news:
Dim FORCE_QUIT doit se placer dans les déclarations, c'est à dire, avant tout sub, fonction, ...
a noter que dim ne spécifie pas la protée (espace/temps d'existence de la variable) et ici, elle sera publique sans raison. Autant utiliser une variable privée...
Hello,
C'est exact! Il est (très) judicieux de limiter la portée des variables au strict nécessaire. (Je ne l'avait pas fait pour ne pas introduire en plus la notion de Private pour Cphil.)
On devrait d'ailleurs peut être rappeler aux débutants les 2 ou 3 régles de Base pour un bon usage des variables:
- portée réduite au minimum - déclaration explicite du type + choix du type adapté - convention de nommage minimum, du genre: une variable nommée 'i' pour quoi que ce soit d'autre qu'un indice de boucle est une hérésie, etc.
Jean-Marc
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:u5AGmZ9xDHA.1908@TK2MSFTNGP10.phx.gbl...
Dim FORCE_QUIT doit se placer dans les déclarations, c'est à dire, avant
tout sub, fonction, ...
a noter que dim ne spécifie pas la protée (espace/temps d'existence de la
variable) et ici, elle sera publique sans raison.
Autant utiliser une variable privée...
Hello,
C'est exact! Il est (très) judicieux de limiter la portée des variables au
strict nécessaire.
(Je ne l'avait pas fait pour ne pas introduire en plus la notion de Private
pour Cphil.)
On devrait d'ailleurs peut être rappeler aux débutants les 2 ou 3 régles de
Base pour un
bon usage des variables:
- portée réduite au minimum
- déclaration explicite du type + choix du type adapté
- convention de nommage minimum, du genre:
une variable nommée 'i' pour quoi que ce soit d'autre qu'un indice de boucle
est une hérésie, etc.
"François Picalausa" a écrit dans le message de news:
Dim FORCE_QUIT doit se placer dans les déclarations, c'est à dire, avant tout sub, fonction, ...
a noter que dim ne spécifie pas la protée (espace/temps d'existence de la variable) et ici, elle sera publique sans raison. Autant utiliser une variable privée...
Hello,
C'est exact! Il est (très) judicieux de limiter la portée des variables au strict nécessaire. (Je ne l'avait pas fait pour ne pas introduire en plus la notion de Private pour Cphil.)
On devrait d'ailleurs peut être rappeler aux débutants les 2 ou 3 régles de Base pour un bon usage des variables:
- portée réduite au minimum - déclaration explicite du type + choix du type adapté - convention de nommage minimum, du genre: une variable nommée 'i' pour quoi que ce soit d'autre qu'un indice de boucle est une hérésie, etc.
Jean-Marc
cphil
Bonsoir,
J'ai testé ton exemple avec le focus sur le TextBox, mais ça ne fonctione pas, MsgBox "bla." s'affiche! Où est le problème?
Private Quit As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Not Quit And TextBox1.Text = "" Then MsgBox " bla.." Cancel = True End If End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Quit = True End Sub
Le code est écrit au niveau du UserForm.
Merci A+
"François Picalausa" a écrit dans le message de news:
"cphil" <cazenave.(suffitspam) a écrit dans le message de news:uizgr% Dim FORCE_QUIT doit se placer dans les déclarations, c'est à dire, avant tout sub, fonction, ...
a noter que dim ne spécifie pas la protée (espace/temps d'existence de la variable) et ici, elle sera publique sans raison. Autant utiliser une variable privée... Private FORCE_QUIT As Boolean.. ou comme dans mon exemple, Private Quit As Boolean
FORCE_QUIT signifie simplement forcer l'arrêt. ça ne fait référence à
rien..
c'est juste une variable de plus.. comme on aurait pu écrire Private MaVariableQuiIndiqueSiOnPeutSauterLaVérificationOuPas As Boolean Mais généralement, il est plus agréable de travaille sur des noms plus courts (ForceQuit/Quit/IsClosing/...) de préférences explicite pour comprendre ce qu'on fait sans s'encombrer de noms à rallonge....
J'ai testé ton exemple avec le focus sur
le TextBox, mais ça ne fonctione pas,
MsgBox "bla." s'affiche!
Où est le problème?
Private Quit As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not Quit And TextBox1.Text = "" Then
MsgBox " bla.."
Cancel = True
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Quit = True
End Sub
Le code est écrit au niveau du UserForm.
Merci A+
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:u5AGmZ9xDHA.1908@TK2MSFTNGP10.phx.gbl...
"cphil" <cazenave.(suffitspam)philippe@free.fr> a écrit dans le message
de news:uizgr%238xDHA.2360@TK2MSFTNGP10.phx.gbl
Dim FORCE_QUIT doit se placer dans les déclarations, c'est à dire, avant
tout sub, fonction, ...
a noter que dim ne spécifie pas la protée (espace/temps d'existence de la
variable) et ici, elle sera publique sans raison.
Autant utiliser une variable privée...
Private FORCE_QUIT As Boolean.. ou comme dans mon exemple,
Private Quit As Boolean
FORCE_QUIT signifie simplement forcer l'arrêt. ça ne fait référence à
rien..
c'est juste une variable de plus.. comme on aurait pu écrire
Private MaVariableQuiIndiqueSiOnPeutSauterLaVérificationOuPas As Boolean
Mais généralement, il est plus agréable de travaille sur des noms plus
courts (ForceQuit/Quit/IsClosing/...) de préférences explicite pour
comprendre ce qu'on fait sans s'encombrer de noms à rallonge....
J'ai testé ton exemple avec le focus sur le TextBox, mais ça ne fonctione pas, MsgBox "bla." s'affiche! Où est le problème?
Private Quit As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Not Quit And TextBox1.Text = "" Then MsgBox " bla.." Cancel = True End If End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Quit = True End Sub
Le code est écrit au niveau du UserForm.
Merci A+
"François Picalausa" a écrit dans le message de news:
"cphil" <cazenave.(suffitspam) a écrit dans le message de news:uizgr% Dim FORCE_QUIT doit se placer dans les déclarations, c'est à dire, avant tout sub, fonction, ...
a noter que dim ne spécifie pas la protée (espace/temps d'existence de la variable) et ici, elle sera publique sans raison. Autant utiliser une variable privée... Private FORCE_QUIT As Boolean.. ou comme dans mon exemple, Private Quit As Boolean
FORCE_QUIT signifie simplement forcer l'arrêt. ça ne fait référence à
rien..
c'est juste une variable de plus.. comme on aurait pu écrire Private MaVariableQuiIndiqueSiOnPeutSauterLaVérificationOuPas As Boolean Mais généralement, il est plus agréable de travaille sur des noms plus courts (ForceQuit/Quit/IsClosing/...) de préférences explicite pour comprendre ce qu'on fait sans s'encombrer de noms à rallonge....
"cphil" <cazenave.(suffitspam) a écrit dans le message de news:%2323ez2%
Bonsoir,
J'ai testé ton exemple avec le focus sur le TextBox, mais ça ne fonctione pas, MsgBox "bla." s'affiche! Où est le problème?
Bonjour/soir,
L'ordre des événements varie peut-être en fonction des versions de VBA. Essaye ceci: Option Explicit
Private Quit As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Debug.Print "Exit" If Not Quit And TextBox1.Text = "" Then MsgBox "bla..." Cancel = True End If End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Debug.Print "Close" Quit = True End Sub
Vérifie dans la fenêtre d'exécution immédiate l'ordre des événements. Ce devrait être: Close Exit
Si tu as un ordre inverse, c'est que l'ordre des événements n'est pas le même chez moi que chez toi...
"cphil" <cazenave.(suffitspam)philippe@free.fr> a écrit dans le message
de news:%2323ez2%23xDHA.1088@tk2msftngp13.phx.gbl
Bonsoir,
J'ai testé ton exemple avec le focus sur
le TextBox, mais ça ne fonctione pas,
MsgBox "bla." s'affiche!
Où est le problème?
Bonjour/soir,
L'ordre des événements varie peut-être en fonction des versions de VBA.
Essaye ceci:
Option Explicit
Private Quit As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Debug.Print "Exit"
If Not Quit And TextBox1.Text = "" Then
MsgBox "bla..."
Cancel = True
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Debug.Print "Close"
Quit = True
End Sub
Vérifie dans la fenêtre d'exécution immédiate l'ordre des événements.
Ce devrait être:
Close
Exit
Si tu as un ordre inverse, c'est que l'ordre des événements n'est pas le
même chez moi que chez toi...
"cphil" <cazenave.(suffitspam) a écrit dans le message de news:%2323ez2%
Bonsoir,
J'ai testé ton exemple avec le focus sur le TextBox, mais ça ne fonctione pas, MsgBox "bla." s'affiche! Où est le problème?
Bonjour/soir,
L'ordre des événements varie peut-être en fonction des versions de VBA. Essaye ceci: Option Explicit
Private Quit As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Debug.Print "Exit" If Not Quit And TextBox1.Text = "" Then MsgBox "bla..." Cancel = True End If End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Debug.Print "Close" Quit = True End Sub
Vérifie dans la fenêtre d'exécution immédiate l'ordre des événements. Ce devrait être: Close Exit
Si tu as un ordre inverse, c'est que l'ordre des événements n'est pas le même chez moi que chez toi...
"François Picalausa" a écrit dans le message de news:OupPzB$
Bonjour/soir,
L'ordre des événements varie peut-être en fonction des versions de VBA. Essaye ceci: Option Explicit
Private Quit As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Debug.Print "Exit" If Not Quit And TextBox1.Text = "" Then MsgBox "bla..." Cancel = True End If End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Debug.Print "Close" Quit = True End Sub
Vérifie dans la fenêtre d'exécution immédiate l'ordre des événements. Ce devrait être: Close Exit
Bonsoir,
Seul l'évènement "Exit "est exécuté, aucune trace de "Close"!
Merci. -cphil-
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:OupPzB$xDHA.4064@tk2msftngp13.phx.gbl...
Bonjour/soir,
L'ordre des événements varie peut-être en fonction des versions de VBA.
Essaye ceci:
Option Explicit
Private Quit As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Debug.Print "Exit"
If Not Quit And TextBox1.Text = "" Then
MsgBox "bla..."
Cancel = True
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Debug.Print "Close"
Quit = True
End Sub
Vérifie dans la fenêtre d'exécution immédiate l'ordre des événements.
Ce devrait être:
Close
Exit
Bonsoir,
Seul l'évènement "Exit "est exécuté, aucune trace de "Close"!
"François Picalausa" a écrit dans le message de news:OupPzB$
Bonjour/soir,
L'ordre des événements varie peut-être en fonction des versions de VBA. Essaye ceci: Option Explicit
Private Quit As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Debug.Print "Exit" If Not Quit And TextBox1.Text = "" Then MsgBox "bla..." Cancel = True End If End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Debug.Print "Close" Quit = True End Sub
Vérifie dans la fenêtre d'exécution immédiate l'ordre des événements. Ce devrait être: Close Exit
Bonsoir,
Seul l'évènement "Exit "est exécuté, aucune trace de "Close"!
Merci. -cphil-
François Picalausa
"cphil" <cazenave.(suffitspam) a écrit dans le message de news:
"François Picalausa" a écrit dans le message de news:OupPzB$
Bonjour/soir,
L'ordre des événements varie peut-être en fonction des versions de VBA. Essaye ceci: Option Explicit
Private Quit As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Debug.Print "Exit" If Not Quit And TextBox1.Text = "" Then MsgBox "bla..." Cancel = True End If End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Debug.Print "Close" Quit = True End Sub
Vérifie dans la fenêtre d'exécution immédiate l'ordre des événements. Ce devrait être: Close Exit
Bonsoir,
Seul l'évènement "Exit "est exécuté, aucune trace de "Close"!
Merci. -cphil-
Bonjour/soir,
Les événements n'ont donc pas le même ordre.. bon à savoir... Une solution serait d'effectuer le tester sur l'entrée dans les autres contrôles. Exemple: sur un userform contenant un textbox, textbox1 et deux combobox (ComboBox1 et ComboBox2): Private Sub ComboBox1_Enter() TestIsSet TextBox1.Text End Sub
Private Sub ComboBox2_Enter() TestIsSet TextBox1.Text End Sub
Private Sub ComboBox3_Enter() TestIsSet TextBox1.Text End Sub
Private Sub TestIsSet(TextBox As TextBox) If TextBox.Text = "" Then MsgBox "bla..." TextBox.SetFocus End If End Sub
"cphil" <cazenave.(suffitspam)philippe@free.fr> a écrit dans le message
de news:eB8XfEAyDHA.604@tk2msftngp13.phx.gbl
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:OupPzB$xDHA.4064@tk2msftngp13.phx.gbl...
Bonjour/soir,
L'ordre des événements varie peut-être en fonction des versions de
VBA. Essaye ceci:
Option Explicit
Private Quit As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Debug.Print "Exit"
If Not Quit And TextBox1.Text = "" Then
MsgBox "bla..."
Cancel = True
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer) Debug.Print "Close"
Quit = True
End Sub
Vérifie dans la fenêtre d'exécution immédiate l'ordre des événements.
Ce devrait être:
Close
Exit
Bonsoir,
Seul l'évènement "Exit "est exécuté, aucune trace de "Close"!
Merci.
-cphil-
Bonjour/soir,
Les événements n'ont donc pas le même ordre.. bon à savoir...
Une solution serait d'effectuer le tester sur l'entrée dans les autres
contrôles.
Exemple: sur un userform contenant un textbox, textbox1 et deux combobox
(ComboBox1 et ComboBox2):
Private Sub ComboBox1_Enter()
TestIsSet TextBox1.Text
End Sub
Private Sub ComboBox2_Enter()
TestIsSet TextBox1.Text
End Sub
Private Sub ComboBox3_Enter()
TestIsSet TextBox1.Text
End Sub
Private Sub TestIsSet(TextBox As TextBox)
If TextBox.Text = "" Then
MsgBox "bla..."
TextBox.SetFocus
End If
End Sub
"cphil" <cazenave.(suffitspam) a écrit dans le message de news:
"François Picalausa" a écrit dans le message de news:OupPzB$
Bonjour/soir,
L'ordre des événements varie peut-être en fonction des versions de VBA. Essaye ceci: Option Explicit
Private Quit As Boolean
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Debug.Print "Exit" If Not Quit And TextBox1.Text = "" Then MsgBox "bla..." Cancel = True End If End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Debug.Print "Close" Quit = True End Sub
Vérifie dans la fenêtre d'exécution immédiate l'ordre des événements. Ce devrait être: Close Exit
Bonsoir,
Seul l'évènement "Exit "est exécuté, aucune trace de "Close"!
Merci. -cphil-
Bonjour/soir,
Les événements n'ont donc pas le même ordre.. bon à savoir... Une solution serait d'effectuer le tester sur l'entrée dans les autres contrôles. Exemple: sur un userform contenant un textbox, textbox1 et deux combobox (ComboBox1 et ComboBox2): Private Sub ComboBox1_Enter() TestIsSet TextBox1.Text End Sub
Private Sub ComboBox2_Enter() TestIsSet TextBox1.Text End Sub
Private Sub ComboBox3_Enter() TestIsSet TextBox1.Text End Sub
Private Sub TestIsSet(TextBox As TextBox) If TextBox.Text = "" Then MsgBox "bla..." TextBox.SetFocus End If End Sub
"François Picalausa" a écrit dans le message de news:uKsV%
Les événements n'ont donc pas le même ordre.. bon à savoir... Une solution serait d'effectuer le tester sur l'entrée dans les autres contrôles. Exemple: sur un userform contenant un textbox, textbox1 et deux combobox (ComboBox1 et ComboBox2): Private Sub ComboBox1_Enter() TestIsSet TextBox1.Text End Sub
Private Sub ComboBox2_Enter() TestIsSet TextBox1.Text End Sub
Private Sub ComboBox3_Enter() TestIsSet TextBox1.Text End Sub
Private Sub TestIsSet(TextBox As TextBox) If TextBox.Text = "" Then MsgBox "bla..." TextBox.SetFocus End If End Sub
Bonsoir,
Comprends pas bien le but de la manip... Peu-tu m'expliquer s'il te plait? Est-ce pour tester l'ordre des évènements? Si c'est de ça dont il s''agit regarde ce que j'ai fait:
Private Sub ComboBox1_Enter() Debug.Print "Enter" TestIsSet TextBox1.Text End Sub
Private Sub ComboBox2_Enter() Debug.Print "Enter" TestIsSet TextBox1.Text End Sub
Private Sub ComboBox3_Enter() Debug.Print "Enter" TestIsSet TextBox1.Text End Sub
Private Sub TestIsSet(TextBox As String) Debug.Print "test" If TextBox1.Text = "" Then MsgBox "bla..." TextBox1.SetFocus End If End Sub
L'ordre d'éxécution est: Enter-Test -Enter-test
Merci pour ta patience.
-cphil-
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:uKsV%23SAyDHA.1724@TK2MSFTNGP10.phx.gbl...
Les événements n'ont donc pas le même ordre.. bon à savoir...
Une solution serait d'effectuer le tester sur l'entrée dans les autres
contrôles.
Exemple: sur un userform contenant un textbox, textbox1 et deux combobox
(ComboBox1 et ComboBox2):
Private Sub ComboBox1_Enter()
TestIsSet TextBox1.Text
End Sub
Private Sub ComboBox2_Enter()
TestIsSet TextBox1.Text
End Sub
Private Sub ComboBox3_Enter()
TestIsSet TextBox1.Text
End Sub
Private Sub TestIsSet(TextBox As TextBox)
If TextBox.Text = "" Then
MsgBox "bla..."
TextBox.SetFocus
End If
End Sub
Bonsoir,
Comprends pas bien le but de la manip...
Peu-tu m'expliquer s'il te plait?
Est-ce pour tester l'ordre des évènements?
Si c'est de ça dont il s''agit regarde ce que j'ai fait:
Private Sub ComboBox1_Enter()
Debug.Print "Enter"
TestIsSet TextBox1.Text
End Sub
Private Sub ComboBox2_Enter()
Debug.Print "Enter"
TestIsSet TextBox1.Text
End Sub
Private Sub ComboBox3_Enter()
Debug.Print "Enter"
TestIsSet TextBox1.Text
End Sub
Private Sub TestIsSet(TextBox As String)
Debug.Print "test"
If TextBox1.Text = "" Then
MsgBox "bla..."
TextBox1.SetFocus
End If
End Sub
"François Picalausa" a écrit dans le message de news:uKsV%
Les événements n'ont donc pas le même ordre.. bon à savoir... Une solution serait d'effectuer le tester sur l'entrée dans les autres contrôles. Exemple: sur un userform contenant un textbox, textbox1 et deux combobox (ComboBox1 et ComboBox2): Private Sub ComboBox1_Enter() TestIsSet TextBox1.Text End Sub
Private Sub ComboBox2_Enter() TestIsSet TextBox1.Text End Sub
Private Sub ComboBox3_Enter() TestIsSet TextBox1.Text End Sub
Private Sub TestIsSet(TextBox As TextBox) If TextBox.Text = "" Then MsgBox "bla..." TextBox.SetFocus End If End Sub
Bonsoir,
Comprends pas bien le but de la manip... Peu-tu m'expliquer s'il te plait? Est-ce pour tester l'ordre des évènements? Si c'est de ça dont il s''agit regarde ce que j'ai fait:
Private Sub ComboBox1_Enter() Debug.Print "Enter" TestIsSet TextBox1.Text End Sub
Private Sub ComboBox2_Enter() Debug.Print "Enter" TestIsSet TextBox1.Text End Sub
Private Sub ComboBox3_Enter() Debug.Print "Enter" TestIsSet TextBox1.Text End Sub
Private Sub TestIsSet(TextBox As String) Debug.Print "test" If TextBox1.Text = "" Then MsgBox "bla..." TextBox1.SetFocus End If End Sub
L'ordre d'éxécution est: Enter-Test -Enter-test
Merci pour ta patience.
-cphil-
François Picalausa
"cphil" <cazenave.(suffitspam) a écrit dans le message de news:elnC%
"François Picalausa" a écrit dans le message de news:uKsV%
Les événements n'ont donc pas le même ordre.. bon à savoir... Une solution serait d'effectuer le tester sur l'entrée dans les autres contrôles. Exemple: sur un userform contenant un textbox, textbox1 et deux combobox (ComboBox1 et ComboBox2): Private Sub ComboBox1_Enter() TestIsSet TextBox1.Text End Sub
Private Sub ComboBox2_Enter() TestIsSet TextBox1.Text End Sub
Private Sub ComboBox3_Enter() TestIsSet TextBox1.Text End Sub
Private Sub TestIsSet(TextBox As TextBox) If TextBox.Text = "" Then MsgBox "bla..." TextBox.SetFocus End If End Sub
Bonsoir,
Comprends pas bien le but de la manip... Peu-tu m'expliquer s'il te plait? Est-ce pour tester l'ordre des évènements? Si c'est de ça dont il s''agit regarde ce que j'ai fait:
Bonjour/soir,
L'ordre des événements a été testé dans le code précédent. Dans ce cas ci, on tente juste de palier au problème.... Donc, au lieu d'annuler la sortie du contrôle, on ne permet pas l'entrée dans un autre.. c'est une autre approche du problème...
"cphil" <cazenave.(suffitspam)philippe@free.fr> a écrit dans le message
de news:elnC%23ZByDHA.2712@TK2MSFTNGP11.phx.gbl
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:uKsV%23SAyDHA.1724@TK2MSFTNGP10.phx.gbl...
Les événements n'ont donc pas le même ordre.. bon à savoir...
Une solution serait d'effectuer le tester sur l'entrée dans les
autres contrôles.
Exemple: sur un userform contenant un textbox, textbox1 et deux
combobox (ComboBox1 et ComboBox2):
Private Sub ComboBox1_Enter()
TestIsSet TextBox1.Text
End Sub
Private Sub ComboBox2_Enter()
TestIsSet TextBox1.Text
End Sub
Private Sub ComboBox3_Enter()
TestIsSet TextBox1.Text
End Sub
Private Sub TestIsSet(TextBox As TextBox)
If TextBox.Text = "" Then
MsgBox "bla..."
TextBox.SetFocus
End If
End Sub
Bonsoir,
Comprends pas bien le but de la manip...
Peu-tu m'expliquer s'il te plait?
Est-ce pour tester l'ordre des évènements?
Si c'est de ça dont il s''agit regarde ce que j'ai fait:
Bonjour/soir,
L'ordre des événements a été testé dans le code précédent. Dans ce cas ci,
on tente juste de palier au problème....
Donc, au lieu d'annuler la sortie du contrôle, on ne permet pas l'entrée
dans un autre.. c'est une autre approche du problème...
"cphil" <cazenave.(suffitspam) a écrit dans le message de news:elnC%
"François Picalausa" a écrit dans le message de news:uKsV%
Les événements n'ont donc pas le même ordre.. bon à savoir... Une solution serait d'effectuer le tester sur l'entrée dans les autres contrôles. Exemple: sur un userform contenant un textbox, textbox1 et deux combobox (ComboBox1 et ComboBox2): Private Sub ComboBox1_Enter() TestIsSet TextBox1.Text End Sub
Private Sub ComboBox2_Enter() TestIsSet TextBox1.Text End Sub
Private Sub ComboBox3_Enter() TestIsSet TextBox1.Text End Sub
Private Sub TestIsSet(TextBox As TextBox) If TextBox.Text = "" Then MsgBox "bla..." TextBox.SetFocus End If End Sub
Bonsoir,
Comprends pas bien le but de la manip... Peu-tu m'expliquer s'il te plait? Est-ce pour tester l'ordre des évènements? Si c'est de ça dont il s''agit regarde ce que j'ai fait:
Bonjour/soir,
L'ordre des événements a été testé dans le code précédent. Dans ce cas ci, on tente juste de palier au problème.... Donc, au lieu d'annuler la sortie du contrôle, on ne permet pas l'entrée dans un autre.. c'est une autre approche du problème...