Fermeture de classeur complexe

lio

XLDnaute Occasionnel
Bonjour le forum,

Voilà mon problème.

Pour inviter l'utilisateur à utiliser les macros, j'ai repris une démo de T...

En fait, si l'utilisateur n'active pas les macros, il tombe sur la page 'warning'. Si il active les macros, il tombe sur la feuille 'janvier' et 'février'. Toutefois, j'ai remarqué que chaque fois que je fermais mon classeur, je retombais sur la page 'Warning', ce qui est génant.

J'utilisais ce code :
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Warning.Visible = True
C.Visible = xlSheetVeryHidden
Feuil1.Visible = xlSheetVeryHidden
Feuil2.Visible = xlSheetVeryHidden
Verrou = False
End sub

Pour remédier à ce problème, je tente depuis 4 heures de temps tout un tas de combines qui ne marchent pas ou pas bien. :( :( :(

Merci de votre aide.

PS: Le problème en fait est double car sur mon vrai fichier (trop lourd), j'ai créer une barre de menu et de ce fait meme si je choisis le bouton ' Annuler' au message 'Voulez vous enregistrer les modifications', cette barre disparait. [file name=Ttfx.zip size=23562]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Ttfx.zip[/file]

Message édité par: lio, à: 13/02/2006 16:37
 

Pièces jointes

  • Ttfx.zip
    23 KB · Affichages: 18

Jacques87

XLDnaute Accro
Bonjour Lio

J'ai ouvert ton fichier en faisant tous les essais possibles et imaginables, à la fermeture je ne suis pas retombé une seule fois sur ta page 'Warning'
Quant au code je ne vois rien de particulier à première vue.

Je souscris au Fil pour suivre l'évolution des interventions et éclairer par la même occasion ma lanterne.

Bien amicalement
 

lio

XLDnaute Occasionnel
Salut Jacques et pierreJean,

En fait ce fichier est farci de bug !

1- J'ouvre => j'active les macros, je colore les cases => Je ferme avec la croix => 'Voulez vous enregistrer...' => je mets 'Oui' (Jusque là pas de souci). Je réouvre mon classeur, je n'active pas les macros => Erreur : je tombe sur la feuille Fevrier

Remettre ensuite la bonne configuration des feuilles (visible ou non suite au bug).

2- J'ouvre => j'active les macros, je colore les cases => Je ferme avec la croix => 'Voulez vous enregistrer...' =>
Je mets 'Non' => Je suis obligé de taper 2 fois sur Non !

3- J'ouvre => j'active les macros, je colore les cases => j'enregistre avec la disquette (dans la barre de menu)=> Je ferme avec la croix ( Pas de pb) ===> Je réouvre mon classeur, je n'active pas les macros => Erreur : je tombe sur la feuille Fevrier


Voila pour les bugs que j'ai vu !!!.

Message édité par: lio, à: 13/02/2006 17:57

Message édité par: lio, à: 13/02/2006 17:59
 

Jacques87

XLDnaute Accro
Bonsoir Lio

Cela fait un bon moment que je me penche sur ton problème.

1) tu remets des instructions demandant de fermer le classeur dans l'évènement 'BeforeClose' donc obligatoirement quand le déroulement de la procédure repasse sur cette instruction c'est reparti pour un petit tour dans 'BeforeClose'.
Voila donc la raison de ton double message de fermeture
2) au lieu de WorkBook.Close je mettrai Application.Quit, c'est plus radical à condition que bien sûr tu ne désires pas conserver Excel pour une autre utilisation en parallèle.
3) je n'arrive pas à comprendre comment fonctionne ActiveWorkBook.Saved, car dans mes essais même quand je changeais une case de couleur, il refusait de considérer que j'avais apporté une modif.
4) ton verrou (True ou False), est ce lui qui te permettra d'ouvrir ou non la feuille 'Attention' ?
sinon comment analyses tu le fait que l'on active ou désactive les macros ?

Bonne soirée
 

lio

XLDnaute Occasionnel
Re Jacques,

1- Je ne comprends pas car l'évenement 'before close' est le dernier évènement avant fermeture, non?

2- En ce qui concerne 'Application.Quit' comme tu dis c'est radical mais j'ai plusieurs fois lu sur ce forum ( par des piliers !)que cette méthode entrainait des bugs notamment si d'autres classeurs sont ouverts.

3- Me. Saved = annule toutes les modifs apportées au classeur quand on le met à True

4- Ce code vient de @Thierry : Voila comment je l'interprète :

