OVH Cloud OVH Cloud

recuper infos de userform

11 réponses
Avatar
AndréSch
Bonjour à tous

quelle est la bonne façon de savoir si un userform a été fermé avec le
bouton OK ou annuler par exemple ?

faut il utiliser une variable public initialisée par le bouton choisi ou y a
t il plus simple ?

merci d'avace

André

10 réponses

1 2
Avatar
JLuc
AndréSch avait soumis l'idée :
Bonjour à tous

quelle est la bonne façon de savoir si un userform a été fermé avec le bouton
OK ou annuler par exemple ?

faut il utiliser une variable public initialisée par le bouton choisi ou y a
t il plus simple ?

merci d'avace

André


Sur l'evenement click du bouton ok tu fais quelque chose par exemple
Mgsbox "Ferme par bouton ok"
sur l'evenement click du bouton annuler Msgbox "Ferme par bouton
annler"

Avatar
LSteph
Bonjour,

AMHA sous réserve que la croix aussi peut fermer
plus simple , je ne sais pas, la variable semble une bonne idée,.

lSteph
"AndréSch" a écrit dans le message de news:

Bonjour à tous

quelle est la bonne façon de savoir si un userform a été fermé avec le
bouton OK ou annuler par exemple ?

faut il utiliser une variable public initialisée par le bouton choisi ou y
a t il plus simple ?

merci d'avace

André



Avatar
LSteph
... si tu dois garder la dernière façon dont il a été fermé,
au-delà de l'instance en cours,
tu pourrais aussi stocker cela dans une cellule.
Sinon pour palier à toute alternative dont la croix
dans le initialize tu mets la variable à rien ou 0 ou "pouet" comme tu
veux
Puis dans le click sur Ok
tu lui attribue OK
Pour Annuler "Cancel"
Ainsi tu saura ce qui a été utilisé. Ok,Cancel ou autre...

lSteph

"AndréSch" a écrit dans le message de news:

Bonjour à tous

quelle est la bonne façon de savoir si un userform a été fermé avec le
bouton OK ou annuler par exemple ?

faut il utiliser une variable public initialisée par le bouton choisi ou y
a t il plus simple ?

merci d'avace

André



Avatar
Michel Gaboly
Bonjour,

En associant un code spécifique à l'événement Click de chaque bou ton.

Typiquement, avec 2 boutons nommés BOK et BAnnuler :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Inhibe la croix de fermeture, afin d'obliger l'utilsateur à utiliser le bouton OK
' ou le bouton Annuler.
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub

Private Sub BAnnuler_Click()
Unload Me
End Sub

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Private Sub ControleSaisie()
' Ton code pour vérifier que les infos attendues ont toutes été fournies et sont correctes
' J'utilise en général un booléen, Resultat pour stocker le ré sultat du contrôle effectué.
End Sub

Private Sub ReportDonnees()
' Ton code pour traiter les données entrées
End Sub


Si tu as besoin dans un autre module de savoir comment on a quitté un U serForm, tu utilises une variable initialisée à
True, et ramenée à False si Annuler, ce qui donne :


Dans un module standard :

Public Suite as Boolean


Dans le module qui appelle le UserForm nommé ici DTest

Private Sub Toto
Suite = True
DTest.Show
Msgbox Suite

Dans le module de DTest

Private Sub BAnnuler_Click()
Suite = False
Unload Me
End Sub

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Si on a cliqué sur OK, Suite n'a pas été modifié, sinon Suite est passé de True à False.


Bonjour à tous

quelle est la bonne façon de savoir si un userform a été fermé avec le
bouton OK ou annuler par exemple ?

faut il utiliser une variable public initialisée par le bouton choisi ou y a
t il plus simple ?

merci d'avace

André





--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
Michel Gaboly
Salut,

La croix, tu l'inhibes avec

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub

;-))


Bonjour,

AMHA sous réserve que la croix aussi peut fermer
plus simple , je ne sais pas, la variable semble une bonne idée,.

lSteph
"AndréSch" a écrit dans le message de news:


Bonjour à tous

quelle est la bonne façon de savoir si un userform a été fermé avec le
bouton OK ou annuler par exemple ?

faut il utiliser une variable public initialisée par le bouton choisi ou y
a t il plus simple ?

merci d'avace

André








--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
LSteph
Bonjour Michel,

