Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fermer un fichier si sauvegarde demandée.

6 réponses
Avatar
StDonat
Bonjour

Je souhaiterai faire cela… Fermer un fichier si sauvegarde demandée.

En fait lorsque j’enregistre un fichier, par Workbook_BeforeSave, je masque
toutes les feuilles sauf une, afin d’obliger les utilisateurs à activer les
macros pour pouvoir utiliser le fichier. Si les macros ne sont pas activer
toutes les feuilles sauf une sont donc masquées. Problème, si j’enregistre,
par la commande fichier enregistré, ou par l’icône associé, les feuilles se
masque mais je n’arrive pas à forcer la fermeture de mon fichier
thisworbook.close saveschange=false ou true ne ferme pas mon fichier !!


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

'Toutes les feuilles, sauf une, sont masqué afin de les rendres invisibles
si les macros ne sont pas activées
F1.Visible = xlSheetVisible
For s = 2 To Sheets.Count
Sheets(s).Visible = xlSheetVeryHidden
Next
ThisWorkbook.Close savechanges:=True!!!!!!
End Sub

Merci de votre aide

6 réponses

Avatar
Daniel.C
Bonjour.
Essaie :

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

'Toutes les feuilles, sauf une, sont masqué afin de les rendres
invisibles
'si les macros ne sont pas activées
Cancel = True
F1.Visible = xlSheetVisible
For s = 2 To Sheets.Count
Sheets(s).Visible = xlSheetVeryHidden
Next

Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
ThisWorkbook.Close False
End Sub

Cordialement.
Daniel

Bonjour

Je souhaiterai faire cela… Fermer un fichier si sauvegarde demandée.

En fait lorsque j’enregistre un fichier, par Workbook_BeforeSave, je masque
toutes les feuilles sauf une, afin d’obliger les utilisateurs à activer les
macros pour pouvoir utiliser le fichier. Si les macros ne sont pas activer
toutes les feuilles sauf une sont donc masquées. Problème, si j’enregistre,
par la commande fichier enregistré, ou par l’icône associé, les feuilles se
masque mais je n’arrive pas à forcer la fermeture de mon fichier
thisworbook.close saveschangeúlse ou true ne ferme pas mon fichier !!


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

'Toutes les feuilles, sauf une, sont masqué afin de les rendres invisibles
si les macros ne sont pas activées
F1.Visible = xlSheetVisible
For s = 2 To Sheets.Count
Sheets(s).Visible = xlSheetVeryHidden
Next
ThisWorkbook.Close savechanges:=True!!!!!!
End Sub

Merci de votre aide
Avatar
StDonat
Merci, C'est nickel, C'est propre!

"Daniel.C" wrote:

Bonjour.
Essaie :

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

'Toutes les feuilles, sauf une, sont masqué afin de les rendres
invisibles
'si les macros ne sont pas activées
Cancel = True
F1.Visible = xlSheetVisible
For s = 2 To Sheets.Count
Sheets(s).Visible = xlSheetVeryHidden
Next

Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
ThisWorkbook.Close False
End Sub

Cordialement.
Daniel

> Bonjour
>
> Je souhaiterai faire cela… Fermer un fichier si sauvegarde demandée.
>
> En fait lorsque j’enregistre un fichier, par Workbook_BeforeSave, je masque
> toutes les feuilles sauf une, afin d’obliger les utilisateurs à activer les
> macros pour pouvoir utiliser le fichier. Si les macros ne sont pas activer
> toutes les feuilles sauf une sont donc masquées. Problème, si j’enregistre,
> par la commande fichier enregistré, ou par l’icône associé, les feuilles se
> masque mais je n’arrive pas à forcer la fermeture de mon fichier
> thisworbook.close saveschangeúlse ou true ne ferme pas mon fichier !!
>
>
> Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
>
> 'Toutes les feuilles, sauf une, sont masqué afin de les rendres invisibles
> si les macros ne sont pas activées
> F1.Visible = xlSheetVisible
> For s = 2 To Sheets.Count
> Sheets(s).Visible = xlSheetVeryHidden
> Next
> ThisWorkbook.Close savechanges:=True!!!!!!
> End Sub
>
> Merci de votre aide


.

Avatar
StDonat
Il me semblait que cela était nickel mais en fait il persiste un gros bug
Si je fait fichier quitter, enregistrer je réponds oui, le fichier se ferme,
s’enregistre mais Excel se ferme avec un gros message d’erreur et tans pis
s’il y avait d’autres fichier excel ouvert et non sauvegardés !
As-tu une solution ?
Merci


"Daniel.C" wrote:

Bonjour.
Essaie :

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

'Toutes les feuilles, sauf une, sont masqué afin de les rendres
invisibles
'si les macros ne sont pas activées
Cancel = True
F1.Visible = xlSheetVisible
For s = 2 To Sheets.Count
Sheets(s).Visible = xlSheetVeryHidden
Next

Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
ThisWorkbook.Close False
End Sub