Une booléenne par défaut à la valeur False.
A l'ouverture du dossier 'je' mets la valeur à True dans Woorkbook-open comme suit:

Verrou = True
Feuil1.Visible = xlSheetVisible
Feuil2.Visible = xlSheetVisible
Warning.Visible = xlSheetVeryHidden

Il est important de savoir que la feuille 'warning' lors de la configurat° initiale est affichée et les autres masquées.

Donc, si pas de macro, verrou = false et donc Warning est visible. Et inversement.

Merci en tout cas d'essayer de faire avancer le shmilblic !

Message édité par: lio, à: 13/02/2006 20:28

Message édité par: lio, à: 13/02/2006 20:32
 

Jacques87

XLDnaute Accro
Lio

1) regarde le petit fichier ci-joint, qui te prouve qu'ayant intégrer la ligne
ThisWorkBook.Close
dans l'évènement BeforeClose
il y a un retour au début dès qu'on atteint la ligne en question.

La manip à faire est la suivante
a) tu charges le fichier
b) tu mets un point d'arrêt devant la ligne en question
c) après être retourné sur Excel, tu fermes (avec le croix par exemple) le WorkBook
la procédure s'arrêtera à la fameuse ligne
d) change Range('A' & I) en Range('B' & I)
e) relance la procédure pas à pas

tu verras bien qu'il y a un retour au début et que la colonne B se remplira avant que ne se ferme le fichier

2) je suis d'accord, ne pas utiliser Application.Quit si divers fichiers sont ouverts en même temps sans faire très attention

3) je vais essayer de trouver la suite

Bonne soirée [file name=Classeur1_20060213225012.zip size=6271]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20060213225012.zip[/file]
 

lio

XLDnaute Occasionnel
Bonjour Jacques,

Ok, j'ai fais la manip et j'ai compris. Je ne pense jamais à mettre un point d'arret !

Par contre Jacques, te casse pas trop la tête, je retente aujourdhui et si ça marche pas je laisse tomber. C'est pas la fin du monde, non plus ! :) :)

Merci en tout cas pour tes efforts. Si je trouve une piste ce soir, je ne manquerais pas de te la montrer.

Bonne journée.
 

Jacques87

XLDnaute Accro
Bonjour Lio,

Je suis quand même tracassé par ce phénomène.
Peux tu me faire parvenir le code de Thierry dans son intégralité, car je ne comprends pas comment il arrive à analyser la réponse donnée au message d'accueil qui propose d'activer ou non les macros. En effet c'est bien cette réponse qui est à l'origine de la procédure

Bonne journée

PS: les points d'arrêt sont très utiles quand tu testes un code, tu peux aussi mettre l'instruction 'Stop'

Amicalement
 

lio

XLDnaute Occasionnel
Jacques,

Tu trouvera en fichier joint la super démo de Thierry ( Attention elle est trufée d'astuce, aussi le mot de passe n'est pas écrit en 'dur', mais bon là n'est pas la question?!!!).

Ce qui me tracasse dans sa démo, c'est la procédure 'MyClosing'. En fait je ne vois pas bien quand cette routine est appelée. ( J'aurai du peut être commencer par mettre dans le post initial cette démo :whistle: )

A+
 

lio

XLDnaute Occasionnel
Re, petit problème technique :) [file name=Thierry_20060214112723.zip size=26166]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Thierry_20060214112723.zip[/file]
 

Pièces jointes

  • Thierry_20060214112723.zip
    25.6 KB · Affichages: 27

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Lio, Jacques, le Forum

Vu que Lio m'a demandé de venir, je suis là !

Si le souci est 'chaque fois que je fermais mon classeur, je retombais sur la page 'Warning', ce qui est génant' on ne peut pas y remédier puisque c'est le concept même du subterfuge que j'utilise.

Essaie de voir en intercallant 'Application.ScreenUpdating = False' au début de Workbook_BeforeClose...

Mais à l'ouverture, on entreverra cette feuille 'Warning' une micro seconde quand même...

Bonne Soirée
[ol]@+Thierry[/ol]
 

lio

XLDnaute Occasionnel
Bonsoir Jacques , bonsoir Thierry,

Bon en fait, à l'ouverture c'est pas génant car on le voit (quasiment) pas. Par contre à la fermeture...

J'ai tenté cette tactique(Application.ScreenUpdating = False)pour bloquer l'écran comme tu me l'as indiqué mais rien n'y fait.

Bon, je vais encore gratter un peu, sait on jamais ?


Merci en tout cas Thierry et merci Jacques.

Bonne semaine.
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 942
Membres
103 989
dernier inscrit
jralonso