Bonjour,
Je suis en plein développement Excel avec VBA (macros), en vu d'une
utilisation auprès de différents utilisateurs.
Pour les faire accepter les macro, j'ai inséré une page protégée vérouillant
entièrement l'application et invitant l'utilisateur a changer lui-même son
niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui
fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou Ctrl+S)
ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me pose
la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne
pas lorsque, avec Application.EnableEvents = True, je fais
ActiveWorkbook.Save !!!
Le code s'exécute bien, mais les actions de cacher les feuilles s'exécutent,
mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes les
feuilles sauf la page d'accueil, mais il passe sur le code sans changer la
propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' Ne rien montrer à l'utilisateur
With Application
.EnableEvents = False
.Interactive = False
.ScreenUpdating = False
.DisplayAlerts = False
End With
' Rendre visible la feuille d'accueil et masquer toutes les autres
ActiveWorkbook.Unprotect Password:=Cstr_Pwd
Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible
For Each Lobj_Sheet In Sheets
With Lobj_Sheet
If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden
End With
Next Lobj_Sheet
ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True
' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar de
progression)
With Application
.DisplayStatusBar = True
ActiveWorkbook.Save
.DisplayStatusBar = False
End With
' Annuler la demande d'enregistrement qui a permis d'entrer dans cet
évènement car le fichier vien d'être enregistré...
Cancel = True
' Rendre visible toutes les feuilles et masquer la feuille d'accueil
ActiveWorkbook.Unprotect Password:=Cstr_Pwd
For Each Lobj_Sheet In Sheets
Lobj_Sheet.Visible = xlSheetVisible
Next Lobj_Sheet
Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden
ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True
' Redonner la main à l'utilisateur
With Application
.DisplayAlerts = True
.ScreenUpdating = True
.Interactive = True
.EnableEvents = True
End With
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
PMO
Bonjour,
Peut-être une piste. Changez le passage suivant de votre code
With Application .DisplayStatusBar = True ActiveWorkbook.Save .DisplayStatusBar = False End With
par
With Application .DisplayStatusBar = True .ScreenUpdating = True ActiveWorkbook.Save .ScreenUpdating = False .DisplayStatusBar = False End With
Est-ce que ça apporte l'amélioration souhaitée ?
PMO Patrick Morange
Bonjour, Je suis en plein développement Excel avec VBA (macros), en vu d'une utilisation auprès de différents utilisateurs. Pour les faire accepter les macro, j'ai inséré une page protégée vérouillant entièrement l'application et invitant l'utilisateur a changer lui-même son niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou Ctrl+S) ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me pose la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne pas lorsque, avec Application.EnableEvents = True, je fais ActiveWorkbook.Save !!! Le code s'exécute bien, mais les actions de cacher les feuilles s'exécutent, mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes les feuilles sauf la page d'accueil, mais il passe sur le code sans changer la propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' Ne rien montrer à l'utilisateur With Application .EnableEvents = False .Interactive = False .ScreenUpdating = False .DisplayAlerts = False End With ' Rendre visible la feuille d'accueil et masquer toutes les autres ActiveWorkbook.Unprotect Password:=Cstr_Pwd Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible For Each Lobj_Sheet In Sheets With Lobj_Sheet If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden End With Next Lobj_Sheet ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar de progression) With Application .DisplayStatusBar = True ActiveWorkbook.Save .DisplayStatusBar = False End With ' Annuler la demande d'enregistrement qui a permis d'entrer dans cet évènement car le fichier vien d'être enregistré... Cancel = True ' Rendre visible toutes les feuilles et masquer la feuille d'accueil ActiveWorkbook.Unprotect Password:=Cstr_Pwd For Each Lobj_Sheet In Sheets Lobj_Sheet.Visible = xlSheetVisible Next Lobj_Sheet Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Redonner la main à l'utilisateur With Application .DisplayAlerts = True .ScreenUpdating = True .Interactive = True .EnableEvents = True End With End Sub
Quelqu'un peut-il m'aider ?
-- Bye Yann
Bonjour,
Peut-être une piste.
Changez le passage suivant de votre code
With Application
.DisplayStatusBar = True
ActiveWorkbook.Save
.DisplayStatusBar = False
End With
par
With Application
.DisplayStatusBar = True
.ScreenUpdating = True
ActiveWorkbook.Save
.ScreenUpdating = False
.DisplayStatusBar = False
End With
Est-ce que ça apporte l'amélioration souhaitée ?
PMO
Patrick Morange
Bonjour,
Je suis en plein développement Excel avec VBA (macros), en vu d'une
utilisation auprès de différents utilisateurs.
Pour les faire accepter les macro, j'ai inséré une page protégée vérouillant
entièrement l'application et invitant l'utilisateur a changer lui-même son
niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui
fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou Ctrl+S)
ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me pose
la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne
pas lorsque, avec Application.EnableEvents = True, je fais
ActiveWorkbook.Save !!!
Le code s'exécute bien, mais les actions de cacher les feuilles s'exécutent,
mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes les
feuilles sauf la page d'accueil, mais il passe sur le code sans changer la
propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' Ne rien montrer à l'utilisateur
With Application
.EnableEvents = False
.Interactive = False
.ScreenUpdating = False
.DisplayAlerts = False
End With
' Rendre visible la feuille d'accueil et masquer toutes les autres
ActiveWorkbook.Unprotect Password:=Cstr_Pwd
Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible
For Each Lobj_Sheet In Sheets
With Lobj_Sheet
If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden
End With
Next Lobj_Sheet
ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True
' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar de
progression)
With Application
.DisplayStatusBar = True
ActiveWorkbook.Save
.DisplayStatusBar = False
End With
' Annuler la demande d'enregistrement qui a permis d'entrer dans cet
évènement car le fichier vien d'être enregistré...
Cancel = True
' Rendre visible toutes les feuilles et masquer la feuille d'accueil
ActiveWorkbook.Unprotect Password:=Cstr_Pwd
For Each Lobj_Sheet In Sheets
Lobj_Sheet.Visible = xlSheetVisible
Next Lobj_Sheet
Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden
ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True
' Redonner la main à l'utilisateur
With Application
.DisplayAlerts = True
.ScreenUpdating = True
.Interactive = True
.EnableEvents = True
End With
End Sub
Peut-être une piste. Changez le passage suivant de votre code
With Application .DisplayStatusBar = True ActiveWorkbook.Save .DisplayStatusBar = False End With
par
With Application .DisplayStatusBar = True .ScreenUpdating = True ActiveWorkbook.Save .ScreenUpdating = False .DisplayStatusBar = False End With
Est-ce que ça apporte l'amélioration souhaitée ?
PMO Patrick Morange
Bonjour, Je suis en plein développement Excel avec VBA (macros), en vu d'une utilisation auprès de différents utilisateurs. Pour les faire accepter les macro, j'ai inséré une page protégée vérouillant entièrement l'application et invitant l'utilisateur a changer lui-même son niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou Ctrl+S) ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me pose la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne pas lorsque, avec Application.EnableEvents = True, je fais ActiveWorkbook.Save !!! Le code s'exécute bien, mais les actions de cacher les feuilles s'exécutent, mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes les feuilles sauf la page d'accueil, mais il passe sur le code sans changer la propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' Ne rien montrer à l'utilisateur With Application .EnableEvents = False .Interactive = False .ScreenUpdating = False .DisplayAlerts = False End With ' Rendre visible la feuille d'accueil et masquer toutes les autres ActiveWorkbook.Unprotect Password:=Cstr_Pwd Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible For Each Lobj_Sheet In Sheets With Lobj_Sheet If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden End With Next Lobj_Sheet ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar de progression) With Application .DisplayStatusBar = True ActiveWorkbook.Save .DisplayStatusBar = False End With ' Annuler la demande d'enregistrement qui a permis d'entrer dans cet évènement car le fichier vien d'être enregistré... Cancel = True ' Rendre visible toutes les feuilles et masquer la feuille d'accueil ActiveWorkbook.Unprotect Password:=Cstr_Pwd For Each Lobj_Sheet In Sheets Lobj_Sheet.Visible = xlSheetVisible Next Lobj_Sheet Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Redonner la main à l'utilisateur With Application .DisplayAlerts = True .ScreenUpdating = True .Interactive = True .EnableEvents = True End With End Sub
Quelqu'un peut-il m'aider ?
-- Bye Yann
Yann
Malheureusement non :o(
Bonjour,
Peut-être une piste. Changez le passage suivant de votre code
With Application .DisplayStatusBar = True ActiveWorkbook.Save .DisplayStatusBar = False End With
par
With Application .DisplayStatusBar = True .ScreenUpdating = True ActiveWorkbook.Save .ScreenUpdating = False .DisplayStatusBar = False End With
Est-ce que ça apporte l'amélioration souhaitée ?
PMO Patrick Morange
Bonjour, Je suis en plein développement Excel avec VBA (macros), en vu d'une utilisation auprès de différents utilisateurs. Pour les faire accepter les macro, j'ai inséré une page protégée vérouillant entièrement l'application et invitant l'utilisateur a changer lui-même son niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou Ctrl+S) ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me pose la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne pas lorsque, avec Application.EnableEvents = True, je fais ActiveWorkbook.Save !!! Le code s'exécute bien, mais les actions de cacher les feuilles s'exécutent, mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes les feuilles sauf la page d'accueil, mais il passe sur le code sans changer la propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' Ne rien montrer à l'utilisateur With Application .EnableEvents = False .Interactive = False .ScreenUpdating = False .DisplayAlerts = False End With ' Rendre visible la feuille d'accueil et masquer toutes les autres ActiveWorkbook.Unprotect Password:=Cstr_Pwd Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible For Each Lobj_Sheet In Sheets With Lobj_Sheet If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden End With Next Lobj_Sheet ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar de progression) With Application .DisplayStatusBar = True ActiveWorkbook.Save .DisplayStatusBar = False End With ' Annuler la demande d'enregistrement qui a permis d'entrer dans cet évènement car le fichier vien d'être enregistré... Cancel = True ' Rendre visible toutes les feuilles et masquer la feuille d'accueil ActiveWorkbook.Unprotect Password:=Cstr_Pwd For Each Lobj_Sheet In Sheets Lobj_Sheet.Visible = xlSheetVisible Next Lobj_Sheet Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Redonner la main à l'utilisateur With Application .DisplayAlerts = True .ScreenUpdating = True .Interactive = True .EnableEvents = True End With End Sub
Quelqu'un peut-il m'aider ?
-- Bye Yann
Malheureusement non :o(
Bonjour,
Peut-être une piste.
Changez le passage suivant de votre code
With Application
.DisplayStatusBar = True
ActiveWorkbook.Save
.DisplayStatusBar = False
End With
par
With Application
.DisplayStatusBar = True
.ScreenUpdating = True
ActiveWorkbook.Save
.ScreenUpdating = False
.DisplayStatusBar = False
End With
Est-ce que ça apporte l'amélioration souhaitée ?
PMO
Patrick Morange
Bonjour,
Je suis en plein développement Excel avec VBA (macros), en vu d'une
utilisation auprès de différents utilisateurs.
Pour les faire accepter les macro, j'ai inséré une page protégée vérouillant
entièrement l'application et invitant l'utilisateur a changer lui-même son
niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui
fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou Ctrl+S)
ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me pose
la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne
pas lorsque, avec Application.EnableEvents = True, je fais
ActiveWorkbook.Save !!!
Le code s'exécute bien, mais les actions de cacher les feuilles s'exécutent,
mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes les
feuilles sauf la page d'accueil, mais il passe sur le code sans changer la
propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' Ne rien montrer à l'utilisateur
With Application
.EnableEvents = False
.Interactive = False
.ScreenUpdating = False
.DisplayAlerts = False
End With
' Rendre visible la feuille d'accueil et masquer toutes les autres
ActiveWorkbook.Unprotect Password:=Cstr_Pwd
Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible
For Each Lobj_Sheet In Sheets
With Lobj_Sheet
If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden
End With
Next Lobj_Sheet
ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True
' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar de
progression)
With Application
.DisplayStatusBar = True
ActiveWorkbook.Save
.DisplayStatusBar = False
End With
' Annuler la demande d'enregistrement qui a permis d'entrer dans cet
évènement car le fichier vien d'être enregistré...
Cancel = True
' Rendre visible toutes les feuilles et masquer la feuille d'accueil
ActiveWorkbook.Unprotect Password:=Cstr_Pwd
For Each Lobj_Sheet In Sheets
Lobj_Sheet.Visible = xlSheetVisible
Next Lobj_Sheet
Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden
ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True
' Redonner la main à l'utilisateur
With Application
.DisplayAlerts = True
.ScreenUpdating = True
.Interactive = True
.EnableEvents = True
End With
End Sub
Peut-être une piste. Changez le passage suivant de votre code
With Application .DisplayStatusBar = True ActiveWorkbook.Save .DisplayStatusBar = False End With
par
With Application .DisplayStatusBar = True .ScreenUpdating = True ActiveWorkbook.Save .ScreenUpdating = False .DisplayStatusBar = False End With
Est-ce que ça apporte l'amélioration souhaitée ?
PMO Patrick Morange
Bonjour, Je suis en plein développement Excel avec VBA (macros), en vu d'une utilisation auprès de différents utilisateurs. Pour les faire accepter les macro, j'ai inséré une page protégée vérouillant entièrement l'application et invitant l'utilisateur a changer lui-même son niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou Ctrl+S) ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me pose la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne pas lorsque, avec Application.EnableEvents = True, je fais ActiveWorkbook.Save !!! Le code s'exécute bien, mais les actions de cacher les feuilles s'exécutent, mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes les feuilles sauf la page d'accueil, mais il passe sur le code sans changer la propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' Ne rien montrer à l'utilisateur With Application .EnableEvents = False .Interactive = False .ScreenUpdating = False .DisplayAlerts = False End With ' Rendre visible la feuille d'accueil et masquer toutes les autres ActiveWorkbook.Unprotect Password:=Cstr_Pwd Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible For Each Lobj_Sheet In Sheets With Lobj_Sheet If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden End With Next Lobj_Sheet ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar de progression) With Application .DisplayStatusBar = True ActiveWorkbook.Save .DisplayStatusBar = False End With ' Annuler la demande d'enregistrement qui a permis d'entrer dans cet évènement car le fichier vien d'être enregistré... Cancel = True ' Rendre visible toutes les feuilles et masquer la feuille d'accueil ActiveWorkbook.Unprotect Password:=Cstr_Pwd For Each Lobj_Sheet In Sheets Lobj_Sheet.Visible = xlSheetVisible Next Lobj_Sheet Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Redonner la main à l'utilisateur With Application .DisplayAlerts = True .ScreenUpdating = True .Interactive = True .EnableEvents = True End With End Sub
Quelqu'un peut-il m'aider ?
-- Bye Yann
Pounet95
Bonjour, Qu'est-ce que Cstr_WelcomeSheetName ? Une variable contenant le nom de la feuille ? Le nom de la feuille ?
-- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/
"Yann" a écrit dans le message de news:
Bonjour, Je suis en plein développement Excel avec VBA (macros), en vu d'une utilisation auprès de différents utilisateurs. Pour les faire accepter les macro, j'ai inséré une page protégée vérouillant entièrement l'application et invitant l'utilisateur a changer lui-même son niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou Ctrl+S) ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me pose la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne pas lorsque, avec Application.EnableEvents = True, je fais ActiveWorkbook.Save !!! Le code s'exécute bien, mais les actions de cacher les feuilles s'exécutent, mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes les feuilles sauf la page d'accueil, mais il passe sur le code sans changer la propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' Ne rien montrer à l'utilisateur With Application .EnableEvents = False .Interactive = False .ScreenUpdating = False .DisplayAlerts = False End With ' Rendre visible la feuille d'accueil et masquer toutes les autres ActiveWorkbook.Unprotect Password:=Cstr_Pwd Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible For Each Lobj_Sheet In Sheets With Lobj_Sheet If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden End With Next Lobj_Sheet ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar de progression) With Application .DisplayStatusBar = True ActiveWorkbook.Save .DisplayStatusBar = False End With ' Annuler la demande d'enregistrement qui a permis d'entrer dans cet évènement car le fichier vien d'être enregistré... Cancel = True ' Rendre visible toutes les feuilles et masquer la feuille d'accueil ActiveWorkbook.Unprotect Password:=Cstr_Pwd For Each Lobj_Sheet In Sheets Lobj_Sheet.Visible = xlSheetVisible Next Lobj_Sheet Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Redonner la main à l'utilisateur With Application .DisplayAlerts = True .ScreenUpdating = True .Interactive = True .EnableEvents = True End With End Sub
Quelqu'un peut-il m'aider ?
-- Bye Yann
Bonjour,
Qu'est-ce que Cstr_WelcomeSheetName ?
Une variable contenant le nom de la feuille ? Le nom de la feuille ?
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
"Yann" <ypelissier@yahooo.com> a écrit dans le message de news:
77C2DCB6-4549-42CD-8416-4A17F8E36460@microsoft.com...
Bonjour,
Je suis en plein développement Excel avec VBA (macros), en vu d'une
utilisation auprès de différents utilisateurs.
Pour les faire accepter les macro, j'ai inséré une page protégée
vérouillant
entièrement l'application et invitant l'utilisateur a changer lui-même son
niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui
fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou
Ctrl+S)
ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me
pose
la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne
pas lorsque, avec Application.EnableEvents = True, je fais
ActiveWorkbook.Save !!!
Le code s'exécute bien, mais les actions de cacher les feuilles
s'exécutent,
mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes
les
feuilles sauf la page d'accueil, mais il passe sur le code sans changer la
propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
' Ne rien montrer à l'utilisateur
With Application
.EnableEvents = False
.Interactive = False
.ScreenUpdating = False
.DisplayAlerts = False
End With
' Rendre visible la feuille d'accueil et masquer toutes les autres
ActiveWorkbook.Unprotect Password:=Cstr_Pwd
Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible
For Each Lobj_Sheet In Sheets
With Lobj_Sheet
If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden
End With
Next Lobj_Sheet
ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True
' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar
de
progression)
With Application
.DisplayStatusBar = True
ActiveWorkbook.Save
.DisplayStatusBar = False
End With
' Annuler la demande d'enregistrement qui a permis d'entrer dans cet
évènement car le fichier vien d'être enregistré...
Cancel = True
' Rendre visible toutes les feuilles et masquer la feuille d'accueil
ActiveWorkbook.Unprotect Password:=Cstr_Pwd
For Each Lobj_Sheet In Sheets
Lobj_Sheet.Visible = xlSheetVisible
Next Lobj_Sheet
Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden
ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True
' Redonner la main à l'utilisateur
With Application
.DisplayAlerts = True
.ScreenUpdating = True
.Interactive = True
.EnableEvents = True
End With
End Sub
Bonjour, Qu'est-ce que Cstr_WelcomeSheetName ? Une variable contenant le nom de la feuille ? Le nom de la feuille ?
-- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/
"Yann" a écrit dans le message de news:
Bonjour, Je suis en plein développement Excel avec VBA (macros), en vu d'une utilisation auprès de différents utilisateurs. Pour les faire accepter les macro, j'ai inséré une page protégée vérouillant entièrement l'application et invitant l'utilisateur a changer lui-même son niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou Ctrl+S) ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me pose la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne pas lorsque, avec Application.EnableEvents = True, je fais ActiveWorkbook.Save !!! Le code s'exécute bien, mais les actions de cacher les feuilles s'exécutent, mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes les feuilles sauf la page d'accueil, mais il passe sur le code sans changer la propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' Ne rien montrer à l'utilisateur With Application .EnableEvents = False .Interactive = False .ScreenUpdating = False .DisplayAlerts = False End With ' Rendre visible la feuille d'accueil et masquer toutes les autres ActiveWorkbook.Unprotect Password:=Cstr_Pwd Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible For Each Lobj_Sheet In Sheets With Lobj_Sheet If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden End With Next Lobj_Sheet ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar de progression) With Application .DisplayStatusBar = True ActiveWorkbook.Save .DisplayStatusBar = False End With ' Annuler la demande d'enregistrement qui a permis d'entrer dans cet évènement car le fichier vien d'être enregistré... Cancel = True ' Rendre visible toutes les feuilles et masquer la feuille d'accueil ActiveWorkbook.Unprotect Password:=Cstr_Pwd For Each Lobj_Sheet In Sheets Lobj_Sheet.Visible = xlSheetVisible Next Lobj_Sheet Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Redonner la main à l'utilisateur With Application .DisplayAlerts = True .ScreenUpdating = True .Interactive = True .EnableEvents = True End With End Sub
Quelqu'un peut-il m'aider ?
-- Bye Yann
Yann
C'est bien la constante contenant le nom de la page d'accueil.
"Pounet95" wrote:
Bonjour, Qu'est-ce que Cstr_WelcomeSheetName ? Une variable contenant le nom de la feuille ? Le nom de la feuille ?
-- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/
"Yann" a écrit dans le message de news:
Bonjour, Je suis en plein développement Excel avec VBA (macros), en vu d'une utilisation auprès de différents utilisateurs. Pour les faire accepter les macro, j'ai inséré une page protégée vérouillant entièrement l'application et invitant l'utilisateur a changer lui-même son niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou Ctrl+S) ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me pose la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne pas lorsque, avec Application.EnableEvents = True, je fais ActiveWorkbook.Save !!! Le code s'exécute bien, mais les actions de cacher les feuilles s'exécutent, mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes les feuilles sauf la page d'accueil, mais il passe sur le code sans changer la propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' Ne rien montrer à l'utilisateur With Application .EnableEvents = False .Interactive = False .ScreenUpdating = False .DisplayAlerts = False End With ' Rendre visible la feuille d'accueil et masquer toutes les autres ActiveWorkbook.Unprotect Password:=Cstr_Pwd Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible For Each Lobj_Sheet In Sheets With Lobj_Sheet If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden End With Next Lobj_Sheet ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar de progression) With Application .DisplayStatusBar = True ActiveWorkbook.Save .DisplayStatusBar = False End With ' Annuler la demande d'enregistrement qui a permis d'entrer dans cet évènement car le fichier vien d'être enregistré... Cancel = True ' Rendre visible toutes les feuilles et masquer la feuille d'accueil ActiveWorkbook.Unprotect Password:=Cstr_Pwd For Each Lobj_Sheet In Sheets Lobj_Sheet.Visible = xlSheetVisible Next Lobj_Sheet Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Redonner la main à l'utilisateur With Application .DisplayAlerts = True .ScreenUpdating = True .Interactive = True .EnableEvents = True End With End Sub
Quelqu'un peut-il m'aider ?
-- Bye Yann
C'est bien la constante contenant le nom de la page d'accueil.
"Pounet95" wrote:
Bonjour,
Qu'est-ce que Cstr_WelcomeSheetName ?
Une variable contenant le nom de la feuille ? Le nom de la feuille ?
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
"Yann" <ypelissier@yahooo.com> a écrit dans le message de news:
77C2DCB6-4549-42CD-8416-4A17F8E36460@microsoft.com...
Bonjour,
Je suis en plein développement Excel avec VBA (macros), en vu d'une
utilisation auprès de différents utilisateurs.
Pour les faire accepter les macro, j'ai inséré une page protégée
vérouillant
entièrement l'application et invitant l'utilisateur a changer lui-même son
niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui
fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou
Ctrl+S)
ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me
pose
la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne
pas lorsque, avec Application.EnableEvents = True, je fais
ActiveWorkbook.Save !!!
Le code s'exécute bien, mais les actions de cacher les feuilles
s'exécutent,
mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes
les
feuilles sauf la page d'accueil, mais il passe sur le code sans changer la
propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
' Ne rien montrer à l'utilisateur
With Application
.EnableEvents = False
.Interactive = False
.ScreenUpdating = False
.DisplayAlerts = False
End With
' Rendre visible la feuille d'accueil et masquer toutes les autres
ActiveWorkbook.Unprotect Password:=Cstr_Pwd
Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible
For Each Lobj_Sheet In Sheets
With Lobj_Sheet
If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden
End With
Next Lobj_Sheet
ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True
' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar
de
progression)
With Application
.DisplayStatusBar = True
ActiveWorkbook.Save
.DisplayStatusBar = False
End With
' Annuler la demande d'enregistrement qui a permis d'entrer dans cet
évènement car le fichier vien d'être enregistré...
Cancel = True
' Rendre visible toutes les feuilles et masquer la feuille d'accueil
ActiveWorkbook.Unprotect Password:=Cstr_Pwd
For Each Lobj_Sheet In Sheets
Lobj_Sheet.Visible = xlSheetVisible
Next Lobj_Sheet
Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden
ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True
' Redonner la main à l'utilisateur
With Application
.DisplayAlerts = True
.ScreenUpdating = True
.Interactive = True
.EnableEvents = True
End With
End Sub
C'est bien la constante contenant le nom de la page d'accueil.
"Pounet95" wrote:
Bonjour, Qu'est-ce que Cstr_WelcomeSheetName ? Une variable contenant le nom de la feuille ? Le nom de la feuille ?
-- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/
"Yann" a écrit dans le message de news:
Bonjour, Je suis en plein développement Excel avec VBA (macros), en vu d'une utilisation auprès de différents utilisateurs. Pour les faire accepter les macro, j'ai inséré une page protégée vérouillant entièrement l'application et invitant l'utilisateur a changer lui-même son niveau de sécurité d'Excel et à accepter les macros.
Pour ce faire, j'ai écrit une procédure dans l'évènement BeforeSave qui fonctionne très bien lorsque j'appuie sur le boutton enregistrer (ou Ctrl+S) ou même lorsque je veux quitter Excel sans avoir enregistré, et qu'il me pose la question "voulez-vous enregistrer le fichier ?", mais qui ne fonctionne pas lorsque, avec Application.EnableEvents = True, je fais ActiveWorkbook.Save !!! Le code s'exécute bien, mais les actions de cacher les feuilles s'exécutent, mais il n'y a aucune concéquence !!! En clair, je souhaite cacher toutes les feuilles sauf la page d'accueil, mais il passe sur le code sans changer la propriété visible de chaque feuille comme demandé...
Le mieux est encore d'avoir le code...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' Ne rien montrer à l'utilisateur With Application .EnableEvents = False .Interactive = False .ScreenUpdating = False .DisplayAlerts = False End With ' Rendre visible la feuille d'accueil et masquer toutes les autres ActiveWorkbook.Unprotect Password:=Cstr_Pwd Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVisible For Each Lobj_Sheet In Sheets With Lobj_Sheet If .Name <> Cstr_WelcomeSheetName Then .Visible = xlSheetVeryHidden End With Next Lobj_Sheet ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Enregistrer en montrant à l'utilisateur l'enregistrement en cours (bar de progression) With Application .DisplayStatusBar = True ActiveWorkbook.Save .DisplayStatusBar = False End With ' Annuler la demande d'enregistrement qui a permis d'entrer dans cet évènement car le fichier vien d'être enregistré... Cancel = True ' Rendre visible toutes les feuilles et masquer la feuille d'accueil ActiveWorkbook.Unprotect Password:=Cstr_Pwd For Each Lobj_Sheet In Sheets Lobj_Sheet.Visible = xlSheetVisible Next Lobj_Sheet Sheets(Cstr_WelcomeSheetName).Visible = xlSheetVeryHidden ActiveWorkbook.Protect Password:=Cstr_Pwd, Structure:=True ' Redonner la main à l'utilisateur With Application .DisplayAlerts = True .ScreenUpdating = True .Interactive = True .EnableEvents = True End With End Sub