OVH Cloud OVH Cloud

Activer macros BeforeClose BeforeSave

14 réponses
Avatar
LSteph
Bonjour à tous,

Cela fait un moment que je tourne autour de cette question,
comment gèrer conjointement fermeture et BeforeSave? - dans le cas suivant:

Le but est pour un classeur déterminé d'obliger l'utilisateur à activer les
macros, ainsi
une feuille d'avertissement visible et les autres feuilles sont
xlveryhidden
le Workbook_open fera le nécessaire si les macros sont activées sinon seul
l'avertissement restera affiché.
Quand on tente plus tard de fermer le classeur le before save entre en
action pour remasquer ce qui doit l'être.
Comment gèrer un peu mieux les possibilités de sauvegarde et fermeture
sachant que si l'utilisateur sauvegarde sans fermer
le classeur reste ouvert mais avec seulement la feuille d'avertissement.

Merci d'avance

Voici le code que j'utilise:

'****
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)

Dim sh As Worksheet

With Application
.ScreenUpdating = False

Worksheets("Avertissement").Visible = True
For Each sh In ThisWorkbook.Sheets
If sh.Name <> "Avertissement" Then sh.Visible = xlVeryHidden
Next

.ScreenUpdating = True
End With


End Sub

Private Sub Workbook_Open()
Dim sh As Worksheet

For Each sh In ThisWorkbook.Sheets
sh.Visible = True
Next
Worksheets("Avertissement").Visible = xlVeryHidden

End Sub
'****
'lSteph

4 réponses

1 2
Avatar
michdenis
Bonjour Le Steph,

Comme je n'ai pas retenu dans la version finale, l'objet de ta préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas, cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au besoin.

Si tu trouves des défauts à la version finale, fais moi parvenir la parade ... pas les défauts ...;-)


Salutations!





"LSteph" a écrit dans le message de news: %
Re, bonjour,
:o)

ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue

est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but ,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas de
saveasui a résolu cela aussi.

Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....

En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai enfin
compris comment utiliser cancel et saveasui.

Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent


:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...

Encore Merci !

lSteph


"michdenis" a écrit dans le message de news:
%
Bonjour LSteph,


Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)


ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici

*-------------------


Salutations!


"LSteph" a écrit dans le message de news:

Re, bonjour,

le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True

Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!

Bonne journée

lSteph



Private Sub Workbook_Activate()

Application.EnableEvents = True

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)


Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled


If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name

With Feuil1
.Visible = True
.Select
End With

For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next

Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True

For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True

End Sub

Private Sub Workbook_Open()


For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True

End Sub






Avatar
LSteph
???....
Non, pourquoi quels défauts? C'est parfait
sur l'objectif ou préoccupation je répondais à ta question et pour le reste
je te faisais part des points sur lesquels grâce à ton aide j'avais pu de
mon côté avancer..

;-)) pour les parades, précisément tu en trouves, là où je n'avais même pas
vu que j'avais un souci,
alors j'espère bien te trouver à nouveau par là si l'occasion se présente

...encore merci!

lSteph

"michdenis" a écrit dans le message de news:

Bonjour Le Steph,

Comme je n'ai pas retenu dans la version finale, l'objet de ta
préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les
situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas,
cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au
besoin.

Si tu trouves des défauts à la version finale, fais moi parvenir la parade
... pas les défauts ...;-)


Salutations!





"LSteph" a écrit dans le message de news:
%
Re, bonjour,
:o)

ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue

est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but
,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu
ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas
de
saveasui a résolu cela aussi.

Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....

En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai
enfin
compris comment utiliser cancel et saveasui.

Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent


:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...

Encore Merci !

lSteph


"michdenis" a écrit dans le message de news:
%
Bonjour LSteph,


Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)


ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici

*-------------------


Salutations!


"LSteph" a écrit dans le message de news:

Re, bonjour,

le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True

Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!

Bonne journée

lSteph



Private Sub Workbook_Activate()

Application.EnableEvents = True

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)


Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled


If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name

With Feuil1
.Visible = True
.Select
End With

For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next

Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True

For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True

End Sub

Private Sub Workbook_Open()


For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True

End Sub











