Vba access

Signaler
Messages postés
106
Date d'inscription
jeudi 13 mai 2004
Statut
Membre
Dernière intervention
6 janvier 2005
-
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
-
Bonjour,

J'ai créé une base de donnée dans laquelle je voudrais au moment de la fermeture d'un formulaire par l'utilisateur(par un click sur la croix), vérifier s'il est vraiment sûr de vouloir quitter, et si la réponse est non, d'empêcher la fermeture...

est-ce que l'instruction docmd.cancelevent peut servir à cela?
et sinon comment faire?

Merci 8-)
yaf_yaf

19 réponses

Messages postés
246
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
29 décembre 2008
2
Pour cela, met le code suivant dans l'evenement sur clique :

dim num as integer

num = MsgBox("Vous allez faire qq chose. Cliquer sur oui pour confirmer ou non pour annuler.", vbInformation + vbYesNo, "Microsoft Press")
Select Case num
Case vbYes
'Met ici ton code lorsqu'on clique sur oui(dans ton cas rien)
Case vbNo
'Met ici ton code lorsqu'on clique sur non(dans ton cas le code pour la fermeture)
End select

Ca dvrait marcher sans pb, si yen a di le moi!

Hasen
Messages postés
106
Date d'inscription
jeudi 13 mai 2004
Statut
Membre
Dernière intervention
6 janvier 2005

merci
ton code me plais mais il ne répond pas à tout car ce qui me manque c le code lorsque la personne va cliquer sur non:
pour empêcher la fermeture.....
Sinon, je teste la chose dans form_close car c'est la fonction qui se lance lorsque l'on appuie sur la croix mais peut-être que je m'y prend mal....

yaf_yaf
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
21
Tiens Yaf_Yaf :)

Voilà ce qu'il faut mettre dans l'évènement QueryClose :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

Dim rep As String

rep = MsgBox("voulez vous vraiment quitter ?", vbYesNo)

If rep = vbNo Then
Cancel = True
Else
MsgBox "au revoir"
End If

End Sub


Fanny
Messages postés
106
Date d'inscription
jeudi 13 mai 2004
Statut
Membre
Dernière intervention
6 janvier 2005

Merci Fanny
cancel = true tout simplement....
J'ai l'art de poser des questions qd les réponse sont toutes bêtes
lol
avec ca il me reste plus qu'à commenter mon travail.....c d'un chi.....surtout en allemand
8-)
yaf_yaf
Messages postés
106
Date d'inscription
jeudi 13 mai 2004
Statut
Membre
Dernière intervention
6 janvier 2005

euh, le compilateur aime pas
form_close(cancel as integer,closemode as integer)
j'ai essayé en mettant cancel as boolean au lieu de cancel as integer car de tout manière c un boolean si je le met à true et il me sort un message d'erreure des que j'essaie d'ouvrir le formulaire...
je capte queud...tout ce que je sais c que c cette ligne qui pose problème
?????
yaf_yaf
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
21
Lol :)

Tu sélectionnes ta UserForm dans la fenêtre de code et de l'autre côté (au niveau des évènements), tu choisis :
QUERYCLOSE ou QUERYUNLOAD :)

Et là, tu mets le code que tu veux ;)

Fanny
Messages postés
106
Date d'inscription
jeudi 13 mai 2004
Statut
Membre
Dernière intervention
6 janvier 2005

j'veux bien mais mon formulaire n'a pas d'évênements queryclose ni queryunload, uniquement close et unload... :sad)

yaf_yaf
Messages postés
27
Date d'inscription
lundi 7 juin 2004
Statut
Membre
Dernière intervention
21 juillet 2004

toi aussi tu bosses en allemand ? a c est la galere pour trouver les fonctions .....

Jai quasiment fini ma base mais il me reste plus qu a gerer un systeme de remplissage et dupdate de la base garce a des fichiers excel.

