Macro bascule de protection/ Déprotection

Le
michir
Bonjour,
J'utilise la procédure suivante (MichD) pour protéger les formules
J'aimerais la rendre alternative (Protéger/ Déprotéger) pour
l'affecter à un seul bouton macro:

Sub test_Protect()
Application.ScreenUpdating = False
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
With Sh
Select Case LCase(Left(.Name, 4))
Case Is = "jour"
.Unprotect 'Mot de passe si nécessaire
With .Cells
.Locked = False
With .SpecialCells(xlCellTypeFormulas)
.Locked = True
Range("F3").Select
ActiveCell.FormulaR1C1 = "Formules Protégées"
End With
End With
.Protect 'Mot de passe si nécessaire
End Select
End With
Next Sh
Application.ScreenUpdating = True
End Sub

Merci à tous,
Michel
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DanielCo
Le #23226441
Bonjour,
Utilise le principe suivant et adapte-le à ce que tu veux faire :

For Each sh In Sheets
If sh.ProtectContents = True Then
sh.Unprotect
Else
sh.Protect
End If
Next sh

Cordialement.
Daniel


michir a écrit
Bonjour,
J'utilise la procédure suivante (MichD) pour protéger les formules
J'aimerais la rendre alternative (Protéger/ Déprotéger) pour
l'affecter à un seul bouton macro:

Sub test_Protect()
Application.ScreenUpdating = False
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
With Sh
Select Case LCase(Left(.Name, 4))
Case Is = "jour"
.Unprotect 'Mot de passe si nécessaire
With .Cells
.Locked = False
With .SpecialCells(xlCellTypeFormulas)
.Locked = True
Range("F3").Select
ActiveCell.FormulaR1C1 = "Formules Protégées"
End With
End With
.Protect 'Mot de passe si nécessaire
End Select
End With
Next Sh
Application.ScreenUpdating = True
End Sub

Merci à tous,
Michel
MichD
Le #23226991
Bonjour,

Il y a aussi ceci :

Dans une feuille, tu ajoutes un bouton de commande émanant de la boîte d'outils "Formulaire"

Sur ce bouton, tu inscris "Formules protégées"

Utilise ce type de macro :
Dans la macro, j'ai supposé que le bouton s'appelait : "Bouton 1" et qu'il était situé sur la "Feuil1"
à toi d'adapter.

'--------------------------------------------
Sub test_Protect()
Dim Sh As Worksheet

On Error Resume Next
With Worksheets("Feuil1").Shapes("Bouton 1") 'à adapter
If .OLEFormat.Object.Caption = "Formules protégées" Then
For Each Sh In ThisWorkbook.Worksheets
Select Case LCase(Left(Sh.Name, 4))
Case Is = "jour"
Sh.Unprotect
' Sh.Range("F3").FormulaR1C1 = ""
End Select
Next
.OLEFormat.Object.Caption = "Formules déprotégées"
Else
.OLEFormat.Object.Caption = "Formules protégées"
For Each Sh In ThisWorkbook.Worksheets
With Sh
Select Case LCase(Left(.Name, 4))
Case Is = "jour"
.Unprotect 'Mot de passe si nécessaire
With .Cells
.Locked = False
With .SpecialCells(xlCellTypeFormulas)
.Locked = True
End With
End With
'.Range("F3").FormulaR1C1 = "Formules Protégées"
.Protect 'Mot de passe si nécessaire
End Select
End With
Next
End If
End With
End Sub
'----------------------------------------

MichD
--------------------------------------------
michir
Le #23227691
On 23 mar, 13:29, "MichD"
Bonjour,

Il y a aussi ceci :

Dans une feuille, tu ajoutes un bouton de commande émanant de la boît e d'outils "Formulaire"

Sur ce bouton, tu inscris "Formules protégées"

Utilise ce type de macro :
Dans la macro, j'ai supposé que le bouton s'appelait : "Bouton 1" et qu 'il était situé sur la "Feuil1"
à toi d'adapter.

'--------------------------------------------
Sub test_Protect()
Dim Sh As Worksheet

On Error Resume Next
With Worksheets("Feuil1").Shapes("Bouton 1") 'à adapter
    If .OLEFormat.Object.Caption = "Formules protégées" Then
        For Each Sh In ThisWorkbook.Worksheets
             Select Case LCase(Left(Sh.Name, 4))
                Case Is = "jour"
                    Sh.Unprotect
                   ' Sh.Range("F3").FormulaR1C1 = " "
            End Select
        Next
        .OLEFormat.Object.Caption = "Formules déprotégées "
    Else
        .OLEFormat.Object.Caption = "Formules protégées"
            For Each Sh In ThisWorkbook.Worksheets
                With Sh
                    Select Case LCase(Left(.Name, 4))
                        Case Is = "jour"
                            .Unprotect 'Mot d e passe si nécessaire
                            With .Cells
                                .Locked = False
                                With .Spe cialCells(xlCellTypeFormulas)
                                    . Locked = True
                                End With
                            End With
                            '.Range("F3").For mulaR1C1 = "Formules Protégées"
                            .Protect  'Mot de passe si nécessaire
                    End Select
                End With
            Next
    End If