Cordialement.
Daniel

> Bonjour
>
> Je souhaiterai faire cela… Fermer un fichier si sauvegarde demandée.
>
> En fait lorsque j’enregistre un fichier, par Workbook_BeforeSave, je masque
> toutes les feuilles sauf une, afin d’obliger les utilisateurs à activer les
> macros pour pouvoir utiliser le fichier. Si les macros ne sont pas activer
> toutes les feuilles sauf une sont donc masquées. Problème, si j’enregistre,
> par la commande fichier enregistré, ou par l’icône associé, les feuilles se
> masque mais je n’arrive pas à forcer la fermeture de mon fichier
> thisworbook.close saveschangeúlse ou true ne ferme pas mon fichier !!
>
>
> Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
>
> 'Toutes les feuilles, sauf une, sont masqué afin de les rendres invisibles
> si les macros ne sont pas activées
> F1.Visible = xlSheetVisible
> For s = 2 To Sheets.Count
> Sheets(s).Visible = xlSheetVeryHidden
> Next
> ThisWorkbook.Close savechanges:=True!!!!!!
> End Sub
>
> Merci de votre aide


.

Avatar
Daniel.C
Bonjour.
C'est quoi ton gros message d'erreur ? Quelle est ta version d'excel ?
Je n'arrive pas à reproduire ici.
Daniel

Il me semblait que cela était nickel mais en fait il persiste un gros bug
Si je fait fichier quitter, enregistrer je réponds oui, le fichier se ferme,
s’enregistre mais Excel se ferme avec un gros message d’erreur et tans pis
s’il y avait d’autres fichier excel ouvert et non sauvegardés !
As-tu une solution ?
Merci


"Daniel.C" wrote:

Bonjour.
Essaie :

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

'Toutes les feuilles, sauf une, sont masqué afin de les rendres
invisibles
'si les macros ne sont pas activées
Cancel = True
F1.Visible = xlSheetVisible
For s = 2 To Sheets.Count
Sheets(s).Visible = xlSheetVeryHidden
Next

Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
ThisWorkbook.Close False
End Sub

Cordialement.
Daniel

Bonjour

Je souhaiterai faire cela… Fermer un fichier si sauvegarde demandée.

En fait lorsque j’enregistre un fichier, par Workbook_BeforeSave, je masque
toutes les feuilles sauf une, afin d’obliger les utilisateurs à activer les
macros pour pouvoir utiliser le fichier. Si les macros ne sont pas activer
toutes les feuilles sauf une sont donc masquées. Problème, si j’enregistre,
par la commande fichier enregistré, ou par l’icône associé, les feuilles se
masque mais je n’arrive pas à forcer la fermeture de mon fichier
thisworbook.close saveschangeúlse ou true ne ferme pas mon fichier !!


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

'Toutes les feuilles, sauf une, sont masqué afin de les rendres invisibles
si les macros ne sont pas activées
F1.Visible = xlSheetVisible
For s = 2 To Sheets.Count
Sheets(s).Visible = xlSheetVeryHidden
Next
ThisWorkbook.Close savechanges:=True!!!!!!
End Sub

Merci de votre aide




.

Avatar
StDonat
Bonjour
Désolé de mettre si longtemps pour te répondre, mais j'ai des probleme pour
me connecter sur se forum mais egalement pour retrouver ce post!!
Ma version d'excel et 2003 et le message d'erreur et le suivant:
"Microsoft Office Excel a rencontré un problème et doit être fermé. Nous
vous prions de nous excuser pour le désagrément encouru".

"Daniel.C" wrote:

Bonjour.
C'est quoi ton gros message d'erreur ? Quelle est ta version d'excel ?
Je n'arrive pas à reproduire ici.
Daniel

> Il me semblait que cela était nickel mais en fait il persiste un gros bug
> Si je fait fichier quitter, enregistrer je réponds oui, le fichier se ferme,
> s’enregistre mais Excel se ferme avec un gros message d’erreur et tans pis
> s’il y avait d’autres fichier excel ouvert et non sauvegardés !
> As-tu une solution ?
> Merci
>
>
> "Daniel.C" wrote:
>
>> Bonjour.
>> Essaie :
>>
>> Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
>> Boolean)
>>
>> 'Toutes les feuilles, sauf une, sont masqué afin de les rendres
>> invisibles
>> 'si les macros ne sont pas activées
>> Cancel = True
>> F1.Visible = xlSheetVisible
>> For s = 2 To Sheets.Count
>> Sheets(s).Visible = xlSheetVeryHidden
>> Next
>>
>> Application.EnableEvents = False
>> ThisWorkbook.Save
>> Application.EnableEvents = True
>> ThisWorkbook.Close False
>> End Sub
>>
>> Cordialement.
>> Daniel
>>
>>> Bonjour
>>>
>>> Je souhaiterai faire cela… Fermer un fichier si sauvegarde demandée.
>>>
>>> En fait lorsque j’enregistre un fichier, par Workbook_BeforeSave, je masque
>>> toutes les feuilles sauf une, afin d’obliger les utilisateurs à activer les
>>> macros pour pouvoir utiliser le fichier. Si les macros ne sont pas activer
>>> toutes les feuilles sauf une sont donc masquées. Problème, si j’enregistre,
>>> par la commande fichier enregistré, ou par l’icône associé, les feuilles se
>>> masque mais je n’arrive pas à forcer la fermeture de mon fichier
>>> thisworbook.close saveschangeúlse ou true ne ferme pas mon fichier !!
>>>
>>>
>>> Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
>>> Boolean)
>>>
>>> 'Toutes les feuilles, sauf une, sont masqué afin de les rendres invisibles
>>> si les macros ne sont pas activées
>>> F1.Visible = xlSheetVisible
>>> For s = 2 To Sheets.Count
>>> Sheets(s).Visible = xlSheetVeryHidden
>>> Next
>>> ThisWorkbook.Close savechanges:=True!!!!!!
>>> End Sub
>>>
>>> Merci de votre aide
>>
>>
>> .
>>


