Proteger classeur excel mais ecriture sur 1 feuille

romainchu78

XLDnaute Occasionnel
Bonjour a tous,

J'ai une macro qui est mise a disposition au public pour une libre utilisation.
J'ai protege le classeur en lecture seule (bouton droit de la sourie sur le fichier cliquer sur lecture seule). Maintenant jai un code espion qui doit enregistrer a chaque fois que quelqu'un utilise la macro. Mes modules sont egalement proteges par un code.
A l'heure actuel le probleme est que la proctetion en lecture seule ne me permet pas de sauver automatiquement le fichier.

Ma question: Comment faire ?

Bonne soiree
 

Sylvain

XLDnaute Occasionnel
Re : Proteger classeur excel mais ecriture sur 1 feuille

Bonsoir,

Une réponse rapide : regarde si tu peux transformer ton classeur en macro complémentaire. A ce moment, les feuilles de calcul ne sont plus visibles pour les utilisateurs, mais le programme peut toujours y accéder (penser à utiliser thisworkbook à la place de activeworkbook). Et tu peux le sauvegarder (plus besoin de le mettre en lecture seule (thisworkbook.save).

A+
 

romainchu78

XLDnaute Occasionnel
Re : Proteger classeur excel mais ecriture sur 1 feuille

merci sylvain pour ta reponse.
je crains de ne pas avoir tout saisie...
jai 3 feuilles visibles par l'utilisateur sur lesquelles jai des boutons vb qui font appel a des codes situe dans des modules.
l'acces a ces modules est controle pas un mot de passe.
jai une autre feuille excel qui elle est invisible et qui contient le registre des personnes qui on utilise le fichier (rappel: 1 fichier pour plusieurs personne)
pour enregistrer les personnes qui l'on utilise, une macro s'active automatiquement a l'ouverture du fichier.

a l'heure actuel protection en lecture seule (en passant par windows, bouton droit de la sourie lesture seule) pour eviter que les gens changent ou copie des truc dans le fichier et comme je lai dis une protection des modules par mot de passe pour eviter que les types ailleurs touche au code.

le lecture seule bien evidemment m'empeche de sauvegarder automatiquement ma feuille registre a laide du code espion.

ma question etait: quelle autre forme de protection existe-il me permettant a la fois d'empecher les types de sauvegarder le fichier par eux meme mais me permetant quant meme de laisser le code espion enregistrer juste sur ma feuille registre (qui je le rappel est cachee).

tu as malgre tout peut etre repondu a ma question mais jai essaye et ca ne marche pas, ais-je vraiment fais une mauvaise manipe ???


merci pour ton soutient.

romain
 

Sylvain

XLDnaute Occasionnel
Re : Proteger classeur excel mais ecriture sur 1 feuille

bonjour,

Si tu gardes la manière macro complémentaire, il faut remplacer la feuille avec les boutons par la création d'un menu déroulant ou d'une palette avec des boutons.

une autre façon serait de sauvegarder tes informations dans un fichier texte journal :

Private Sub fichier()

' Via fichier
' il faut mettre ce code à la place du code de Private Sub Workbook_Open()

fichier = "C:\Temp\le_fichier.txt" ' le chemin du fichier

Log = Application.UserName ' logging
dat = Date

Open fichier For Append As #1
Print #1, Log, dat
Close #1

End Sub


A+
 

romainchu78

XLDnaute Occasionnel
Re : Proteger classeur excel mais ecriture sur 1 feuille

cela ne marche toujours pas. et le fichier text qui va acceuillir le log devra aussi etre proteger pour eviter que les gens le modif. donc c'est le serpent qui se mort la queue!

il n'y a t'il vraiment pas un moyen d'avoir une protection comme le "lecture seule": C'est a dire qui permet de faire n'importe quoi dans le fichier sauf d'enregistrer. Mais cependant qui ne protegerais pas une feuille de mon classeur?

jai essaye les fonctions de propection standard de excel et ca protege tout ou rien. Il empeche mes macro d'ecrire dans les feuilles du classeur !!!

bon week-end
 

Sylvain

XLDnaute Occasionnel
Re : Proteger classeur excel mais ecriture sur 1 feuille

bonsoir,

pour empêcher d'enregistrer, tu as ce code à mettre dans la feuille wokbook :

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

pour protéger une feuille contre l'écriture par une personne mais autoriser pour le programme tu as :

Sheets("Feuil1").Protect "toto", , , , True

A+
 

romainchu78

XLDnaute Occasionnel
Re : Proteger classeur excel mais ecriture sur 1 feuille

ok je crois que nous somme proche de la solution:
peut tu stp elaborer le :

pour protéger une feuille contre l'écriture par une personne mais autoriser pour le programme tu as :

Sheets("Feuil1").Protect "toto", , , , True

Desole je suis debutant, merci pour ton soutien sylvain
 

Sylvain

XLDnaute Occasionnel
Re : Proteger classeur excel mais ecriture sur 1 feuille

Regarde dans l'aide de protect, le dernier paramètre est userinterfaceonly, c'est à dire que la protection ne s'applique qu'à l'utilisateur mais pas au programme. Donc range("A12").value=12 va marcher sans mettre d'erreur.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87