End With
End Sub
'----------------------------------------

MichD
--------------------------------------------



Re,
Merci à vous deux,
MichD, comment comprendre les commentaires dans la procédure que tu
proposes ?:
' Sh.Range("F3").FormulaR1C1 = ""
et '.Range("F3").FormulaR1C1 = "Formules Protégées"
Comment puis je nommer le Bouton ? (je l'ai dessiné avec "Insertion",
"Formes"...
Dois je placer cette macro derrière chaque feuille du projet ?
Ma version d'Excel est la 2010
Merci
Michel
MichD
Le #23227831
A ) SVP, réponds en haut du message et non en dessous. C'est une pratique reconnue et acceptée par ce groupe de
discussion

B ) Les 2 lignes que tu mentionnes, je les ai inhibées puisque le bouton de commande affiche déjà le message...
Si tu y tiens, enlève l'apostrophe devant la ligne de code, c'est une question de choix!

C ) Pour insérer un bouton de commande comme le mentionne le message,
Dans la barre de menu : Développeur Section : Ccontrôles
Un clic sur la commande "Insérer" et tu choisis le premier bouton de gauche dans
la liste des contrôles de formulaire.
Lorsque le bouton est dessiné, un clic droit / modifier le texte et tu le nommes d'après la suggestion faite.



MichD
--------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


On 23 mar, 13:29, "MichD"
Bonjour,

Il y a aussi ceci :

Dans une feuille, tu ajoutes un bouton de commande émanant de la boîte d'outils "Formulaire"

Sur ce bouton, tu inscris "Formules protégées"

Utilise ce type de macro :
Dans la macro, j'ai supposé que le bouton s'appelait : "Bouton 1" et qu'il était situé sur la "Feuil1"
à toi d'adapter.

'--------------------------------------------
Sub test_Protect()
Dim Sh As Worksheet

On Error Resume Next
With Worksheets("Feuil1").Shapes("Bouton 1") 'à adapter
If .OLEFormat.Object.Caption = "Formules protégées" Then
For Each Sh In ThisWorkbook.Worksheets
Select Case LCase(Left(Sh.Name, 4))
Case Is = "jour"
Sh.Unprotect
' Sh.Range("F3").FormulaR1C1 = ""
End Select
Next
.OLEFormat.Object.Caption = "Formules déprotégées"
Else
.OLEFormat.Object.Caption = "Formules protégées"
For Each Sh In ThisWorkbook.Worksheets
With Sh
Select Case LCase(Left(.Name, 4))
Case Is = "jour"
.Unprotect 'Mot de passe si nécessaire
With .Cells
.Locked = False
With .SpecialCells(xlCellTypeFormulas)
.Locked = True
End With
End With
'.Range("F3").FormulaR1C1 = "Formules Protégées"
.Protect 'Mot de passe si nécessaire
End Select
End With
Next
End If
End With
End Sub
'----------------------------------------

MichD
--------------------------------------------



Re,
Merci à vous deux,
MichD, comment comprendre les commentaires dans la procédure que tu
proposes ?:
' Sh.Range("F3").FormulaR1C1 = ""
et '.Range("F3").FormulaR1C1 = "Formules Protégées"
Comment puis je nommer le Bouton ? (je l'ai dessiné avec "Insertion",
"Formes"...
Dois je placer cette macro derrière chaque feuille du projet ?
Ma version d'Excel est la 2010
Merci
Michel
michir
Le #23228781
On 23 mar, 18:17, "MichD"
A ) SVP, réponds en haut du message et non en dessous. C'est une pratiq ue reconnue et acceptée par ce groupe de
discussion

B ) Les 2 lignes que tu mentionnes, je les ai inhibées puisque le bouto n de commande affiche déjà le message...
    Si tu y tiens, enlève l'apostrophe devant la ligne de code, c'e st une question de choix!

C ) Pour insérer un bouton de commande comme le mentionne le message,
    Dans la barre de menu : Développeur     Section : Ccontrô les
    Un clic sur la commande "Insérer" et tu choisis le premier bout on de gauche dans
    la liste des contrôles de formulaire.
    Lorsque le bouton est dessiné, un clic droit / modifier le text e et tu le nommes d'après la suggestion faite.

MichD
--------------------------------------------
"michir"  a écrit dans le message de groupe de discussion :


On 23 mar, 13:29, "MichD"








> Bonjour,

> Il y a aussi ceci :

> Dans une feuille, tu ajoutes un bouton de commande émanant de la bo îte d'outils "Formulaire"

> Sur ce bouton, tu inscris "Formules protégées"

> Utilise ce type de macro :
> Dans la macro, j'ai supposé que le bouton s'appelait : "Bouton 1" et qu'il était situé sur la "Feuil1"
> à toi d'adapter.

