empêcher la fermeture

  • Initiateur de la discussion Patmo
  • Date de début
P

Patmo

Guest
Bonjour forum, bonjour à tous.

J'ai un petit problème d'adaptation: je m'explique.
J'utilise Excel 2002, Windows Me et je bricole un peu en VBA. Désirant empêcher la fermeture d'un classeur par quitter ou la croix, j'ai téléchargé la magnifique démo de @+Thierry nommée Classeur_infermable. Jusque là, tout va bien.

Maintenant, je désire faire la même chose chaque fois qu'Excel est ouvert (j'ai un menu personnalisé 'fermeture' qui lance une macro d'archivage de mes données).

J'ai donc essayé de mettre le code à @+Thierry dans le module ThisWorkbook du classeur de macro perso. Mais cela ne fonctionne pas (chez moi). Si je met dans ce module une simple instruction style MsgBox "Ouverture d'Excel", le message apparaît bien à chaque ouverture d'Excel. J'ai essayé aussi avec une macro auto executable, mais c'est pas gagné. J'ai peut-être des lacunes sur les bases VBA.

Quelqu'un peut-il me dire ce que je fais de faux? Avez-vous une solution?

D'avance merci beaucoup à tous ceux qui prendront un peu de leur temps pour examiner mon problème.
 
B

Baroude

Guest
Salut tout le monde et Patmo

J'utilise un code un peu similaire dans une userform, je l'ai "bricolé" pour l'adapter à ta feuille Excel. Voici le code à mettre dans Thisworkbook :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If close_mode = vbFormControlMenu Then
MsgBox "Veuillez utiliser le menu Sortie SVP", _
vbInformation, "Avertissement"
Cancel = True
End If
End Sub

What happened if you execute this macro ?!?

Baroude
 
P

Patmo

Guest
Salut Baroude et le forum,

Merci de m'avoir répondu mais malheureusement, .... ça ne fonctionne toujours pas (chez moi). Je peux fermer le fichier sans aucun problème.

Si t'as une autre idée, elle est bienvenue.

Merci, a+

Patmo
 
B

Baroude

Guest
re-bonjour,

Je joins un fichier sortie.xls avec un exemple de sortie "obligatoire par macro. Dit mois ce que t'en penses parce que dans le code que j'ai mis ci dessus, je me rends compte qu'on ne peut pas sortir du tout d'excel... on aime bien Excel mais quand même ;-)

J'attends de tes nouvelles...
Baroude
 

Pièces jointes

  • sortie.xls
    24.5 KB · Affichages: 299
  • sortie.xls
    24.5 KB · Affichages: 310
  • sortie.xls
    24.5 KB · Affichages: 318
P

Patmo

Guest
Re-re Baroude,
merci pour ton fichier. Chez moi, y va pas trop mal. Tu es obligé de sortir par la porte que t'as prévu. En cliquant dessus, le classeur est fermé, mais pas l'application. Mais tu peux alors utiliser la croix ou le menu quitter.

Par contre, si je place ton code dans le module thisWorkbook de PERSO.XLS!, ça ne marche toujours pas! Same troubles as before!

Je commence à @3*#%&"?`!¨.

Est-ce que quelqu'un sait exactement à quoi sert le module ThisWorkbook du VBAProject (PERSO.XLS)?

Merci à toi Baroude et au forum.

Patmo
 
P

Patmo

Guest
Salut Baroude et A_binouze_drinker_among_others,

Peut-être bien que vous avez raison, mais chez moi, ça marche toujours pas.

Je crois que je vais essayer en utilisant une simple macro auto_open ou auto_close.

Vous ne connaissez pas (par hasard) la différence entre une macro dans This_Workbook et une macro auto_exécutable?

Merci et a+

Patmo
 
B

Baroude

Guest
Personnellement je en vois pas de différence. Les deux sont pour moi des macros évenementielles : macro exécutée suite à un évènement comme l'ouverture, la fermeture, le changement de cellule, le changement de feuille.... etc...

Dans ThisWorkbook, il faut sélectionner dans le menu déroulant au milieu en haut "Workbook" et dans le menu déroulant en haut à droite "Open".

VBA crée automatiquement une macro "Private Sub Workbook_Open()" :
macro qui s'éxécute à l'ouverture du fichier

Si tu choisis "BeforeClose" à la place de "Open" tu auras
"Private Sub Workbook_BeforeClose(Cancel As Boolean)" :
macro qui s'éxécute à la fermeture du fichier

Baroude
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko