• Initiateur de la discussion Initiateur de la discussion mcj1997
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mcj1997

XLDnaute Accro
Bonjour,

Je suis à la rechercher d'une macro qui me protége automatiquement avec mot de passe toutes les cellules d'une feuille dès lors qu'elles contiennent une formule.

Merci d'avance,
 
Re : Macro protection

Bonjour mcj1997,Voici un fichier exemple.

La feuille 1 contient 4 formules, la feuille 2 en contient une (cellules teintées en jaune)

Un clic sur le bouton test protègera bien les feuilles 1 & 2, mais pas la 3.

Espérant avoir répondu.

Cordialement.

PS : le mot de passe est défini comme constante ("0000") dans Module1. Tu peux bien sûr modifier ce mot de passe, mais il ne faudra pas oublier de déprotéger les feuilles avant de le faire.
 

Pièces jointes

Re : Macro protection

Bonjour mcj1997,Voici un fichier exemple.

La feuille 1 contient 4 formules, la feuille 2 en contient une (cellules teintées en jaune)

Un clic sur le bouton test protègera bien les feuilles 1 & 2, mais pas la 3.

Espérant avoir répondu.

Cordialement.

PS : le mot de passe est défini comme constante ("0000") dans Module1. Tu peux bien sûr modifier ce mot de passe, mais il ne faudra pas oublier de déprotéger les feuilles avant de le faire.

MERCI mais le bouton test ne protège pas les cellules contenant des formules.
 
Dernière édition:
Re : Macro protection

Bonjour tout le monde,

Au départ toutes les cellules sont protégées.
Tu veux plutôt déprotéger celles qui n'ont pas de formule je pense...

Alors ça peut-être :
Code:
Sub protect()
    Cells.Locked = False
    Cells.SpecialCells(xlCellTypeFormulas).Locked = True
    'Cells.SpecialCells(xlCellTypeFormulas).FormulaHidden = True' masquer les formules
End Sub
eric
 
Dernière édition:
Re : Macro protection

Bonjour tout le monde,

Au départ toutes les cellules sont protégées.
Tu veux plutôt déprotéger celles qui n'ont pas de formule je pense...

Alors ça peut-être :
Code:
Sub protect()
    Cells.Locked = False
    Cells.SpecialCells(xlCellTypeFormulas).Locked = True
    'Cells.SpecialCells(xlCellTypeFormulas).FormulaHidden = True' masquer les formules
End Sub
eric

NON au départ aucune cellule n'est protégée cf mon post #1.
 
Re : Macro protection

Arf, j'ai répondu trop vite.

Effectivement, eriiiic a raison, mais le problème venait du fait que je n'avais pas attaché la macro au bouton Test.

J'ai donc repris entièrement ma copie et voici donc une solution qui devrait être pleinement fonctionnelle.

Attention, si les feuilles comprennent de nombreuses cellules à traiter, le programme risque d'être un peu long.

Cordialement.
 

Pièces jointes

Re : Macro protection

merci c'est impecccable.

Je viens d'essayer cette macro ci-dessous pour déprotéger, ça fonctionne par contre comment intégrer le code 0000 dans la macro afin qu'il ne soit pas demandé.


Sub Macro3()
'
'
ActiveSheet.Unprotect

End Sub
 
Dernière édition:
Re : Macro protection

Re,

NON au départ aucune cellule n'est protégée cf mon post #1.

SI, au départ toutes les cellules sont protégées quelque soit le contenu de ton post #1

Maintenant si tu parles de cellules alors que tu veux protéger la feuille...
Il ne manquait que la partie protection de la feuille, et ces 2 lignes dispensent de boucler sur les cellules.

eric
 
Dernière édition:
Re : Macro protection

Re,



SI, au départ toutes les cellules sont protégées quelque soit le contenu de ton post #1

Maintenant si tu parles de cellules alors que tu veux protéger la feuille...
Il ne manquait que la partie protection de la feuille, et ces 2 lignes dispensent de boucler sur les cellules.

eric

Salut eric,

Je pense que notre ami désire mettre à jour la protection après modifications dans les feuilles. Ce qui implique forcément une boucle pour balayer chaque cellule.

Cordialement.
 
Re : Macro protection

Re papou-net,

Ce qui implique forcément une boucle pour balayer chaque cellule
Pouquoi ?
Cells.SpecialCells(xlCellTypeFormulas).Locked = True
fixe bien l'état Locked à True pour toutes les formules de la feuille.
Je me trompe ou bien des particularités peuvent faire que des formules ne soient pas sélectionnées ainsi ?

eric
 
Re : Macro protection

Re papou-net,


Pouquoi ?
Cells.SpecialCells(xlCellTypeFormulas).Locked = True
fixe bien l'état Locked à True pour toutes les formules de la feuille.
Je me trompe ou bien des particularités peuvent faire que des formules ne soient pas sélectionnées ainsi ?

eric

Non, tu ne te trompes pas eric, c'est moi qui me suis égaré dans le raisonnement.

Effectivement, nul besoin de boucle. Mais où avais-je donc la tête ?

Le code peut donc se simplifier comme ceci :

Code:
Const mdp = "0000"
Sub ProtectionFeuilles()
Dim Formule As Boolean, nbForm As Long
On Error Resume Next
For Each sh In Sheets
  Formule = False
  With sh
    .Cells.Locked = False
    nbForm = 0
    nbForm = .Cells.SpecialCells(xlCellTypeFormulas).Count
    If nbForm > 0 Then
      .Cells.SpecialCells(xlCellTypeFormulas).Locked = True
      .Protect mdp
    End If
  End With
Next
End Sub
Merci et bonne soirée à toi, ainsi qu'à mcj.

Cordialement.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
686
Réponses
7
Affichages
342
Retour