Macro pour macro sur feuille protégée

Bonjour,

J'ai un classeur avec une macro et j'ai protégé des feuilles.

Cela posé problème pour l’exécution de la macro.

J'ai trouvé ce code qui pourra servir à d'autres, afin de palier ce problème.

Ce code doit être mis sur la page thisworkbook.

Private Sub Workbook_Open()
For Each Sh In Sheets
  Sh.Protect , userinterfaceonly:=True
Next
End Sub

Ce code permet de protéger toutes les feuilles du classeur et de permettre l’exécution des macros.

Cependant, dans mon classeur, une ou deux feuilles ne doivent pas être protégées.

j'ai donc insérer cette ligne de code après le Next et avant le End Sub

Sheets("Calcul").Unprotect 'Ici la feuille que je ne veux pas protéger.

Cela fonctionne, mais je me demande si il n'y a pas plus propre comme code, ou est ce que c'est bon comme j'ai fais.

Merci pour vos réponses.

Salut Amorapa,

Je crois que tu fais passablement de confusions ; si tu as un classeur avec des feuilles protégées, tu n’as pas besoin de les protéger à nouveau à l’ouverture de ton fichier. La macro ci-dessous me semble donc parfaitement inutile :

Private Sub Workbook_Open()
For Each Sh In Sheets
  Sh.Protect , userinterfaceonly:=True
Next
End Sub
amorapa a écrit :

Ce code permet de protéger toutes les feuilles du classeur et de permettre l’exécution des macros.

Ceci me semble parfaitement faux. Si tu as protégé une feuille et qu’une autre macro doit par exemple ajouter des données dans une cellule protégée, ça va bloquer !

Si durant le déroulement d’un code tu veux, disons, permettre d’ajouter des données sur une feuille protégée, tu peux par exemple utiliser les instructions suivantes :

Sub xxx()

Sheets("Feuil1").Unprotect "Xyz"

Range("A1") = "Salut"

Sheets("Feuil1").Protect "Xyz"

End Sub

Le mot de passe - "Xyz" dans l’exemple ci-dessus – est facultatif.

Cordialement.

Bonjour Yvouille,

Bonne année et meilleurs vœux pour l'année 2016.

Au départ, j'avais un classeur de 4 feuilles dont 3 seulement étaient protégées (seule la feuille calcul n'était pas protégée).

le souci, c'est qu'ensuite la macro me renvoyé un message d'erreur (celle qui s’exécutait à partir de la feuille protégée TAB)

Du coup, j'ai cherché sur internet macro sur feuille protégée qui ne fonctionne pas., et j'avais trouvé ceci

Soit mettre ceci dans la ou les macros.

En début de macro et tu remettre la protection à la fin

Me.Unprotect "Mot de Passe" (j'enlève le mot de passe)
...
Me.Protect "Mot de Passe" (j'enlève le mot de passe)

ou mettre ce code qui protège les feuilles (A l'ouverture du fichier) dans thiswoorkbook.

Private Sub Workbook_Open()
For Each Sh In Sheets
  Sh.Protect , userinterfaceonly:=True
Next
End Sub

Le souci ensuite, c'est que la macro semblait fonctionner, mais bloquée ensuite car ma feuille calcul était également protégée, ce qu'il ne fallait pas.

En fait, je devais à chaque ouverture de fichier, aller ensuite déprotégée ma feuille calcul qui était destinée à être cachée par la suite.

C'est la raison pour laquelle, j'ai rajoutée cette ligne de code

Sheets("Calcul").Unprotect 'Ici la feuille que je ne veux pas protéger.

Et la, le classeur fonctionne, les macros, tout.

J'avais compris que je demandais à protéger toutes les feuilles à l'ouverture, et demander ensuite à déprotéger une feuille (Calcul).

Je me disais qu'il aurait été plus simple, de dire à l'ouverture les feuilles que je voulais uniquement protégées.

Ensuite, ce qui est curieux,

c'est que si sans l'utilisation des macros, je protège les feuilles (de manière manuelle) sauf la feuille calcul, cela ne fonctionne pas à l'ouverture ensuite du fichier.

Par contre si j'intègre une macro, qui fait la même chose, cela fonctionne.

voilà toute l'histoire.

Alors, sinon, j'ai un casse tête à résoudre qu'Eric a essayer de résoudre, mais pas réussi ( je pense qu'un moment il était pas loin de la solution avec son premier code).

voici le topic si tu as une idée.

https://forum.excel-pratique.com/post413023.html#p413023

Le truc, c'est que je n'arrive pas à empêcher la suppression des fenêtre segment sur les feuille protégées.

même avec la ligne de code :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
End Sub

Bonne journée, bon début d'année et Merci

Je veux dire par là, clic droit par exemple et couper, même si tu inséres la ligne

Salut,

amorapa a écrit :

voilà toute l'histoire.

Je n’ai pas tout compris, mais je n’ai pas trop cherché à comprendre non plus ; tu sembles avoir résolu ton problème donc je n’ai plus à m’en soucier.

Pour ton autre fil, la discussion que vous avez eue avec Eric semble assez compliquée et je n’ai pas l’envie de tenter de comprendre ce qui est utile à la suite de la discussion, ce qui ne l’est plus. Comme Eric passe la main, je te conseille de mettre cet ancien fil sur ‘Résolu’ et d’en recommencer un nouveau avec un fichier exemple ainsi qu’une explication claire de ce qui ne va pas. Lorsque tu expliques un problème, dis-toi bien que la personne qui te lit ne connait rien à ton fichier et va à l’essentiel.

Amicalement.

ok, je ferai cela dans la journée.

Merci à toi

Rechercher des sujets similaires à "macro feuille protegee"