Le probleme est que j ai un champs qui possede plusieurs valeurs separees par des points virgule. Je voudrai transformer ce champ en un tableau ayant autant de ligne que de valeur en detectant les differentes valeurs grace au symbole de sépartion qu est la virgule!!

ex 1234;4567;7891; => 1234
4567
7890

Je suis quaiment sur que ca existe mais je connais pas le nom ...

Si tu sais Merci
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
21
Pour toi lhomme il faut que tu fasses :

Dim tableau() As Integer
tableau = Split(tavariable,";")

Yaf :
Il te dit quoi comme évènement qui peut ressembler à une méthode queryclose ?

Fanny
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
21
Yaf_yaf,

as-tu essayé le on_unload ? ou le unload ? (comme évènements pour ton formulaire)

Fanny
Messages postés
106
Date d'inscription
jeudi 13 mai 2004
Statut
Membre
Dernière intervention
6 janvier 2005

avec unload, le cancel il veut bien mais le reste il fait pas....
:sad)
yaf_yaf
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
21
Comment ça le cancel il veut bien mais le reste il fait pas ?
Essaies avec le close alors :big) .

(j'ai cherché sur le net mais pour l'instant je ne trouve pas :sad) )

Fanny
Messages postés
106
Date d'inscription
jeudi 13 mai 2004
Statut
Membre
Dernière intervention
6 janvier 2005

disons qu'avec unload,je peux passer en paramètre cancel mais après il ne vas pas dans cette fonction lorsque se fait la fermeture,....
j'essaie de voir comment à partir de close lui dire d'aller dans unload .... :clown)
yaf_yaf
Messages postés
106
Date d'inscription
jeudi 13 mai 2004
Statut
Membre
Dernière intervention
6 janvier 2005

bon, de close je peux aller dans unload à condition de donner à cancel une valeur.....le pb c que cancel=true, il semble pas savoir que ca veut dire annuler la fermeture....car il ferme alors que je clique sur non...
grrr 8-)
yaf_yaf
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
21
Lol on va y arriver !!!!

Tu peux m'écrire exactement ce qu'il y a lorsque tu cliques sur les méthodes Close et Unload du formulaire ?
Sans que tu y aies écrit quelquechose :)

Je veux juste voir ce qu'il passe en paramètres :
Du genre :

Private Sub form_Close(CE QU'IL Y A ICI)

Fanny
Messages postés
246
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
29 décembre 2008
2
je ne suis pas sur d'avoir tout suivi, mais essai ca :

Private Sub bQuitter_Click()

dim num as integer

num = MsgBox("Etes-vous sur de vouloir quitter?", vbInformation + vbYesNo, "Microsoft Press")
Select Case num
Case vbYes
docmd.close
Case vbNo
exit sub
End select

end sub

Si tu veux seulement quitter ton formulaire lorsque l'utilisateur clique sur oui et ne rien faire lorsqu'il clique sur non, ca devrait marcher!
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
21
Non Hasen, il ne veut pas créer un bouton quitter, mais utiliser le bouton de fermeture du formulaire (la petite croix en haut à droite) :) .
C'est d'ailleurs pour ça que c'est la galère, pourtant sous Excel c'est simple comme tout ... grrr de Access !!!

Fanny
Messages postés
246
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
29 décembre 2008
2
je viens d'essayer le code suivant chez moi sous access et ca marche du feu de dieu

Private Sub Form_Unload(Cancel As Integer)

Dim rep As String

rep = MsgBox("voulez vous vraiment quitter ?", vbYesNo)

If rep = vbNo Then
Cancel = True
Else
MsgBox "au revoir"
End If

End Sub

pourtant c a peu de chose pret le code que tu a proposé
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
21
Oui c'est bizarre alors ...
Moi j'avais testé sous Excel donc ce n'était pas le bon évènement ...
Donc avec ce que tu as écrit Yafisab devrait y parvenir ;)

Fanny