Merci de tes conseils supplémentaires et indication plus précise du code.
;-)
Dis moi si je me trompe:
mon idée était de prévoir toute alternative yc la croix mais aussi toute
autre sortie accidentelle ou end ,
Soit 2,1,0 ou "autre","ok","cancel", donc une occurence de plus qu'un
booléen
Cela dit le principe d'inhiber la croix semble préférable si comme tu
l'indiques si l'on veut par ailleurs
canaliser les actions de l'utilisateur et notamment ne donner d'autre
alternative sinon que ce qui serait
prévu par ailleurs en cas d'annulation, soit d'autres actions à envisager
au delà d'une simple sortie du userform.
Si tel n'est pas le cas d'ailleurs sauf erreur de ma part il me semble
qu'on pourrait tout aussi bien envisager
de ne repèrer effectivement que le "Ok".

;_?
(Hs)as-tu eu mon mail en bal pers (..ou a changé) , je t'ai envoyé l'
adresse courriel de marina

lSteph


"Michel Gaboly" a écrit dans le message de news:
%
Bonjour,

En associant un code spécifique à l'événement Click de chaque bouton.

Typiquement, avec 2 boutons nommés BOK et BAnnuler :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Inhibe la croix de fermeture, afin d'obliger l'utilsateur à utiliser le
bouton OK
' ou le bouton Annuler.
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub

Private Sub BAnnuler_Click()
Unload Me
End Sub

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Private Sub ControleSaisie()
' Ton code pour vérifier que les infos attendues ont toutes été
fournies et sont correctes
' J'utilise en général un booléen, Resultat pour stocker le résultat du
contrôle effectué.
End Sub

Private Sub ReportDonnees()
' Ton code pour traiter les données entrées
End Sub


Si tu as besoin dans un autre module de savoir comment on a quitté un
UserForm, tu utilises une variable initialisée à
True, et ramenée à False si Annuler, ce qui donne :


Dans un module standard :

Public Suite as Boolean


Dans le module qui appelle le UserForm nommé ici DTest

Private Sub Toto
Suite = True
DTest.Show
Msgbox Suite

Dans le module de DTest

Private Sub BAnnuler_Click()
Suite = False
Unload Me
End Sub

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Si on a cliqué sur OK, Suite n'a pas été modifié, sinon Suite est passé de
True à False.


Bonjour à tous

quelle est la bonne façon de savoir si un userform a été fermé avec le
bouton OK ou annuler par exemple ?

faut il utiliser une variable public initialisée par le bouton choisi ou y
a t il plus simple ?

merci d'avace

André




--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
Michel Gaboly
De rien ;-))

Pas de sortie accidentelle possible : croix inhibée.

Si un éventuel End, le traitement s'arrête et on n'est + en mesure de récupérer quoi que ce soit.

Quant à un éventuel plantage, c'est pire que End ;-((

Dans ma version, avec le booléen Suite, je ne repère directement que Annuler (OK laissant Siuite invariant), mais on
peut inverser, bien sûr.


HS - Je ne trouve pas ton mail ;-(( Dis moi quel était le sujet et je v ais regarder à nouveau dans ce qui a été
considéré comme Spam par Eudora (mon logiciel de messagerie).


Bonjour Michel,

Merci de tes conseils supplémentaires et indication plus précise du code.
;-)
Dis moi si je me trompe:
mon idée était de prévoir toute alternative yc la croix mais aus si toute
autre sortie accidentelle ou end ,
Soit 2,1,0 ou "autre","ok","cancel", donc une occurence de plus qu'un
booléen
Cela dit le principe d'inhiber la croix semble préférable si comme tu
l'indiques si l'on veut par ailleurs
canaliser les actions de l'utilisateur et notamment ne donner d'autre
alternative sinon que ce qui serait
prévu par ailleurs en cas d'annulation, soit d'autres actions à en visager
au delà d'une simple sortie du userform.
Si tel n'est pas le cas d'ailleurs sauf erreur de ma part il me semble
qu'on pourrait tout aussi bien envisager
de ne repèrer effectivement que le "Ok".

;_?
(Hs)as-tu eu mon mail en bal pers (..ou a changé) , je t'ai envoyé l'
adresse courriel de marina

lSteph


"Michel Gaboly" a écrit dans le message de news:
%
Bonjour,

En associant un code spécifique à l'événement Click de chaque b outon.

Typiquement, avec 2 boutons nommés BOK et BAnnuler :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer )
' Inhibe la croix de fermeture, afin d'obliger l'utilsateur à utilise r le
bouton OK
' ou le bouton Annuler.
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub

Private Sub BAnnuler_Click()
Unload Me
End Sub

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Private Sub ControleSaisie()
' Ton code pour vérifier que les infos attendues ont toutes ét é
fournies et sont correctes
' J'utilise en général un booléen, Resultat pour stocker le résultat du
contrôle effectué.
End Sub

Private Sub ReportDonnees()
' Ton code pour traiter les données entrées
End Sub


Si tu as besoin dans un autre module de savoir comment on a quitté un
UserForm, tu utilises une variable initialisée à
True, et ramenée à False si Annuler, ce qui donne :


Dans un module standard :

Public Suite as Boolean


Dans le module qui appelle le UserForm nommé ici DTest

Private Sub Toto
Suite = True
DTest.Show
Msgbox Suite

Dans le module de DTest

Private Sub BAnnuler_Click()
Suite = False
Unload Me
End Sub

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Si on a cliqué sur OK, Suite n'a pas été modifié, sinon Suite e st passé de
True à False.



Bonjour à tous

quelle est la bonne façon de savoir si un userform a été fermé avec le
bouton OK ou annuler par exemple ?

faut il utiliser une variable public initialisée par le bouton choisi ou y
a t il plus simple ?

merci d'avace

André








--
Cordialement,

Michel Gaboly
www.gaboly.com


Avatar
AndréSch
Ca parait interessant

merci à tous

André
"Michel Gaboly" a écrit dans le message de news:
%
Bonjour,

En associant un code spécifique à l'événement Click de chaque bouton.

Typiquement, avec 2 boutons nommés BOK et BAnnuler :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Inhibe la croix de fermeture, afin d'obliger l'utilsateur à utiliser le
bouton OK
' ou le bouton Annuler.
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub

Private Sub BAnnuler_Click()
Unload Me
End Sub

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Private Sub ControleSaisie()
' Ton code pour vérifier que les infos attendues ont toutes été
fournies et sont correctes
' J'utilise en général un booléen, Resultat pour stocker le résultat du
contrôle effectué.
End Sub

Private Sub ReportDonnees()
' Ton code pour traiter les données entrées
End Sub


Si tu as besoin dans un autre module de savoir comment on a quitté un
UserForm, tu utilises une variable initialisée à
True, et ramenée à False si Annuler, ce qui donne :


Dans un module standard :

Public Suite as Boolean


Dans le module qui appelle le UserForm nommé ici DTest

Private Sub Toto
Suite = True
DTest.Show
Msgbox Suite

Dans le module de DTest

Private Sub BAnnuler_Click()
Suite = False
Unload Me
End Sub

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Si on a cliqué sur OK, Suite n'a pas été modifié, sinon Suite est passé de
True à False.


Bonjour à tous

quelle est la bonne façon de savoir si un userform a été fermé avec le
bouton OK ou annuler par exemple ?

faut il utiliser une variable public initialisée par le bouton choisi ou y
a t il plus simple ?

merci d'avace

André




--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
AndréSch
Merci les amis
c'est ce que je souhaitais connaitre

je ne traitais pas la croix, c'st une bonne idée

merci
andré
"Michel Gaboly" a écrit dans le message de news:
%
Bonjour,

En associant un code spécifique à l'événement Click de chaque bouton.

Typiquement, avec 2 boutons nommés BOK et BAnnuler :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Inhibe la croix de fermeture, afin d'obliger l'utilsateur à utiliser le
bouton OK
' ou le bouton Annuler.
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub

Private Sub BAnnuler_Click()
Unload Me
End Sub

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Private Sub ControleSaisie()
' Ton code pour vérifier que les infos attendues ont toutes été
fournies et sont correctes
' J'utilise en général un booléen, Resultat pour stocker le résultat du
contrôle effectué.
End Sub

Private Sub ReportDonnees()
' Ton code pour traiter les données entrées
End Sub


Si tu as besoin dans un autre module de savoir comment on a quitté un
UserForm, tu utilises une variable initialisée à
True, et ramenée à False si Annuler, ce qui donne :


Dans un module standard :

Public Suite as Boolean


Dans le module qui appelle le UserForm nommé ici DTest

Private Sub Toto
Suite = True
DTest.Show
Msgbox Suite

Dans le module de DTest

