Macro pour bloquer toutes les feuilles d'un fichier Excel

Havane

Funky fresh Masta
Salut à tous,

J'ai une question sur laquelle je m'arrache les cheveux depuis une heure.

Je voudrais bloquer toutes les feuilles d'un fichier excel à la fois. Pour faire ça il faut faire une macro et je n'en ai jamais fait. J'ai 20 fichiers de 8 feuilles.

En chipotant et en regardant sur le net, j'ai trouvé une méthode. Je sauve mon fichier sous format "excel macro enabled" et je rajoute un module qui est celui là dans Visual Basic:

Sub Protection_Feuilles()

Dim Sh As Object
For Each Sh In ThisWorkbook.Sheets
If TypeOf Sh Is Worksheet Then
Sh.Unprotect "TonMotDePasse"
Sh.Cells.Locked = True
Sh.Cells.FormulaHidden = True
Sh.Protect "TonMotDePasse", True, True, True
End If
Next
End Sub

Ensuite je fais F5 pour lancer la macro et TADAM toutes les feuilles sont bloquées, je suis trop fier de moi, je me chie dessus.

Sauf qu'en faisant ALT+F11 ben on voit la macro donc le mdp.

Donc je resauve mon truc en format sans macro et boum j'ai mon fichier original bloqué (ce qui est important car j'ai un fichier synthétique qui reprend tt donc mes fichiers doivent avoir le mm nom et format qu'à l'origine sinon c la merde).

Tout fier de moi, je demande a ma collègue qui touche rien en excel d'essayer de foutre la merde dans mon fichier voir si elle y arrive.

En deux secondes, elle fait un copier coller d'une feuille et voir les colonnes cachées, pas les formules mais les contenus finaux, ce qui ne m'arrange pas.

DONC Ma question est celle-ci:

Comment refaire une macro qui d'un coup d'un seul bloquerait immédiatement toutes les feuilles mais en empêchant la sélection et la copie des cellules? Si en plus la macro pouvait empêcher de rajouter une feuille au fichier ce serait le top. En somme je veux que les gens puissent seulement lire le fichier mais absolument pas le modifier de quelle manière que ce soit!



Merci :)
 

gwen

Sitegeek.fr
Tu n'a pas besoin de macro pour ça, suffit de bloquer le fichier via les options prévues à cet effet "protect sheet,protect workbook" dans l'onglet Review chez moi
 
1er
OP
Havane

Havane

Funky fresh Masta
Oui sauf que je dois faire la manip d'entrer le mdp et de le confirmer pour chacune des 8 feuilles des 20 fichiers, si y'a une métode plus rapide, je suis preneur dans la mesure où je vais devoir refaire très souvent la même manip :)
 

Aqua

Elite
Pour cela faut jouer avec les permissions ou créer des répertoires partagés avec restriction par groupe.
 
1er
OP
Havane

Havane

Funky fresh Masta
Je crois qu'en rajoutant une ligne précisant qu'on peut pas sélectionner les cellules dans la macro ca irait! Et je peux pas faire un truc avec les groupes puisque c'est un document qui doit être diffusé à nos partenaires mais je veux qu'ils ne voient que le résultat et pas les modes de calcul. Encore moins pouvoir copier celle-ci! Je voudrais pas qu'un consultant privé se fasse du blé en pompant tout mon taf!
 

Azinou

Ancienne LV
Je crois qu'en rajoutant une ligne précisant qu'on peut pas sélectionner les cellules dans la macro ca irait! Et je peux pas faire un truc avec les groupes puisque c'est un document qui doit être diffusé à nos partenaires mais je veux qu'ils ne voient que le résultat et pas les modes de calcul. Encore moins pouvoir copier celle-ci! Je voudrais pas qu'un consultant privé se fasse du blé en pompant tout mon taf!
Normalement, dans ta macro, tu peux taper tout les settings normalement cochable quand tu fais un verrouillage manuel de la feuille, et via cette fenêtre, tu peux normalement bloquer tout de A à Z (du fait de pouvoir sélectionner une cellule à changer la hauteur/largeur des cellules etc).

T'as regardé dans l'aide via F1 si y a pas une liste de paramètre exploitable dans une macro par rapport au verrouillage d'une feuille ?
 
1er
OP
Havane

Havane

Funky fresh Masta
J'ai jamais pensé que l'aide puisse m'être vraiment utile mais il se pourrait bien qu'il y ait un début à tout :D
 

Azinou

Ancienne LV
J'ai jamais pensé que l'aide puisse m'être vraiment utile mais il se pourrait bien qu'il y ait un début à tout :D
C'est un peu le seul truc pour lequel je fais confiance à l'aide intégrée, c'est d'indiquer les variables de bases utilisables :p
 

fraggahh

chapitre.vin
j'ai un fichier comme ca au boulot ou tout est bloqué via des macros.

Je relock tout chaque fois à l'ouverture du fichier. Le gars est obliger d'accepter les macros pour sont utilisations.

Si tu asle temps jusque lundi je peux t'envoyer les méthodes


edit : oublie pas que tu peux proteger tes modules avec un pw
 
1er
OP
Havane

Havane

Funky fresh Masta
En fait c'est la première fois que je chipote avec Visual Basic et des macros donc je suis encore au niveau 0 des fonctionnalités. Je me doutais bien qu'on pouvait les protéger mais je savais pas comment. Clairement les procédures et méthodes m'intéressent :)
 

.Knz

Au Pays des merveilles.
Normalement, tu peux protéger ton code VBA (pour empêcher de le voir/modifier), cherche bien. (quelque part dans le developer)

J'avais fait la même à l'époque.

Sinon, pour connaitre le code ou orienter tes recherches, utilises l'espion dans les outils de macro, c'est vraiment utile. Du genre, je sais le faire manuellement mais pas en VBA ==> espion.

EDIT:
[url=http://www.ozgrid.com/VBA/protect-vba-code.htm]CLICK[/url] a dit:
To protect your code, open the Excel Workbook and go to Tools>Macro>Visual Basic Editor (Alt+F11). Now, from within the VBE go to Tools>VBAProject Properties and then click the Protection page tab and then check "Lock project from viewing" and then enter your password and again to confirm it. After doing this you must save, close & reopen the Workbook for the protection to take effect.
EDIT2: J'avais fait ça, quant à savoir exactement ce que c'est, je m'en souviens plus :mrgreen: (utilises l'aide VBA, F1 sur la fonction que tu piges pas dans l'éditeur)
Sub wsProtect()

Dim ws As Worksheet

For Each ws In Worksheets

ws.Protect Password:="motdepasse", DrawingObjects:=True, Contents:=True, Scenarios:=True
ws.EnableSelection = xlUnlockedCells

Next ws

End Sub
EDIT3:
.EnableSelection a dit:
Syntaxe

expression.EnableSelection

expression Variable qui représente un objet Worksheet.

Remarques


Cette propriété ne prend effet que lorsque la feuille de calcul est protégée : xlNoSelection empêche toute sélection dans la feuille, xlUnlockedCells ne permet que la sélection des cellules dont la propriété Locked est False, enfin xlNoRestrictions permet la sélection de n'importe quelle cellule.
Par contre, si tu effectues des sélections via des macros, prends bien soin de désélectionner les cellules actives sinon, lors de la protection des feuilles, celles-ci seront encore en surbrillance. Ce qui n'est pas du tout esthétique pour le lecteur.
 
Haut