Je n'arrive pas à trouver une solution pour SORTIR de cette procédure
si l'utilisateur clic sur "Enregistrer Sous". Ceci est un essai parmi
beaucoup d'autres ...
La procédure semble fonctionner jusqu'au bout ("pas à pas") si
l'utilisateur clique sur "Enregistrer sous", mais le classeur ne se
ferme pas !!!!
'---------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim Sh As Worksheet
Dim MaPlageDeSaisies
Dim PlageDeSaisies
On Error Resume Next
Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin",
Schedule:=False
If SaveAsUI Then
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
_
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
GoTo suite:
Else 'End If
suite:
With ThisWorkbook
ChDrive "C"
ChDir .Path
Application.ScreenUpdating = False
With Feuil2
.Unprotect
.[b3:i2000].Locked = False
End With
MaPlageDeSaisies = Range("B3:I" &
Application.CountA(Range("G:G"))).Address
With Range(MaPlageDeSaisies)
.Locked = True
.FormulaHidden = False
End With
With ActiveSheet
.Protect _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True
.EnableSelection = xlUnlockedCells
End With
Application.EnableEvents = False
With Feuil3
.Visible = True '[accueil] visible
.Activate
ActiveWindow.ScrollRow = 1
End With
Application.EnableEvents = True
For Each Sh In ThisWorkbook.Sheets
If Sh.CodeName <> "Feuil3" Then Sh.Visible =
xlSheetVeryHidden
Next
.SaveCopyAs Format(Now, "yyyymmdd-hh""h""nn") & " " & .Name
End With
End If
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
Papyjac
Bonjour J-pascal
Je déconseille de mettre du code applicatif dans les procédures événement : Il faut mettre juste du code technique, car effectivement il se peut que le "cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce code
En fait, si je comprends un peu, quand l'utilssateur clique enregistré sous, tu lui refuse cette option (on sait qu'il pourra toujours le faire s'il n'active pas les macros)
Bref tu positionne Cancel = True donc le classeur reste ouvert
-- Papyjac
"j-pascal" a écrit :
Bonjour,
Je n'arrive pas à trouver une solution pour SORTIR de cette procédure si l'utilisateur clic sur "Enregistrer Sous". Ceci est un essai parmi beaucoup d'autres ...
La procédure semble fonctionner jusqu'au bout ("pas à pas") si l'utilisateur clique sur "Enregistrer sous", mais le classeur ne se ferme pas !!!!
'--------------------- Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim Sh As Worksheet Dim MaPlageDeSaisies Dim PlageDeSaisies
On Error Resume Next Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin", Schedule:úlse
If SaveAsUI Then MsgBox "Désolé, l'option Enregistrer sous... est impossible !", _ vbExclamation, "choix possibles : Enregistrer ou Fermer" Cancel = True GoTo suite: Else 'End If suite: With ThisWorkbook ChDrive "C" ChDir .Path
Application.ScreenUpdating = False
With Feuil2 .Unprotect .[b3:i2000].Locked = False End With
MaPlageDeSaisies = Range("B3:I" & Application.CountA(Range("G:G"))).Address With Range(MaPlageDeSaisies) .Locked = True .FormulaHidden = False End With
With ActiveSheet .Protect _ DrawingObjects:=True, _ Contents:=True, _ Scenarios:=True .EnableSelection = xlUnlockedCells End With
Application.EnableEvents = False With Feuil3 .Visible = True '[accueil] visible .Activate ActiveWindow.ScrollRow = 1 End With Application.EnableEvents = True
For Each Sh In ThisWorkbook.Sheets If Sh.CodeName <> "Feuil3" Then Sh.Visible = xlSheetVeryHidden Next .SaveCopyAs Format(Now, "yyyymmdd-hh""h""nn") & " " & .Name End With End If
End Sub '---------------------
Merci pour votre aide,
JP
Bonjour J-pascal
Je déconseille de mettre du code applicatif dans les procédures événement :
Il faut mettre juste du code technique, car effectivement il se peut que le
"cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce
code
En fait, si je comprends un peu, quand l'utilssateur clique enregistré sous,
tu lui refuse cette option (on sait qu'il pourra toujours le faire s'il
n'active pas les macros)
Bref tu positionne Cancel = True donc le classeur reste ouvert
--
Papyjac
"j-pascal" a écrit :
Bonjour,
Je n'arrive pas à trouver une solution pour SORTIR de cette procédure
si l'utilisateur clic sur "Enregistrer Sous". Ceci est un essai parmi
beaucoup d'autres ...
La procédure semble fonctionner jusqu'au bout ("pas à pas") si
l'utilisateur clique sur "Enregistrer sous", mais le classeur ne se
ferme pas !!!!
'---------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim Sh As Worksheet
Dim MaPlageDeSaisies
Dim PlageDeSaisies
On Error Resume Next
Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin",
Schedule:úlse
If SaveAsUI Then
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
_
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
GoTo suite:
Else 'End If
suite:
With ThisWorkbook
ChDrive "C"
ChDir .Path
Application.ScreenUpdating = False
With Feuil2
.Unprotect
.[b3:i2000].Locked = False
End With
MaPlageDeSaisies = Range("B3:I" &
Application.CountA(Range("G:G"))).Address
With Range(MaPlageDeSaisies)
.Locked = True
.FormulaHidden = False
End With
With ActiveSheet
.Protect _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True
.EnableSelection = xlUnlockedCells
End With
Application.EnableEvents = False
With Feuil3
.Visible = True '[accueil] visible
.Activate
ActiveWindow.ScrollRow = 1
End With
Application.EnableEvents = True
For Each Sh In ThisWorkbook.Sheets
If Sh.CodeName <> "Feuil3" Then Sh.Visible =
xlSheetVeryHidden
Next
.SaveCopyAs Format(Now, "yyyymmdd-hh""h""nn") & " " & .Name
End With
End If
Je déconseille de mettre du code applicatif dans les procédures événement : Il faut mettre juste du code technique, car effectivement il se peut que le "cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce code
En fait, si je comprends un peu, quand l'utilssateur clique enregistré sous, tu lui refuse cette option (on sait qu'il pourra toujours le faire s'il n'active pas les macros)
Bref tu positionne Cancel = True donc le classeur reste ouvert
-- Papyjac
"j-pascal" a écrit :
Bonjour,
Je n'arrive pas à trouver une solution pour SORTIR de cette procédure si l'utilisateur clic sur "Enregistrer Sous". Ceci est un essai parmi beaucoup d'autres ...
La procédure semble fonctionner jusqu'au bout ("pas à pas") si l'utilisateur clique sur "Enregistrer sous", mais le classeur ne se ferme pas !!!!
'--------------------- Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim Sh As Worksheet Dim MaPlageDeSaisies Dim PlageDeSaisies
On Error Resume Next Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin", Schedule:úlse
If SaveAsUI Then MsgBox "Désolé, l'option Enregistrer sous... est impossible !", _ vbExclamation, "choix possibles : Enregistrer ou Fermer" Cancel = True GoTo suite: Else 'End If suite: With ThisWorkbook ChDrive "C" ChDir .Path
Application.ScreenUpdating = False
With Feuil2 .Unprotect .[b3:i2000].Locked = False End With
MaPlageDeSaisies = Range("B3:I" & Application.CountA(Range("G:G"))).Address With Range(MaPlageDeSaisies) .Locked = True .FormulaHidden = False End With
With ActiveSheet .Protect _ DrawingObjects:=True, _ Contents:=True, _ Scenarios:=True .EnableSelection = xlUnlockedCells End With
Application.EnableEvents = False With Feuil3 .Visible = True '[accueil] visible .Activate ActiveWindow.ScrollRow = 1 End With Application.EnableEvents = True
For Each Sh In ThisWorkbook.Sheets If Sh.CodeName <> "Feuil3" Then Sh.Visible = xlSheetVeryHidden Next .SaveCopyAs Format(Now, "yyyymmdd-hh""h""nn") & " " & .Name End With End If
End Sub '---------------------
Merci pour votre aide,
JP
j-pascal
Bonjour,
Merci pour ta réponse.
(L'utlisateur ne peut pas ne pas activer les macros, sinon il n'a qu'une page d'accueil (l'invitant à les activer) et toutes les autres feuilles sont "Very Hidden". C'est la macro qui rend les feuilles visibles ...)
Je ne comprends pas le rôle de Cancel ...
Bref tu positionne Cancel = True donc le classeur reste ouvert
???
Je ne comprends pas bien ta première remarque ;-(
Je déconseille de mettre du code applicatif dans les procédures événement : Il faut mettre juste du code technique, car effectivement il se peut que le "cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce code
@+ ?
JP
Bonjour J-pascal
Je déconseille de mettre du code applicatif dans les procédures événement : Il faut mettre juste du code technique, car effectivement il se peut que le "cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce code
En fait, si je comprends un peu, quand l'utilssateur clique enregistré sous, tu lui refuse cette option (on sait qu'il pourra toujours le faire s'il n'active pas les macros)
Bref tu positionne Cancel = True donc le classeur reste ouvert
-- Papyjac
"j-pascal" a écrit :
Bonjour,
Je n'arrive pas à trouver une solution pour SORTIR de cette procédure si l'utilisateur clic sur "Enregistrer Sous". Ceci est un essai parmi beaucoup d'autres ...
La procédure semble fonctionner jusqu'au bout ("pas à pas") si l'utilisateur clique sur "Enregistrer sous", mais le classeur ne se ferme pas !!!!
'--------------------- Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim Sh As Worksheet Dim MaPlageDeSaisies Dim PlageDeSaisies
On Error Resume Next Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin", Schedule:úlse
If SaveAsUI Then MsgBox "Désolé, l'option Enregistrer sous... est impossible !", _ vbExclamation, "choix possibles : Enregistrer ou Fermer" Cancel = True GoTo suite: Else 'End If suite: With ThisWorkbook ChDrive "C" ChDir .Path
Application.ScreenUpdating = False
With Feuil2 .Unprotect .[b3:i2000].Locked = False End With
MaPlageDeSaisies = Range("B3:I" & Application.CountA(Range("G:G"))).Address With Range(MaPlageDeSaisies) .Locked = True .FormulaHidden = False End With
With ActiveSheet .Protect _ DrawingObjects:=True, _ Contents:=True, _ Scenarios:=True .EnableSelection = xlUnlockedCells End With
Application.EnableEvents = False With Feuil3 .Visible = True '[accueil] visible .Activate ActiveWindow.ScrollRow = 1 End With Application.EnableEvents = True
For Each Sh In ThisWorkbook.Sheets If Sh.CodeName <> "Feuil3" Then Sh.Visible = xlSheetVeryHidden Next .SaveCopyAs Format(Now, "yyyymmdd-hh""h""nn") & " " & .Name End With End If
End Sub '---------------------
Merci pour votre aide,
JP
Bonjour,
Merci pour ta réponse.
(L'utlisateur ne peut pas ne pas activer les macros, sinon il n'a
qu'une page d'accueil (l'invitant à les activer) et toutes les autres
feuilles sont "Very Hidden". C'est la macro qui rend les feuilles
visibles ...)
Je ne comprends pas le rôle de Cancel ...
Bref tu positionne Cancel = True donc le classeur reste ouvert
???
Je ne comprends pas bien ta première remarque ;-(
Je déconseille de mettre du code applicatif dans les procédures événement :
Il faut mettre juste du code technique, car effectivement il se peut que le
"cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce
code
@+ ?
JP
Bonjour J-pascal
Je déconseille de mettre du code applicatif dans les procédures événement :
Il faut mettre juste du code technique, car effectivement il se peut que le
"cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce
code
En fait, si je comprends un peu, quand l'utilssateur clique enregistré sous,
tu lui refuse cette option (on sait qu'il pourra toujours le faire s'il
n'active pas les macros)
Bref tu positionne Cancel = True donc le classeur reste ouvert
--
Papyjac
"j-pascal" a écrit :
Bonjour,
Je n'arrive pas à trouver une solution pour SORTIR de cette procédure
si l'utilisateur clic sur "Enregistrer Sous". Ceci est un essai parmi
beaucoup d'autres ...
La procédure semble fonctionner jusqu'au bout ("pas à pas") si
l'utilisateur clique sur "Enregistrer sous", mais le classeur ne se
ferme pas !!!!
'---------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim Sh As Worksheet
Dim MaPlageDeSaisies
Dim PlageDeSaisies
On Error Resume Next
Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin",
Schedule:úlse
If SaveAsUI Then
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
_
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
GoTo suite:
Else 'End If
suite:
With ThisWorkbook
ChDrive "C"
ChDir .Path
Application.ScreenUpdating = False
With Feuil2
.Unprotect
.[b3:i2000].Locked = False
End With
MaPlageDeSaisies = Range("B3:I" &
Application.CountA(Range("G:G"))).Address
With Range(MaPlageDeSaisies)
.Locked = True
.FormulaHidden = False
End With
With ActiveSheet
.Protect _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True
.EnableSelection = xlUnlockedCells
End With
Application.EnableEvents = False
With Feuil3
.Visible = True '[accueil] visible
.Activate
ActiveWindow.ScrollRow = 1
End With
Application.EnableEvents = True
For Each Sh In ThisWorkbook.Sheets
If Sh.CodeName <> "Feuil3" Then Sh.Visible =
xlSheetVeryHidden
Next
.SaveCopyAs Format(Now, "yyyymmdd-hh""h""nn") & " " & .Name
End With
End If
(L'utlisateur ne peut pas ne pas activer les macros, sinon il n'a qu'une page d'accueil (l'invitant à les activer) et toutes les autres feuilles sont "Very Hidden". C'est la macro qui rend les feuilles visibles ...)
Je ne comprends pas le rôle de Cancel ...
Bref tu positionne Cancel = True donc le classeur reste ouvert
???
Je ne comprends pas bien ta première remarque ;-(
Je déconseille de mettre du code applicatif dans les procédures événement : Il faut mettre juste du code technique, car effectivement il se peut que le "cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce code
@+ ?
JP
Bonjour J-pascal
Je déconseille de mettre du code applicatif dans les procédures événement : Il faut mettre juste du code technique, car effectivement il se peut que le "cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce code
En fait, si je comprends un peu, quand l'utilssateur clique enregistré sous, tu lui refuse cette option (on sait qu'il pourra toujours le faire s'il n'active pas les macros)
Bref tu positionne Cancel = True donc le classeur reste ouvert
-- Papyjac
"j-pascal" a écrit :
Bonjour,
Je n'arrive pas à trouver une solution pour SORTIR de cette procédure si l'utilisateur clic sur "Enregistrer Sous". Ceci est un essai parmi beaucoup d'autres ...
La procédure semble fonctionner jusqu'au bout ("pas à pas") si l'utilisateur clique sur "Enregistrer sous", mais le classeur ne se ferme pas !!!!
'--------------------- Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim Sh As Worksheet Dim MaPlageDeSaisies Dim PlageDeSaisies
On Error Resume Next Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin", Schedule:úlse
If SaveAsUI Then MsgBox "Désolé, l'option Enregistrer sous... est impossible !", _ vbExclamation, "choix possibles : Enregistrer ou Fermer" Cancel = True GoTo suite: Else 'End If suite: With ThisWorkbook ChDrive "C" ChDir .Path
Application.ScreenUpdating = False
With Feuil2 .Unprotect .[b3:i2000].Locked = False End With
MaPlageDeSaisies = Range("B3:I" & Application.CountA(Range("G:G"))).Address With Range(MaPlageDeSaisies) .Locked = True .FormulaHidden = False End With
With ActiveSheet .Protect _ DrawingObjects:=True, _ Contents:=True, _ Scenarios:=True .EnableSelection = xlUnlockedCells End With
Application.EnableEvents = False With Feuil3 .Visible = True '[accueil] visible .Activate ActiveWindow.ScrollRow = 1 End With Application.EnableEvents = True
For Each Sh In ThisWorkbook.Sheets If Sh.CodeName <> "Feuil3" Then Sh.Visible = xlSheetVeryHidden Next .SaveCopyAs Format(Now, "yyyymmdd-hh""h""nn") & " " & .Name End With End If
End Sub '---------------------
Merci pour votre aide,
JP
Papyjac
Bonjour J-pascal
L'aide me semble clair à ce sujet : Cancel = False en début de procédure, si tu ne changes rien, le classeur doit se fermer. Par contre si tu mets Cancel = True, cela signifie que tu veux que le classeur reste ouvert
-- Papyjac
"j-pascal" a écrit :
Bonjour,
Merci pour ta réponse.
(L'utlisateur ne peut pas ne pas activer les macros, sinon il n'a qu'une page d'accueil (l'invitant à les activer) et toutes les autres feuilles sont "Very Hidden". C'est la macro qui rend les feuilles visibles ...)
Je ne comprends pas le rôle de Cancel ...
> Bref tu positionne Cancel = True donc le classeur reste ouvert
???
Je ne comprends pas bien ta première remarque ;-(
> Je déconseille de mettre du code applicatif dans les procédures événement : > Il faut mettre juste du code technique, car effectivement il se peut que le > "cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce > code
@+ ?
JP
> Bonjour J-pascal > > Je déconseille de mettre du code applicatif dans les procédures événement : > Il faut mettre juste du code technique, car effectivement il se peut que le > "cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce > code > > En fait, si je comprends un peu, quand l'utilssateur clique enregistré sous, > tu lui refuse cette option (on sait qu'il pourra toujours le faire s'il > n'active pas les macros) > > Bref tu positionne Cancel = True donc le classeur reste ouvert > > > -- > Papyjac > > > "j-pascal" a écrit : > >> Bonjour, >> >> Je n'arrive pas à trouver une solution pour SORTIR de cette procédure >> si l'utilisateur clic sur "Enregistrer Sous". Ceci est un essai parmi >> beaucoup d'autres ... >> >> La procédure semble fonctionner jusqu'au bout ("pas à pas") si >> l'utilisateur clique sur "Enregistrer sous", mais le classeur ne se >> ferme pas !!!! >> >> >> '--------------------- >> Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As >> Boolean) >> Dim Sh As Worksheet >> Dim MaPlageDeSaisies >> Dim PlageDeSaisies >> >> On Error Resume Next >> Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin", >> Schedule:úlse >> >> If SaveAsUI Then >> MsgBox "Désolé, l'option Enregistrer sous... est impossible !", >> _ >> vbExclamation, "choix possibles : Enregistrer ou Fermer" >> Cancel = True >> GoTo suite: >> Else 'End If >> suite: >> With ThisWorkbook >> ChDrive "C" >> ChDir .Path >> >> Application.ScreenUpdating = False >> >> With Feuil2 >> .Unprotect >> .[b3:i2000].Locked = False >> End With >> >> MaPlageDeSaisies = Range("B3:I" & >> Application.CountA(Range("G:G"))).Address >> With Range(MaPlageDeSaisies) >> .Locked = True >> .FormulaHidden = False >> End With >> >> With ActiveSheet >> .Protect _ >> DrawingObjects:=True, _ >> Contents:=True, _ >> Scenarios:=True >> .EnableSelection = xlUnlockedCells >> End With >> >> Application.EnableEvents = False >> With Feuil3 >> .Visible = True '[accueil] visible >> .Activate >> ActiveWindow.ScrollRow = 1 >> End With >> Application.EnableEvents = True >> >> For Each Sh In ThisWorkbook.Sheets >> If Sh.CodeName <> "Feuil3" Then Sh.Visible = >> xlSheetVeryHidden >> Next >> .SaveCopyAs Format(Now, "yyyymmdd-hh""h""nn") & " " & .Name >> End With >> End If >> >> End Sub >> '--------------------- >> >> Merci pour votre aide, >> >> JP >> >> >>
Bonjour J-pascal
L'aide me semble clair à ce sujet : Cancel = False en début de procédure, si
tu ne changes rien, le classeur doit se fermer. Par contre si tu mets Cancel
= True, cela signifie que tu veux que le classeur reste ouvert
--
Papyjac
"j-pascal" a écrit :
Bonjour,
Merci pour ta réponse.
(L'utlisateur ne peut pas ne pas activer les macros, sinon il n'a
qu'une page d'accueil (l'invitant à les activer) et toutes les autres
feuilles sont "Very Hidden". C'est la macro qui rend les feuilles
visibles ...)
Je ne comprends pas le rôle de Cancel ...
> Bref tu positionne Cancel = True donc le classeur reste ouvert
???
Je ne comprends pas bien ta première remarque ;-(
> Je déconseille de mettre du code applicatif dans les procédures événement :
> Il faut mettre juste du code technique, car effectivement il se peut que le
> "cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce
> code
@+ ?
JP
> Bonjour J-pascal
>
> Je déconseille de mettre du code applicatif dans les procédures événement :
> Il faut mettre juste du code technique, car effectivement il se peut que le
> "cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce
> code
>
> En fait, si je comprends un peu, quand l'utilssateur clique enregistré sous,
> tu lui refuse cette option (on sait qu'il pourra toujours le faire s'il
> n'active pas les macros)
>
> Bref tu positionne Cancel = True donc le classeur reste ouvert
>
>
> --
> Papyjac
>
>
> "j-pascal" a écrit :
>
>> Bonjour,
>>
>> Je n'arrive pas à trouver une solution pour SORTIR de cette procédure
>> si l'utilisateur clic sur "Enregistrer Sous". Ceci est un essai parmi
>> beaucoup d'autres ...
>>
>> La procédure semble fonctionner jusqu'au bout ("pas à pas") si
>> l'utilisateur clique sur "Enregistrer sous", mais le classeur ne se
>> ferme pas !!!!
>>
>>
>> '---------------------
>> Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
>> Boolean)
>> Dim Sh As Worksheet
>> Dim MaPlageDeSaisies
>> Dim PlageDeSaisies
>>
>> On Error Resume Next
>> Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin",
>> Schedule:úlse
>>
>> If SaveAsUI Then
>> MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
>> _
>> vbExclamation, "choix possibles : Enregistrer ou Fermer"
>> Cancel = True
>> GoTo suite:
>> Else 'End If
>> suite:
>> With ThisWorkbook
>> ChDrive "C"
>> ChDir .Path
>>
>> Application.ScreenUpdating = False
>>
>> With Feuil2
>> .Unprotect
>> .[b3:i2000].Locked = False
>> End With
>>
>> MaPlageDeSaisies = Range("B3:I" &
>> Application.CountA(Range("G:G"))).Address
>> With Range(MaPlageDeSaisies)
>> .Locked = True
>> .FormulaHidden = False
>> End With
>>
>> With ActiveSheet
>> .Protect _
>> DrawingObjects:=True, _
>> Contents:=True, _
>> Scenarios:=True
>> .EnableSelection = xlUnlockedCells
>> End With
>>
>> Application.EnableEvents = False
>> With Feuil3
>> .Visible = True '[accueil] visible
>> .Activate
>> ActiveWindow.ScrollRow = 1
>> End With
>> Application.EnableEvents = True
>>
>> For Each Sh In ThisWorkbook.Sheets
>> If Sh.CodeName <> "Feuil3" Then Sh.Visible =
>> xlSheetVeryHidden
>> Next
>> .SaveCopyAs Format(Now, "yyyymmdd-hh""h""nn") & " " & .Name
>> End With
>> End If
>>
>> End Sub
>> '---------------------
>>
>> Merci pour votre aide,
>>
>> JP
>>
>>
>>
L'aide me semble clair à ce sujet : Cancel = False en début de procédure, si tu ne changes rien, le classeur doit se fermer. Par contre si tu mets Cancel = True, cela signifie que tu veux que le classeur reste ouvert
-- Papyjac
"j-pascal" a écrit :
Bonjour,
Merci pour ta réponse.
(L'utlisateur ne peut pas ne pas activer les macros, sinon il n'a qu'une page d'accueil (l'invitant à les activer) et toutes les autres feuilles sont "Very Hidden". C'est la macro qui rend les feuilles visibles ...)
Je ne comprends pas le rôle de Cancel ...
> Bref tu positionne Cancel = True donc le classeur reste ouvert
???
Je ne comprends pas bien ta première remarque ;-(
> Je déconseille de mettre du code applicatif dans les procédures événement : > Il faut mettre juste du code technique, car effectivement il se peut que le > "cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce > code
@+ ?
JP
> Bonjour J-pascal > > Je déconseille de mettre du code applicatif dans les procédures événement : > Il faut mettre juste du code technique, car effectivement il se peut que le > "cancel" soit positionné, mais ce n'est plus visible facilement dans tout ce > code > > En fait, si je comprends un peu, quand l'utilssateur clique enregistré sous, > tu lui refuse cette option (on sait qu'il pourra toujours le faire s'il > n'active pas les macros) > > Bref tu positionne Cancel = True donc le classeur reste ouvert > > > -- > Papyjac > > > "j-pascal" a écrit : > >> Bonjour, >> >> Je n'arrive pas à trouver une solution pour SORTIR de cette procédure >> si l'utilisateur clic sur "Enregistrer Sous". Ceci est un essai parmi >> beaucoup d'autres ... >> >> La procédure semble fonctionner jusqu'au bout ("pas à pas") si >> l'utilisateur clique sur "Enregistrer sous", mais le classeur ne se >> ferme pas !!!! >> >> >> '--------------------- >> Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As >> Boolean) >> Dim Sh As Worksheet >> Dim MaPlageDeSaisies >> Dim PlageDeSaisies >> >> On Error Resume Next >> Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin", >> Schedule:úlse >> >> If SaveAsUI Then >> MsgBox "Désolé, l'option Enregistrer sous... est impossible !", >> _ >> vbExclamation, "choix possibles : Enregistrer ou Fermer" >> Cancel = True >> GoTo suite: >> Else 'End If >> suite: >> With ThisWorkbook >> ChDrive "C" >> ChDir .Path >> >> Application.ScreenUpdating = False >> >> With Feuil2 >> .Unprotect >> .[b3:i2000].Locked = False >> End With >> >> MaPlageDeSaisies = Range("B3:I" & >> Application.CountA(Range("G:G"))).Address >> With Range(MaPlageDeSaisies) >> .Locked = True >> .FormulaHidden = False >> End With >> >> With ActiveSheet >> .Protect _ >> DrawingObjects:=True, _ >> Contents:=True, _ >> Scenarios:=True >> .EnableSelection = xlUnlockedCells >> End With >> >> Application.EnableEvents = False >> With Feuil3 >> .Visible = True '[accueil] visible >> .Activate >> ActiveWindow.ScrollRow = 1 >> End With >> Application.EnableEvents = True >> >> For Each Sh In ThisWorkbook.Sheets >> If Sh.CodeName <> "Feuil3" Then Sh.Visible = >> xlSheetVeryHidden >> Next >> .SaveCopyAs Format(Now, "yyyymmdd-hh""h""nn") & " " & .Name >> End With >> End If >> >> End Sub >> '--------------------- >> >> Merci pour votre aide, >> >> JP >> >> >>