> '--------------------------------------------
> Sub test_Protect()
> Dim Sh As Worksheet

> On Error Resume Next
> With Worksheets("Feuil1").Shapes("Bouton 1") 'à adapter
>     If .OLEFormat.Object.Caption = "Formules protégées" Then
>         For Each Sh In ThisWorkbook.Worksheets
>              Select Case LCase(Left(Sh.Name, 4))
>                 Case Is = "jour"
>                     Sh.Unprotect
>                    ' Sh.Range("F3").FormulaR1C1 = ""
>             End Select
>         Next
>         .OLEFormat.Object.Caption = "Formules déprotégé es"
>     Else
>         .OLEFormat.Object.Caption = "Formules protégées"
>             For Each Sh In ThisWorkbook.Worksheets
>                 With Sh
>                     Select Case LCase(Left(.Name, 4 ))
>                         Case Is = "jour"
>                             .Unprotect 'Mot de passe si nécessaire
>                             With .Cells
>                                 .Locked = False
>                                 With .S pecialCells(xlCellTypeFormulas)
>                                     .Locked = True
>                                 End Wit h
>                             End With
>                             '.Range("F3").F ormulaR1C1 = "Formules Protégées"
>                             .Protect  'Mo t de passe si nécessaire
>                     End Select
>                 End With
>             Next
>     End If
> End With
> End Sub
> '----------------------------------------

> MichD
> --------------------------------------------

Re,
Merci à vous deux,
MichD, comment comprendre les commentaires dans la procédure que tu
proposes ?:
              ' Sh.Range("F3").FormulaR1C1 = ""
et           '.Range("F3").FormulaR1C1 = "Formules Protég ées"
Comment puis je nommer le Bouton ? (je l'ai dessiné avec "Insertion",
"Formes"...
Dois je placer cette macro derrière chaque feuille du projet ?
Ma version d'Excel est la 2010
Merci
Michel



Merci, MichD, cela fonctionne parfaitement, j'ai juste ajouté la ligne
au début:
Application.ScreenUpdating = False
pour éviter le clignotement de la page lors de l'exécution de la macro
Question matérielle, je réponds à l'endroit où le curseur clignote
lorsque j'écris une réponse. Ce n'est pas ce qu'il faut faire ?
Merci à toi
Michel
J
Le #23231231
Bonjour michir

Pardonne-moi de m'immiscer dans ce fil, mais non, il ne faut pas
répondre là où clignote ton curseur, mais, comme je le fais ici, au
dessus de la réponse.

C'est une tradition mpfe qui remonte au millénaire dernier. C'est dire.

Il est toutefois admis, dans certains cas, d'entrelarder réponse et
question.

Bonne journée
@+
J@@

Le 23/03/2011 21:59, michir a écrit :
Question matérielle, je réponds à l'endroit où le curseur clignote
lorsque j'écris une réponse. Ce n'est pas ce qu'il faut faire ?
Merci à toi
Michel
Mgr T. Plubanni
Le #23231351
...tradition que n'a pas manqué de suivre surplus, suite à l'intervention du
clergé
Mgr T. P. (dont l'étole salue l'atoll)


"J@@" imh3hj$nce$
Bonjour michir

Pardonne-moi de m'immiscer dans ce fil, mais non, il ne faut pas répondre
là où clignote ton curseur, mais, comme je le fais ici, au dessus de la
réponse.

C'est une tradition mpfe qui remonte au millénaire dernier. C'est dire.

Il est toutefois admis, dans certains cas, d'entrelarder réponse et
question.

Bonne journée
@+
J@@

Le 23/03/2011 21:59, michir a écrit :
Question matérielle, je réponds à l'endroit où le curseur clignote
lorsque j'écris une réponse. Ce n'est pas ce qu'il faut faire ?
Merci à toi
Michel
J
Le #23231441
En effet, Votre Eminence.

Une tradition qui a traversé les frontières, franchi les océans, s'est
jouée des montagnes, et relie les hémisphères.

J@@ (de l'atoll ondulé au beau jolais)

Le 24/03/2011 21:02, Mgr T. Plubanni a écrit :
...tradition que n'a pas manqué de suivre surplus, suite à l'intervention du
clergé
Mgr T. P. (dont l'étole salue l'atoll)


"J@@" imh3hj$nce$
Bonjour michir

Pardonne-moi de m'immiscer dans ce fil, mais non, il ne faut pas répondre
là où clignote ton curseur, mais, comme je le fais ici, au dessus de la
réponse.

C'est une tradition mpfe qui remonte au millénaire dernier. C'est dire.

Il est toutefois admis, dans certains cas, d'entrelarder réponse et
question.

Bonne journée
@+
J@@

Le 23/03/2011 21:59, michir a écrit :
Question matérielle, je réponds à l'endroit où le curseur clignote
lorsque j'écris une réponse. Ce n'est pas ce qu'il faut faire ?
Merci à toi
Michel
Publicité
Poster une réponse
Anonyme