Bloquer la sauvagarde d'un fichier Excel

Bonjour à tous,

Voilà j'aimerais un peu d'aide sur un fichier excel que je suis en train de créer.

Le fichier en question est destiné à être rempli par des utilisateurs. Au cun droit n'est nécessaire.

Lorsque que ce fichier est rempli, un bouton de sauvagarde que j'ai créé permet d'enregistrer une copie du travail.

Ce que je voudrais c'est qu'aucun utilisateur ne puisse écraser le fichier original. Il doit obligatoirement passer par mon bouton pour créer une copie.

J'ai créé un code pour désactiver le message qui permettait d'enregistrer lorsqu'on quitte excel par la croix.

Par contre je ne sais pas désactiver le racourci permettant d'enregistrer (Ctrl + S) ni désactiver l'icone (la disquette) ou la commande en passant par le menu (fichier , enregistrer).

Quelqu'un peut m'aider?

Par avance, merci.

Steven

Bonjour ,

Dans le module thisworkbook mettre le code suivant :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
End Sub

peut être prévoir un passe travers avec une condition du genre :

If environ("USERNAME") = "ADMIN" then

cancel = false

else

cancel = true

end if

et voilà ...

Bonsoir,

Je ne m'attendais pas à une réponse aussi rapide.

Jte confirme, ton code fonctionne parfaitement, le problème c'est que je ne peux même pas sauvagarder le code une fois qu'il est écrit. lol

et sinon comment tu créer ton passe? je ne sais pas faire ça.

Merci pour ton aide

Pour chaque session windows correspond un nom ou code utilisateur,

celui-ci peut être récupéré dans une variable environnement en utilisant la syntaxe suivante :

Pour voir ton username vas dans une fenetre msdos et ecrit SET puis entrée et tu verras toutes les variables environnement

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

Dim utilisateur as string

utilisateur = environ("USERNAME")

if utilisateur <> "MonNom" then  Cancel = True

End Sub

Ok merci pour ton aide, j'apprend plein de truc!

Je vais essayer ça!

Salut Misterno,

J'ai essayer ton code et ça marche terriblement bien, mais peut on rajouter d'autre utilisateurs?

Faut-il les rajouter sur cette ligne de code? si oui comment?

if utilisateur <> "MonNom" then Cancel = True

Merci pour ta patience

Bonjour ,

Super, attention tu vas devenir accro , lol

Voici une des nombreuses solutions possibles, avec anticipation sur des groupes de niveau d'utilisateur.

Bon , pour faire les tests pour mieux comprendre , j'ai ajouté une boite de saisie afin de remplacer la vraie info venant du système.

Bon tests , j'attends tes éventuels retour et questions

Sub Identifie()
Dim Utilisateur As String
Dim Niveau As String
Utilisateur = Environ("USERNAME")

'Pour le test , à enlever ultérieurement
If Utilisateur = Environ("USERNAME") Then Utilisateur = InputBox("Pour test provisoir, Saisir votre prénom", "ATTENTE IDENTIFICATION S2CURIT2")

'Identification
Select Case Utilisateur

    'Groupe Admin
     Case "Antoine"
            Niveau = "Admin"

    'Groupe Modificateur
     Case "Marcel", "Paul", "Karim"
            Niveau = "Modificateur"

    'Groupe Lecteur
     Case "Lucien", "Jacques", "Vicente"
            Niveau = "Lecteur"

    'Accès interdit
     Case Else: Niveau = "Interdit"

 End Select

'Gestion du droit d'accès
If Niveau <> "Interdit" Then
   MsgBox ("Bonjour " & Utilisateur & " , votre profil est celui de " & Niveau)
 Else
   MsgBox ("Bonjour, vous n'avez pas accès à cette application, merci de contacter l'administrateur afin de lui faire une demande d'accès")
End If
End Sub

Salut Misterno,

Merci de m'avoir répondu!

J'ai copier-collé ton code mais je n'arrive pas à le faire fonctionner.

Je l'ai mis dans le ThisWorkbook à la place de l'ancien, mais rien du tout.

Il doit démarrer à l'ouverture du classeur n'est ce pas?

Bonjour ,

Je te joints un fichier exemple :

Bonjour

Il suffit d'ouvrir le classeur sans activer les macros pour que ce qui était bloqué ne le soit plus.

Il est utile de le savoir.

A+

Bonjour ,,

Et oui , surement , mais l'on peut aussi bloquer tout le classeur tant que les macro ne sont pas activées, et même ne jamais ouvrir le vrai fichier , mais oui , y'a toujours moyen , mais je pense que c'est plus pour éviter des erreurs de manip qu'une vraie sécurité , et déjà là 80% des utilisateurs seront canalisés , et puis heureusement tout le monde n'a pas une ame hackeur , lol.

Le domaine de la sécurité est un faste débat, qui coût malgré tout beaucoup de temps donc d'argent.

Merci néanmoins pour ta mise en garde.

Salut le forum

Pour interdire d'écraser la version originale, il suffit simplement de cocher lecture seule

Mytå

Super ça marche parfaitement.

Je viens d'intégrer ça à mon fichier excel et c'est impeccable.

Je dois dire que je ne suis pas un pro de la programmation d'où mes difficultés, mais c'est très impressionnant le potentiel de Excel! Je dois dire que j'apprend beaucoup!

Merci à tous de m'avoir répondu, encore plus à Misterno!

J'espère que je peux compter sur vous si j'ai d'autre soucis!

Merci, à bientot

Steven

Rechercher des sujets similaires à "bloquer sauvagarde fichier"