J'ai une macro qui fonctionne (presque) bien après usage de
UserInterfaceOnly ...
Elle fonctionne si dans "outils/protection", j'ai coché :
"Tri" et "Objet" (c'est sur ce point que j'avais des pb jusqu'à présent ...
a priori !).
Mais lorsque je rouvre le classeur, la feuille est toujours protégée mais
les cases "Tri" et "Objet" ne le sont plus, d'où problème de débogage !
J'imagine qu'il y a un truc qui ne s'enregistre pas à la fermeture du
classeur ?!!
Le code de ThisWorkbook est le suivant :
---------------------------------------------------------------
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous..., vbOKOnly,
option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " &
"Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
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
LSteph
Bonjour,
1-Tu as mis call restitue, mais la sub restitue n'y est pas et c'est elle qui remet tout à l'ouverture, si on a activé les macros et avec userinterfaceonly en guise de protection. A défaut le tri ne fonctionnera pas. 2-Pas sûr que le cumul de deux beforesave aille ainsi sans souci de fermeture ou enregistrement. Si ajout il y a , il doit avoir lieu avant enregistrement du classeur, mais effectivement pas de la copie, sauf si'la copie, s'assortit également des mêmes dispositions dans le workbook_open. 4-Attention j'avais utilisé Feuil3 (codename) en guise d'avertissement, dans l'exemple en est-il ainsi dans le classeur.
(?) ... Oui!
@+
Bonjour,
J'ai une macro qui fonctionne (presque) bien après usage de UserInterfaceOnly ... Elle fonctionne si dans "outils/protection", j'ai coché : "Tri" et "Objet" (c'est sur ce point que j'avais des pb jusqu'à présent ... a priori !).
Mais lorsque je rouvre le classeur, la feuille est toujours protégée mais les cases "Tri" et "Objet" ne le sont plus, d'où problème de débogage ! J'imagine qu'il y a un truc qui ne s'enregistre pas à la fermeture du classeur ?!!
Le code de ThisWorkbook est le suivant :
--------------------------------------------------------------- Option Explicit Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim tst If SaveAsUI Then 'MsgBox "Désolé " & Application.UserName & " on ne doit pas enregistrer sous " 'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous..., vbOKOnly, option invalide") MsgBox "Désolé, l'option Enregistrer sous... est impossible !", vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " & "Date Heure Fichier.xls" & " ?", vbYesNo) '& vbCrLf &
With ThisWorkbook ChDir .Path If tst = 6 Then '.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
Else Cancel = True End If End With End If
'---------------- ajout LSteph
Dim sh As Worksheet Application.EnableCancelKey = xlDisabled
For Each sh In ThisWorkbook.Sheets sh.Protect userinterfaceonly:=True 'If sh.CodeName <> "Feuil3" Then 'sh.Visible = xlSheetVeryHidden 'End If Next
'---------------- fin ajout LSteph End Sub --------------------------------------------------------------------------------
Merci pour vos lumières ;-)
Bonjour,
1-Tu as mis call restitue, mais la sub restitue n'y est pas
et c'est elle qui remet tout à l'ouverture, si on a activé les macros
et avec userinterfaceonly en guise de protection.
A défaut le tri ne fonctionnera pas.
2-Pas sûr que le cumul de deux beforesave aille ainsi sans souci de
fermeture ou enregistrement.
Si ajout il y a , il doit avoir lieu avant enregistrement du classeur,
mais effectivement pas de la copie, sauf si'la copie, s'assortit
également des mêmes dispositions dans le workbook_open.
4-Attention j'avais utilisé Feuil3 (codename) en guise d'avertissement,
dans l'exemple en est-il ainsi dans le classeur.
(?) ...
Oui!
@+
Bonjour,
J'ai une macro qui fonctionne (presque) bien après usage de
UserInterfaceOnly ...
Elle fonctionne si dans "outils/protection", j'ai coché :
"Tri" et "Objet" (c'est sur ce point que j'avais des pb jusqu'à présent
... a priori !).
Mais lorsque je rouvre le classeur, la feuille est toujours protégée
mais les cases "Tri" et "Objet" ne le sont plus, d'où problème de
débogage !
J'imagine qu'il y a un truc qui ne s'enregistre pas à la fermeture du
classeur ?!!
Le code de ThisWorkbook est le suivant :
---------------------------------------------------------------
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst
If SaveAsUI Then
'MsgBox "Désolé " & Application.UserName & " on ne doit pas
enregistrer sous "
'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous...,
vbOKOnly, option invalide")
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
& "Date Heure Fichier.xls" & " ?", vbYesNo)
'& vbCrLf &
With ThisWorkbook
ChDir .Path
If tst = 6 Then
'.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
Else
Cancel = True
End If
End With
End If
'---------------- ajout LSteph
Dim sh As Worksheet
Application.EnableCancelKey = xlDisabled
1-Tu as mis call restitue, mais la sub restitue n'y est pas et c'est elle qui remet tout à l'ouverture, si on a activé les macros et avec userinterfaceonly en guise de protection. A défaut le tri ne fonctionnera pas. 2-Pas sûr que le cumul de deux beforesave aille ainsi sans souci de fermeture ou enregistrement. Si ajout il y a , il doit avoir lieu avant enregistrement du classeur, mais effectivement pas de la copie, sauf si'la copie, s'assortit également des mêmes dispositions dans le workbook_open. 4-Attention j'avais utilisé Feuil3 (codename) en guise d'avertissement, dans l'exemple en est-il ainsi dans le classeur.
(?) ... Oui!
@+
Bonjour,
J'ai une macro qui fonctionne (presque) bien après usage de UserInterfaceOnly ... Elle fonctionne si dans "outils/protection", j'ai coché : "Tri" et "Objet" (c'est sur ce point que j'avais des pb jusqu'à présent ... a priori !).
Mais lorsque je rouvre le classeur, la feuille est toujours protégée mais les cases "Tri" et "Objet" ne le sont plus, d'où problème de débogage ! J'imagine qu'il y a un truc qui ne s'enregistre pas à la fermeture du classeur ?!!
Le code de ThisWorkbook est le suivant :
--------------------------------------------------------------- Option Explicit Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim tst If SaveAsUI Then 'MsgBox "Désolé " & Application.UserName & " on ne doit pas enregistrer sous " 'MsgBox ("Désolé, vous ne pouvez pas enregistrer sous..., vbOKOnly, option invalide") MsgBox "Désolé, l'option Enregistrer sous... est impossible !", vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " & "Date Heure Fichier.xls" & " ?", vbYesNo) '& vbCrLf &
With ThisWorkbook ChDir .Path If tst = 6 Then '.SaveCopyAs Format(Now, "yyyymmmdd-hhnn") & .Name .SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " & .Name
Else Cancel = True End If End With End If
'---------------- ajout LSteph
Dim sh As Worksheet Application.EnableCancelKey = xlDisabled