XL 2016 Probleme de Workbook_Open

univers63

XLDnaute Nouveau
Bonjour,

Je rencontre un problème de sauvegarde avec une macro que j'ai créé. En fait, chaque fois que je sors de l'application la macro ne s’exécute pas c'est dire si j'interdis la sauvegarde, je sors et je ré-ouvre le fichier je trouve que la sauvegarde à été effectuée. Ci-dessous le code VBA :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ThisWorkbook.Saved = True
End Sub

Private Sub Workbook_Open()
Sheets("login").Visible = True
Sheets("compil").Visible = 2
Sheets("tableau de bord").Visible = 2
Sheets("login").Activate
End Sub


Merci pour votre aide
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Univers, Fanfan,
"Application.ThisWorkbook.Saved = True" signifie simplement à faire croire au VBA que toutes les modifs ont été enregistrées, sans impacter un enregistrement futur.
Je pense que la solution serait :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ThisWorkbook.Saved = True
    ThisWorkbook.Close
End Sub
Voir exemple 2 de :
 

Dranreb

XLDnaute Barbatruc
et je ré-ouvre le fichier je trouve que la sauvegarde à été effectuée.
Thisworkbook.Saved signifie en principe que le classeur n'a pas subi de modification depuis son ouverture. Pourquoi voudriez vous qu'il en soit autrement quand on vient juste de l'ouvrir ?
On a l'impression que vous vous imaginez que si on ne sauvegarde pas le classeur avant de le fermer, il pourra quand même être ré-ouvert ultérieurement dans le dernier état laissé mais à l'état non sauvegardé ?
Ça n'existe pas. Tout ce qu'on peut faire c'est l'enregistrer avant fermeture mais avec une copie de sauvegarde de son état précédent.
 

juvaxe

XLDnaute Occasionnel
Bonjour

Pas d'accord Dranreb avec ta vision .

Si, il est possible de retrouver un classeur dans l'état où il était avant sa dernière utilisation. Que se passe-t-il quand on répond "non" à la demande "Voulez-vous enregistrer ..." lorsqu'on ferme manuellement un classeur que l'on vient d'utiliser.

Je suggère à Univers63 de refaire un essai en mettant False là où il a mis True et de nous tenir au courant du résultat obtenu.

Mettre "False" revient à répondre "NON" à la demande "Voulez-vous enregistrer ..." (qui ne sera pas formulée lors du WorkBook.Close qui va suivre)

Bonne réception
 

Dranreb

XLDnaute Barbatruc
En tout cas on ne comprend pas le problème de @univers63
Il me paraît croire qu'il existe une sorte d'état intermédiaire où il ne serait pas officiellement sauvegardé mais avec les dernières modifications quand même conservées quelque part.
Je n'ai pas dit qu'on ne pouvait pas le retrouver dans l'état où il était avant sa dernière utilisation, mais après sa dernière utilisation, s'il n'a pas été sauvegardé à la fin de celle ci.
Si on le ferme sans enreigistrer les modifications, ou en disant à Excel qu'elle l'ont déjà été alors que ce n'est pas vrai, on les perd purement et simplement.
 

univers63

XLDnaute Nouveau
Bonjour,

Merci pour vos interventions,j'ai pu régler une partie de mon problème en mettant l'instruction à la fin du code et ça marche:

Private Sub Workbook_Open()

Sheets("login").Visible = True
Sheets("compil").Visible = 2
Sheets("tableau de bord").Visible = 2
Sheets("login").Activate

Application.ThisWorkbook.Saved = True

End Sub
 

Discussions similaires

Réponses
2
Affichages
210

Statistiques des forums

Discussions
312 321
Messages
2 087 231
Membres
103 497
dernier inscrit
JP9231