Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1407 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Une macro créant un message d'alerte [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Une macro créant un message d'alerte [résolu]

n°2855821
Profil sup​primé
Posté le 28-04-2009 à 15:11:24  answer
 

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
mood
Publicité
Posté le 28-04-2009 à 15:11:24  profilanswer
 

n°2855843
olivthill
Posté le 28-04-2009 à 16:00:09  profilanswer
 

Voici un bout de code qui marche :

Private Sub Workbook_BeforeClose(ByRef Cancel As Boolean)
  Msg = "Avez-vous vérifié l'onglet check avant de fermer ce fichier ?"
  reponse = MsgBox(Msg, vbOKCancel, "Exit" )
  If (reponse <> 1) Then
    ' Ne ferme pas la feuille
    Cancel = True
  End If
End Sub

n°2856069
Profil sup​primé
Posté le 29-04-2009 à 09:33:03  answer
 

olivthill a écrit :

Voici un bout de code qui marche :

Private Sub Workbook_BeforeClose(ByRef Cancel As Boolean)
  Msg = "Avez-vous vérifié l'onglet check avant de fermer ce fichier ?"
  reponse = MsgBox(Msg, vbOKCancel, "Exit" )
  If (reponse <> 1) Then
    ' Ne ferme pas la feuille
    Cancel = True
  End If
End Sub



 
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".
 
 [:athome]


Message édité par Profil supprimé le 29-04-2009 à 09:38:56
n°2856164
olivthill
Posté le 29-04-2009 à 18:16:06  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Une macro créant un message d'alerte [résolu]

 

Sujets relatifs
[Resolu] STOP erreur 0x0000008E[RESOLU] Vista 64 bits explorer.exe qui ce fige
adobe reader plus d'image dans les miniatures [résolu]Plus d'execution automatique quand je mets ma clé USB. [résolu]
[DoublementRésolu]Casser un mot de passe Vista[résolu] probleme d'impression TSE2008 - EasyPrint
message d'erreur msi.dll[Résolu] Problème ouverture fichier ODS
Ouverture intempestive de tout sur Windows [RESOLU][ Résolu ] problème de mot de passe ?
Plus de sujets relatifs à : Une macro créant un message d'alerte [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR