Une macro créant un message d'alerte [résolu] - Logiciels - Windows & Software
Marsh Posté le 28-04-2009 à 16:00:09
Voici un bout de code qui marche :
Private Sub Workbook_BeforeClose(ByRef Cancel As Boolean) |
Marsh Posté le 29-04-2009 à 09:33:03
olivthill a écrit : Voici un bout de code qui marche :
|
Ah merci je viens d'essayer, c'est top !
Pour comprendre
-Oui est considéré comme la réponse 1 et non comme la réponse 0 ?
- Pourquoi mettre "ByRef" avant "Cancel as boolean".
Marsh Posté le 29-04-2009 à 18:16:06
Dans mon exemple avec vbOKCancel, la réponse 1 est "OK".
J'ai mis "ByRef" mais ce n'est peut-être pas obligatoire. Je l'ai mis par précaution.
On a le choix entre ByRef et ByValue. Je ne sais pas ce qui est pris par défaut, quand on ne l'indique pas explicitement.
Si c'était ByValue cela n'irait pas car le contenu de la variable Cancel serait mise sur la pile et donnée à la subroutine, qui ensuite la modifierait. Dans ce cas, après le déroulement de la subroutine, le programme appelant ne verrait pas le changement, car par convention, un programme appelant ne va pas récupérer le contenu d'une variable sur la pile.
Alors que si la variable Cancel est passée ByRef, alors c'est son adresse qui est mise sur la pile et donnée à la subroutine, qui ensuite va modifier la donnée qui se trouve à l'adressse indiquée sur la pile. Dans ce cas, après le déroulement de la subroutine, le programme appelant voit le changement du contenu de la variable Cancel.
Marsh Posté le 28-04-2009 à 15:11:24
Bonjour j'ai tenté de faire une macro sur VBA qui avant la fermeture d'un fichier excel me pose une question attendant une réponse oui (qui alors ferme le fichier) ou non (laisse le fichier ouvert).
Cependant je n'ai réussi qu'à faire un message workbook before close :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Msg = "Avez-vous vérifié l'onglet check avant de fermer ce fichier ?"
réponse = MsgBox(Msg, StyleBoîteDialogue, Title)
End Sub
Message édité par Profil supprimé le 29-04-2009 à 09:39:48