.

Avatar
michdenis
Bonjour,

Dans la macro initiale proposée par Daniel,

Elle se termine par ces lignes de code :

'-----------------
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
ThisWorkbook.Close False
'-----------------

Le classeur a déjà été enregistré par la ligne :
ThisWorkbook.Save

Pourquoi vouloir l'enregistrer à nouveau 2 lignes plus bas
avec : ThisWorkbook.Close true
Si tu inscris cette ligne, ThisWorkbook.Close true ceci va
provoquer l'exécution à nouveau la procédure événementielle
Workbook_BeforeSave -> et voilà c'est la boucle à l'infini avant
qu'Excel se fâche ! Excel reçoit 2 ordres : enregistrer le classeur
(il ne peut pas, il est pris dans la boucle) et Fermer le classeur.
Tu as une sortie en catastrophe !
;-))





"StDonat" a écrit dans le message de groupe de
discussion :
Bonjour
Désolé de mettre si longtemps pour te répondre, mais j'ai des probleme pour
me connecter sur se forum mais egalement pour retrouver ce post!!
Ma version d'excel et 2003 et le message d'erreur et le suivant:
"Microsoft Office Excel a rencontré un problème et doit être fermé. Nous
vous prions de nous excuser pour le désagrément encouru".

"Daniel.C" wrote:

Bonjour.
C'est quoi ton gros message d'erreur ? Quelle est ta version d'excel ?
Je n'arrive pas à reproduire ici.
Daniel

> Il me semblait que cela était nickel mais en fait il persiste un gros bug
> Si je fait fichier quitter, enregistrer je réponds oui, le fichier se ferme,
> s’enregistre mais Excel se ferme avec un gros message d’erreur et tans pis
> s’il y avait d’autres fichier excel ouvert et non sauvegardés !
> As-tu une solution ?
> Merci
>
>
> "Daniel.C" wrote:
>
>> Bonjour.
>> Essaie :
>>
>> Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
>> Boolean)
>>
>> 'Toutes les feuilles, sauf une, sont masqué afin de les rendres
>> invisibles
>> 'si les macros ne sont pas activées
>> Cancel = True
>> F1.Visible = xlSheetVisible
>> For s = 2 To Sheets.Count
>> Sheets(s).Visible = xlSheetVeryHidden
>> Next
>>
>> Application.EnableEvents = False
>> ThisWorkbook.Save
>> Application.EnableEvents = True
>> ThisWorkbook.Close False
>> End Sub
>>
>> Cordialement.
>> Daniel
>>
>>> Bonjour
>>>
>>> Je souhaiterai faire cela… Fermer un fichier si sauvegarde demandée.
>>>
>>> En fait lorsque j’enregistre un fichier, par Workbook_BeforeSave, je masque
>>> toutes les feuilles sauf une, afin d’obliger les utilisateurs à activer les
>>> macros pour pouvoir utiliser le fichier. Si les macros ne sont pas activer
>>> toutes les feuilles sauf une sont donc masquées. Problème, si j’enregistre,
>>> par la commande fichier enregistré, ou par l’icône associé, les feuilles se
>>> masque mais je n’arrive pas à forcer la fermeture de mon fichier
>>> thisworbook.close saveschangeúlse ou true ne ferme pas mon fichier !!
>>>
>>>
>>> Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
>>> Boolean)
>>>
>>> 'Toutes les feuilles, sauf une, sont masqué afin de les rendres invisibles
>>> si les macros ne sont pas activées
>>> F1.Visible = xlSheetVisible
>>> For s = 2 To Sheets.Count
>>> Sheets(s).Visible = xlSheetVeryHidden
>>> Next
>>> ThisWorkbook.Close savechanges:=True!!!!!!
>>> End Sub
>>>
>>> Merci de votre aide
>>
>>
>> .
>>


.