Empêcher l'ouverture d'un classeur si les macros sont désactivées ?
6 réponses
Pier
Bonjour,
J'ai crée (merci Marc !) un classeur qui contient des macros et qui est
utilisé par plusieurs collègues dans mon administration.
Ce classeur contient un code au lancement qui empeche les sauvegardes
sans mot de passe (merci Jean Francois !) :
Voici le code :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim rep
rep = InputBox("Saisir le M de P", "Seulement le chef peut sauvegarder
!")
If rep <> "MonMotDePasse" Then
cancel = True
Else
Cancel = False
End If
End Sub
A l'ouverture du classeur, un message systeme previent les utilisateurs
et propose de "désactiver les macros" ou d' "activer les macros".
Si un utilisateur choisit "Désactiver les macros", de fait il ouvre le
classeur et peut alors faire une sauvegarde du classeur.
Alors que mon but est d'empêcher les utilisateurs de faire une sauvegarde !
Quel moyen existe-t-il pour que le fichier ne puisse être ouvert s'il a
choisit de "Désactiver les macros" ?
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
Patrick BASTARD
Bonjour, *Pier*
Quel moyen existe-t-il pour que le fichier ne puisse être ouvert s'il a choisit de "Désactiver les macros" ?
Tu masques avec XLVeryHidden toutes les feuilles de ton classeur à la fermeture (beforeclose) sauf une, sur laquelle tu mets un joli message.
Tu affiches les autres feuilles par macro à l'ouverture (workbookopen), et masques la feuille (toujours xlveryhidden)contenant ton joli message.
Si les macros sont désactivées, seule la feuille avec le joli message apparaitra lors de l'ouverture. Si elles sont activées, le joli message sera caché, et les autres feuilles seront disponibles.
Et voilou.
Cela te convient-il?
-- Bien amicordialement, P. Bastard
Bonjour, *Pier*
Quel moyen existe-t-il pour que le fichier ne puisse être ouvert s'il
a choisit de "Désactiver les macros" ?
Tu masques avec XLVeryHidden toutes les feuilles de ton classeur à la
fermeture (beforeclose) sauf une, sur laquelle tu mets un joli message.
Tu affiches les autres feuilles par macro à l'ouverture (workbookopen), et
masques la feuille (toujours xlveryhidden)contenant ton joli message.
Si les macros sont désactivées, seule la feuille avec le joli message
apparaitra lors de l'ouverture.
Si elles sont activées, le joli message sera caché, et les autres feuilles
seront disponibles.
Quel moyen existe-t-il pour que le fichier ne puisse être ouvert s'il a choisit de "Désactiver les macros" ?
Tu masques avec XLVeryHidden toutes les feuilles de ton classeur à la fermeture (beforeclose) sauf une, sur laquelle tu mets un joli message.
Tu affiches les autres feuilles par macro à l'ouverture (workbookopen), et masques la feuille (toujours xlveryhidden)contenant ton joli message.
Si les macros sont désactivées, seule la feuille avec le joli message apparaitra lors de l'ouverture. Si elles sont activées, le joli message sera caché, et les autres feuilles seront disponibles.
Et voilou.
Cela te convient-il?
-- Bien amicordialement, P. Bastard
Youky
Salut, à l'enregistrement on masque les onglets sauf Feuil1 ou tu peux écrire en gros "désolé" rajoute une page ,remplace Feuil1 par le codename de cette nouvelle page Youky
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) For k = 1 To Sheets.Count If Sheets(k).CodeName <> "Feuil1" Then Sheets(k).Visible = 2 End If Next End Sub 'en ouvertture on démasque par macro,si pas activé....... rien Private Sub Workbook_Open() For k = 1 To Sheets.Count Sheets(k).Visible = True Next End Sub
"Pier" a écrit dans le message de news: 44ab68dc$0$10660$
Bonjour,
J'ai crée (merci Marc !) un classeur qui contient des macros et qui est utilisé par plusieurs collègues dans mon administration.
Ce classeur contient un code au lancement qui empeche les sauvegardes sans mot de passe (merci Jean Francois !) :
Voici le code :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim rep rep = InputBox("Saisir le M de P", "Seulement le chef peut sauvegarder !") If rep <> "MonMotDePasse" Then cancel = True Else Cancel = False End If End Sub
A l'ouverture du classeur, un message systeme previent les utilisateurs et propose de "désactiver les macros" ou d' "activer les macros". Si un utilisateur choisit "Désactiver les macros", de fait il ouvre le classeur et peut alors faire une sauvegarde du classeur. Alors que mon but est d'empêcher les utilisateurs de faire une sauvegarde !
Quel moyen existe-t-il pour que le fichier ne puisse être ouvert s'il a choisit de "Désactiver les macros" ?
Merci pour votre aide.
Pierre
Salut, à l'enregistrement on masque les onglets sauf Feuil1 ou tu peux
écrire en gros "désolé"
rajoute une page ,remplace Feuil1 par le codename de cette nouvelle page
Youky
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
For k = 1 To Sheets.Count
If Sheets(k).CodeName <> "Feuil1" Then
Sheets(k).Visible = 2
End If
Next
End Sub
'en ouvertture on démasque par macro,si pas activé....... rien
Private Sub Workbook_Open()
For k = 1 To Sheets.Count
Sheets(k).Visible = True
Next
End Sub
"Pier" <pier@nofree.fr> a écrit dans le message de news:
44ab68dc$0$10660$626a54ce@news.free.fr...
Bonjour,
J'ai crée (merci Marc !) un classeur qui contient des macros et qui est
utilisé par plusieurs collègues dans mon administration.
Ce classeur contient un code au lancement qui empeche les sauvegardes sans
mot de passe (merci Jean Francois !) :
Voici le code :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim rep
rep = InputBox("Saisir le M de P", "Seulement le chef peut sauvegarder
!")
If rep <> "MonMotDePasse" Then
cancel = True
Else
Cancel = False
End If
End Sub
A l'ouverture du classeur, un message systeme previent les utilisateurs et
propose de "désactiver les macros" ou d' "activer les macros".
Si un utilisateur choisit "Désactiver les macros", de fait il ouvre le
classeur et peut alors faire une sauvegarde du classeur.
Alors que mon but est d'empêcher les utilisateurs de faire une sauvegarde
!
Quel moyen existe-t-il pour que le fichier ne puisse être ouvert s'il a
choisit de "Désactiver les macros" ?
Salut, à l'enregistrement on masque les onglets sauf Feuil1 ou tu peux écrire en gros "désolé" rajoute une page ,remplace Feuil1 par le codename de cette nouvelle page Youky
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) For k = 1 To Sheets.Count If Sheets(k).CodeName <> "Feuil1" Then Sheets(k).Visible = 2 End If Next End Sub 'en ouvertture on démasque par macro,si pas activé....... rien Private Sub Workbook_Open() For k = 1 To Sheets.Count Sheets(k).Visible = True Next End Sub
"Pier" a écrit dans le message de news: 44ab68dc$0$10660$
Bonjour,
J'ai crée (merci Marc !) un classeur qui contient des macros et qui est utilisé par plusieurs collègues dans mon administration.
Ce classeur contient un code au lancement qui empeche les sauvegardes sans mot de passe (merci Jean Francois !) :
Voici le code :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim rep rep = InputBox("Saisir le M de P", "Seulement le chef peut sauvegarder !") If rep <> "MonMotDePasse" Then cancel = True Else Cancel = False End If End Sub
A l'ouverture du classeur, un message systeme previent les utilisateurs et propose de "désactiver les macros" ou d' "activer les macros". Si un utilisateur choisit "Désactiver les macros", de fait il ouvre le classeur et peut alors faire une sauvegarde du classeur. Alors que mon but est d'empêcher les utilisateurs de faire une sauvegarde !
Quel moyen existe-t-il pour que le fichier ne puisse être ouvert s'il a choisit de "Désactiver les macros" ?
Merci pour votre aide.
Pierre
Pier
Salut, à l'enregistrement on masque les onglets sauf Feuil1 ou tu peux écrire en gros "désolé" rajoute une page ,remplace Feuil1 par le codename de cette nouvelle page Youky
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) For k = 1 To Sheets.Count If Sheets(k).CodeName <> "Feuil1" Then Sheets(k).Visible = 2 End If Next End Sub 'en ouvertture on démasque par macro,si pas activé....... rien Private Sub Workbook_Open() For k = 1 To Sheets.Count Sheets(k).Visible = True Next End Sub
Merci pour ta réponse Youky. J'ai essayé ce que tu proposes et cela ne fonctionne pas. Je comprends pas pourquoi ??? Peux-tu voir ce qui ne va pas dans mon classeur : http://cjoint.com/?hfuHC0LfFN
Cordialement. Pierre
Salut, à l'enregistrement on masque les onglets sauf Feuil1 ou tu peux
écrire en gros "désolé"
rajoute une page ,remplace Feuil1 par le codename de cette nouvelle page
Youky
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
For k = 1 To Sheets.Count
If Sheets(k).CodeName <> "Feuil1" Then
Sheets(k).Visible = 2
End If
Next
End Sub
'en ouvertture on démasque par macro,si pas activé....... rien
Private Sub Workbook_Open()
For k = 1 To Sheets.Count
Sheets(k).Visible = True
Next
End Sub
Merci pour ta réponse Youky.
J'ai essayé ce que tu proposes et cela ne fonctionne pas.
Je comprends pas pourquoi ???
Peux-tu voir ce qui ne va pas dans mon classeur :
http://cjoint.com/?hfuHC0LfFN
Salut, à l'enregistrement on masque les onglets sauf Feuil1 ou tu peux écrire en gros "désolé" rajoute une page ,remplace Feuil1 par le codename de cette nouvelle page Youky
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) For k = 1 To Sheets.Count If Sheets(k).CodeName <> "Feuil1" Then Sheets(k).Visible = 2 End If Next End Sub 'en ouvertture on démasque par macro,si pas activé....... rien Private Sub Workbook_Open() For k = 1 To Sheets.Count Sheets(k).Visible = True Next End Sub
Merci pour ta réponse Youky. J'ai essayé ce que tu proposes et cela ne fonctionne pas. Je comprends pas pourquoi ??? Peux-tu voir ce qui ne va pas dans mon classeur : http://cjoint.com/?hfuHC0LfFN
Cordialement. Pierre
Pier
Tu masques avec XLVeryHidden toutes les feuilles de ton classeur à la fermeture (beforeclose) sauf une, sur laquelle tu mets un joli message.
Bonsoir Patrick ! Je suis incapable de créer le code qui fait cela
Tu affiches les autres feuilles par macro à l'ouverture (workbookopen), et masques la feuille (toujours xlveryhidden)contenant ton joli message.
Pareil !
Si les macros sont désactivées, seule la feuille avec le joli message apparaitra lors de l'ouverture. Si elles sont activées, le joli message sera caché, et les autres feuilles seront disponibles. Et voilou. Cela te convient-il?
Oui je comprends le principe et cela me convient mais je suis débutant et je ne sais pas créer le code pour faire ce que tu me proposes.
Merci pour ton aide.
Pierre
Tu masques avec XLVeryHidden toutes les feuilles de ton classeur à la
fermeture (beforeclose) sauf une, sur laquelle tu mets un joli message.
Bonsoir Patrick !
Je suis incapable de créer le code qui fait cela
Tu affiches les autres feuilles par macro à l'ouverture (workbookopen), et
masques la feuille (toujours xlveryhidden)contenant ton joli message.
Pareil !
Si les macros sont désactivées, seule la feuille avec le joli message
apparaitra lors de l'ouverture.
Si elles sont activées, le joli message sera caché, et les autres feuilles
seront disponibles.
Et voilou.
Cela te convient-il?
Oui je comprends le principe et cela me convient mais je suis débutant
et je ne sais pas créer le code pour faire ce que tu me proposes.
Tu masques avec XLVeryHidden toutes les feuilles de ton classeur à la fermeture (beforeclose) sauf une, sur laquelle tu mets un joli message.
Bonsoir Patrick ! Je suis incapable de créer le code qui fait cela
Tu affiches les autres feuilles par macro à l'ouverture (workbookopen), et masques la feuille (toujours xlveryhidden)contenant ton joli message.
Pareil !
Si les macros sont désactivées, seule la feuille avec le joli message apparaitra lors de l'ouverture. Si elles sont activées, le joli message sera caché, et les autres feuilles seront disponibles. Et voilou. Cela te convient-il?
Oui je comprends le principe et cela me convient mais je suis débutant et je ne sais pas créer le code pour faire ce que tu me proposes.
Merci pour ton aide.
Pierre
Patrick BASTARD
Bonjour, *Pier*
Merci pour ta réponse Youky. J'ai essayé ce que tu proposes et cela ne fonctionne pas. Je comprends pas pourquoi ??? Peux-tu voir ce qui ne va pas dans mon classeur : http://cjoint.com/?hfuHC0LfFN
1° le code doit être placé dans ThisWorkBook, puisque Open et BeforeSave concernent le classeur, et non pas uniquement la Feuille 4
2° Pas de retour intempestif : le nom de la 1° macro s'affiche en rouge parce que tu as effectué un retour chariot en fin de première ligne.
-- Bien amicordialement, P. Bastard
Bonjour, *Pier*
Merci pour ta réponse Youky.
J'ai essayé ce que tu proposes et cela ne fonctionne pas.
Je comprends pas pourquoi ???
Peux-tu voir ce qui ne va pas dans mon classeur :
http://cjoint.com/?hfuHC0LfFN
1° le code doit être placé dans ThisWorkBook, puisque Open et BeforeSave
concernent le classeur, et non pas uniquement la Feuille 4
2° Pas de retour intempestif :
le nom de la 1° macro s'affiche en rouge parce que tu as effectué un retour
chariot en fin de première ligne.
Merci pour ta réponse Youky. J'ai essayé ce que tu proposes et cela ne fonctionne pas. Je comprends pas pourquoi ??? Peux-tu voir ce qui ne va pas dans mon classeur : http://cjoint.com/?hfuHC0LfFN
1° le code doit être placé dans ThisWorkBook, puisque Open et BeforeSave concernent le classeur, et non pas uniquement la Feuille 4
2° Pas de retour intempestif : le nom de la 1° macro s'affiche en rouge parce que tu as effectué un retour chariot en fin de première ligne.
-- Bien amicordialement, P. Bastard
Patrick BASTARD
Bonjour, *Pier*
Vois ton fichier ici :
http://cjoint.com/?hfvk23w87b
-- Bien amicordialement, P. Bastard
Salut, à l'enregistrement on masque les onglets sauf Feuil1 ou tu peux écrire en gros "désolé" rajoute une page ,remplace Feuil1 par le codename de cette nouvelle page Youky
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) For k = 1 To Sheets.Count If Sheets(k).CodeName <> "Feuil1" Then Sheets(k).Visible = 2 End If Next End Sub 'en ouvertture on démasque par macro,si pas activé....... rien Private Sub Workbook_Open() For k = 1 To Sheets.Count Sheets(k).Visible = True Next End Sub
Merci pour ta réponse Youky. J'ai essayé ce que tu proposes et cela ne fonctionne pas. Je comprends pas pourquoi ??? Peux-tu voir ce qui ne va pas dans mon classeur : http://cjoint.com/?hfuHC0LfFN
Cordialement. Pierre
Bonjour, *Pier*
Vois ton fichier ici :
http://cjoint.com/?hfvk23w87b
--
Bien amicordialement,
P. Bastard
Salut, à l'enregistrement on masque les onglets sauf Feuil1 ou tu
peux écrire en gros "désolé"
rajoute une page ,remplace Feuil1 par le codename de cette nouvelle
page Youky
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
For k = 1 To Sheets.Count
If Sheets(k).CodeName <> "Feuil1" Then
Sheets(k).Visible = 2
End If
Next
End Sub
'en ouvertture on démasque par macro,si pas activé....... rien
Private Sub Workbook_Open()
For k = 1 To Sheets.Count
Sheets(k).Visible = True
Next
End Sub
Merci pour ta réponse Youky.
J'ai essayé ce que tu proposes et cela ne fonctionne pas.
Je comprends pas pourquoi ???
Peux-tu voir ce qui ne va pas dans mon classeur :
http://cjoint.com/?hfuHC0LfFN
Salut, à l'enregistrement on masque les onglets sauf Feuil1 ou tu peux écrire en gros "désolé" rajoute une page ,remplace Feuil1 par le codename de cette nouvelle page Youky
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) For k = 1 To Sheets.Count If Sheets(k).CodeName <> "Feuil1" Then Sheets(k).Visible = 2 End If Next End Sub 'en ouvertture on démasque par macro,si pas activé....... rien Private Sub Workbook_Open() For k = 1 To Sheets.Count Sheets(k).Visible = True Next End Sub
Merci pour ta réponse Youky. J'ai essayé ce que tu proposes et cela ne fonctionne pas. Je comprends pas pourquoi ??? Peux-tu voir ce qui ne va pas dans mon classeur : http://cjoint.com/?hfuHC0LfFN