Avatar
michdenis
Et la preuve qu'on peut se faire avoir (se laisser distraire) par certains tests, tu peux dans la version finale du fichier, enlever
la petite procédure bidon "ActiverEvents" et sa référence dans la procédure événementielle "BeforeClose" ... c'est de la roupe de
sansonnet ! Comme l'onglet Feuil1 correspond enfin à la feuil4 dans la fenêtre VBE, je me suis mépris moi-même lorsque j'ai effectué
un petit test en utilisant les subs événementielles de cette feuille module pour m'assurer que les procédures événementielles
n'avaient pas été désactivées. Sans faire attention, j'ai conclu par l'affirmative alors qu'il n'en était rien.

Voilà pour la petite histoire et ma petite jambe ! ;-))


Salutations!




"LSteph" a écrit dans le message de news:
???....
Non, pourquoi quels défauts? C'est parfait
sur l'objectif ou préoccupation je répondais à ta question et pour le reste
je te faisais part des points sur lesquels grâce à ton aide j'avais pu de
mon côté avancer..

;-)) pour les parades, précisément tu en trouves, là où je n'avais même pas
vu que j'avais un souci,
alors j'espère bien te trouver à nouveau par là si l'occasion se présente

...encore merci!

lSteph

"michdenis" a écrit dans le message de news:

Bonjour Le Steph,

Comme je n'ai pas retenu dans la version finale, l'objet de ta
préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les
situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas,
cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au
besoin.

Si tu trouves des défauts à la version finale, fais moi parvenir la parade
... pas les défauts ...;-)


Salutations!





"LSteph" a écrit dans le message de news:
%
Re, bonjour,
:o)

ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue

est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but
,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu
ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas
de
saveasui a résolu cela aussi.

Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....

En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai
enfin
compris comment utiliser cancel et saveasui.

Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent


:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...

Encore Merci !

lSteph


"michdenis" a écrit dans le message de news:
%
Bonjour LSteph,


Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)


ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici

*-------------------


Salutations!


"LSteph" a écrit dans le message de news:

Re, bonjour,

le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True

Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!

Bonne journée

lSteph



Private Sub Workbook_Activate()

Application.EnableEvents = True

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)


Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled


If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name

With Feuil1
.Visible = True
.Select
End With

For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next

Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True

For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True

End Sub

Private Sub Workbook_Open()


For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True

End Sub











Avatar
LSteph
...pas de souci, comme je te l'ai dit
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires



Cela enregistre, enregistre sous, ferme et le petit protocole d'activation
des macros
donc en l'état cela remplira son usage.

A bientôt.

lSteph


"michdenis" a écrit dans le message de news:
%
Et la preuve qu'on peut se faire avoir (se laisser distraire) par certains
tests, tu peux dans la version finale du fichier, enlever
la petite procédure bidon "ActiverEvents" et sa référence dans la
procédure événementielle "BeforeClose" ... c'est de la roupe de
sansonnet ! Comme l'onglet Feuil1 correspond enfin à la feuil4 dans la
fenêtre VBE, je me suis mépris moi-même lorsque j'ai effectué
un petit test en utilisant les subs événementielles de cette feuille
module pour m'assurer que les procédures événementielles
n'avaient pas été désactivées. Sans faire attention, j'ai conclu par
l'affirmative alors qu'il n'en était rien.

Voilà pour la petite histoire et ma petite jambe ! ;-))


Salutations!




"LSteph" a écrit dans le message de news:

???....
Non, pourquoi quels défauts? C'est parfait
sur l'objectif ou préoccupation je répondais à ta question et pour le
reste
je te faisais part des points sur lesquels grâce à ton aide j'avais pu de
mon côté avancer..

;-)) pour les parades, précisément tu en trouves, là où je n'avais même
pas
vu que j'avais un souci,
alors j'espère bien te trouver à nouveau par là si l'occasion se présente

...encore merci!

lSteph

"michdenis" a écrit dans le message de news:

Bonjour Le Steph,

Comme je n'ai pas retenu dans la version finale, l'objet de ta
préoccupation... je ne vois pas l'intérêt à commenter si ce n'est
pour dire qu'il n'est pas toujours évident de composer avec toutes les
situations qui pourraient arriver et d'inclure dans la
procédure une parade à cet effet ...pour faire cela dans certains cas,
cela demande beaucoup de tests (temps) ... et cela je crois
que le demandeur de la question peut les faire et d'adapter le code au
besoin.