Private Sub BAnnuler_Click()
Suite = False
Unload Me
End Sub

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Si on a cliqué sur OK, Suite n'a pas été modifié, sinon Suite est passé de
True à False.


Bonjour à tous

quelle est la bonne façon de savoir si un userform a été fermé avec le
bouton OK ou annuler par exemple ?

faut il utiliser une variable public initialisée par le bouton choisi ou y
a t il plus simple ?

merci d'avace

André




--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
LSteph
Re,
HS 'objet était: Mpfe 17/12

Sinon d'accord pour le reste:
sauf peut-être
la sortie accidentelle ou
..., le traitement s'arrête et on n'est + en mesure de récupérer quoi que
ce soit.
donc sauf si comme je le suggèrais on s'est servi de l'initialize pour

coller l'info (ou variable )
dans une cellule, en attendant que le click sur Ok ou celui sur cancel la
modifie .
ou qu'un (hic ou End) la laisse telle que..

A bientôt

lSteph

"Michel Gaboly" a écrit dans le message de news:

De rien ;-))

Pas de sortie accidentelle possible : croix inhibée.

Si un éventuel End, le traitement s'arrête et on n'est + en mesure de
récupérer quoi que ce soit.

Quant à un éventuel plantage, c'est pire que End ;-((

Dans ma version, avec le booléen Suite, je ne repère directement que Annuler
(OK laissant Siuite invariant), mais on
peut inverser, bien sûr.


HS - Je ne trouve pas ton mail ;-(( Dis moi quel était le sujet et je vais
regarder à nouveau dans ce qui a été
considéré comme Spam par Eudora (mon logiciel de messagerie).


Bonjour Michel,

Merci de tes conseils supplémentaires et indication plus précise du code.
;-)
Dis moi si je me trompe:
mon idée était de prévoir toute alternative yc la croix mais aussi toute
autre sortie accidentelle ou end ,
Soit 2,1,0 ou "autre","ok","cancel", donc une occurence de plus qu'un
booléen
Cela dit le principe d'inhiber la croix semble préférable si comme tu
l'indiques si l'on veut par ailleurs
canaliser les actions de l'utilisateur et notamment ne donner d'autre
alternative sinon que ce qui serait
prévu par ailleurs en cas d'annulation, soit d'autres actions à envisager
au delà d'une simple sortie du userform.
Si tel n'est pas le cas d'ailleurs sauf erreur de ma part il me semble
qu'on pourrait tout aussi bien envisager
de ne repèrer effectivement que le "Ok".

;_?
(Hs)as-tu eu mon mail en bal pers (..ou a changé) , je t'ai envoyé l'
adresse courriel de marina

lSteph


"Michel Gaboly" a écrit dans le message de
news: %
Bonjour,

En associant un code spécifique à l'événement Click de chaque bouton.

Typiquement, avec 2 boutons nommés BOK et BAnnuler :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Inhibe la croix de fermeture, afin d'obliger l'utilsateur à utiliser le
bouton OK
' ou le bouton Annuler.
If CloseMode = vbFormControlMenu Then
Cancel = True
End If
End Sub

Private Sub BAnnuler_Click()
Unload Me
End Sub

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Private Sub ControleSaisie()
' Ton code pour vérifier que les infos attendues ont toutes été
fournies et sont correctes
' J'utilise en général un booléen, Resultat pour stocker le résultat
du contrôle effectué.
End Sub

Private Sub ReportDonnees()
' Ton code pour traiter les données entrées
End Sub


Si tu as besoin dans un autre module de savoir comment on a quitté un
UserForm, tu utilises une variable initialisée à
True, et ramenée à False si Annuler, ce qui donne :


Dans un module standard :

Public Suite as Boolean


Dans le module qui appelle le UserForm nommé ici DTest

Private Sub Toto
Suite = True
DTest.Show
Msgbox Suite

Dans le module de DTest

Private Sub BAnnuler_Click()
Suite = False
Unload Me
End Sub

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Si on a cliqué sur OK, Suite n'a pas été modifié, sinon Suite est passé de
True à False.



Bonjour à tous

quelle est la bonne façon de savoir si un userform a été fermé avec le
bouton OK ou annuler par exemple ?

faut il utiliser une variable public initialisée par le bouton choisi ou y
a t il plus simple ?

merci d'avace

André








--
Cordialement,

Michel Gaboly
www.gaboly.com


1 2