Si tu trouves des défauts à la version finale, fais moi parvenir la
parade
... pas les défauts ...;-)


Salutations!





"LSteph" a écrit dans le message de news:
%
Re, bonjour,
:o)

ça, je ne comprends pas... est-ce vraiment important ?
Oui, c'est primordial outre la question posée, la réponse obtenue

est un support à la réflexion surtout compte tenu de la qualité de tes
contributions.
Pour exemple, je retiens que:
- l'utilisateur pourrait provoquer un break .enablecancelkey
-renommer la feuille > If sh.Name <> Feuil1.Name Then
...etc...
ou bien :
Si tu parles du If .saved true or false , juste que j'ai pas pigé le but
,
sans doute des tests consécutifs ont laissé ceci en l'état,
mais peut être si c'est sur le précédent code que tu m'as proposé et qui
résolvait pourtant déjà beaucoup de choses
il subsistait que par le Menu Fichier Fermer on déclanchait le message
"voulez vous ..? mais n'enregistrait pas
Application.EnableEvents = False avant le me.save du beforeclose a résolu
ce
pb
de même le enregistrer sous ne s'affichait pas , le fait d'ajouter le cas
de
saveasui a résolu cela aussi.

Sinon (ou encore) tu me questionnais sur le but::
Pouvoir distribuer tout classeur sécurisé contenant des macros, à des
utilisateurs peu expérimentés
qui risquent de ne pas activer des macros et fonctions nécessaires au
classeur pour fonctionner parce que le message raconte les risques ....

En tout cas merci beaucoup pour ton aide efficace et pédagogique, j'ai
enfin
compris comment utiliser cancel et saveasui.

Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)
....depuis le précédent


:o))
tu fais bien d'ajouter réellement car je m'en vais étudier pourquoi celui
que je proposais
ne l'est pas autant.
Mais cela aussi, c'est pour me faire avancer ...

Encore Merci !

lSteph


"michdenis" a écrit dans le message de news:
%
Bonjour LSteph,


Voici une version améliorer à cette adresse :
http://cjoint.com/?ipn6VyvlvR
Le seul exemplaire que j'ai vu qui fonctionne réellement !!! ;-)


ça, je ne comprends pas... est-ce vraiment important ?
*-------------------
j'ai modifié
indiqué ' ' ' ici

*-------------------


Salutations!


"LSteph" a écrit dans le message de news:

Re, bonjour,

le truc qui clochait est résolu
je ne sais si c'est optimal mais voici ainsi, ce queprincipalement dans
le beforeSave
Juste une question pas compris :
If Me.Saved = False Or Me.Saved = True

Encore un grand Merci pour ton aide très précieuse
m'en sortais pas!

Bonne journée

lSteph



Private Sub Workbook_Activate()

Application.EnableEvents = True

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.DisplayAlerts = False
If ThisWorkbook.Saved = False Then
res = MsgBox("Désirez-vous enregistrer les modifications apportées au
classeur " & _
ThisWorkbook.Name & " ?", vbInformation + vbYesNoCancel)
Select Case res
Case vbYes
Application.EnableEvents = False '''
Me.Save
Application.EnableEvents = True '''
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)


Dim A As String
Dim S As String
Dim SavN '''ici
S = Application.EnableCancelKey
Application.EnableCancelKey = xlDisabled


If Me.Saved = False Or Me.Saved = True Then
Application.ScreenUpdating = False
A = ActiveSheet.Name

With Feuil1
.Visible = True
.Select
End With

For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = xlVeryHidden
End If
Next

Application.EnableEvents = False
If SaveAsUI Then ''' d'ici
SavN = Application.GetSaveAsFilename
If SavN <> False Then
Me.SaveAs SavN
End If
Else
Me.Save
End If ''à là
Application.EnableEvents = True

For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Sheets(A).Select
Feuil1.Visible = xlVeryHidden
Application.EnableCancelKey = S
Me.Saved = True
End If
Cancel = True

End Sub

Private Sub Workbook_Open()


For Each sh In Worksheets
If sh.Name <> Feuil1.Name Then
sh.Visible = True
End If
Next
Feuil1.Visible = xlVeryHidden
ThisWorkbook.Saved = True

End Sub
















1 2