Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Protection des boutons

5 réponses
Avatar
Caroline L.
Bonjour,

J'ai inséré des boutons (avec macro) et je voudrais que ces boutons soient
protégés MÊME LORSQUE LA PROTECTION DE LA FEUILLE EST ENLEVÉE. Je voudrais
qu'il soit Impossible de déplacer les boutons, de les redimensionner, de les
supprimer ou de modifier le texte.

Merci beaucoup

Bon printemps à tous !

Caroline

5 réponses

Avatar
MichDenis
Bonsoir Caroline,

Dans le ThisWorkbook, copie la procédure suivante en adaptant le nom des feuilles pour lesquelles tu désires appliquer ce type de
protection.

'---------------------------------------
Private Sub Workbook_Open()

Dim Arr As Variant, Elt As Variant
Dim S As Shape

Arr = Array("Feuil1", "Feuil2")

For Each Elt In Arr
With Worksheets(Elt)
For Each S In .Shapes
If S.Type = msoFormControl Then
With S
.Placement = xlFreeFloating
.Locked = True
.LockAspectRatio = msoFalse
End With
End If
Next
.Protect , True, True, True, True
End With
Next

End Sub
'---------------------------------------


Et si à l'intérieur d'une procédure spéciale, tu désires enlever la protection au contenu des cellules seulement, tu dois utiliser
quelque chose comme ceci :

'Tous les objets de ta feuille demeureront protégés mais tu pourras modifier le contenu des cellules de la Feuil1
'------------------------
With Worksheets("Feuil1")
.Unprotect
.Protect , True, False, True, True
End With
'------------------------



Salutations!





"Caroline L." a écrit dans le message de news: EVJ2e.82288$
Bonjour,

J'ai inséré des boutons (avec macro) et je voudrais que ces boutons soient
protégés MÊME LORSQUE LA PROTECTION DE LA FEUILLE EST ENLEVÉE. Je voudrais
qu'il soit Impossible de déplacer les boutons, de les redimensionner, de les
supprimer ou de modifier le texte.

Merci beaucoup

Bon printemps à tous !

Caroline
Avatar
Caroline L.
Bonjour MichDenis,

Je ne peux pas adapter le nom des feuilles car j'en ai plusieurs et elles
changent souvent de nom. Est-ce qu'on peut insérer une petite procédure à
la feuille "Feuil1" (dans son module) car j'ai une macro qui clône cette
feuille (donc le code est par le fait même copier). À chaque ajout de
feuille, le code de la feuille "Feuil1" est copié.

Merci
Caroline

"MichDenis" a écrit dans le message de news:

Bonsoir Caroline,

Dans le ThisWorkbook, copie la procédure suivante en adaptant le nom des
feuilles pour lesquelles tu désires appliquer ce type de

protection.

'---------------------------------------
Private Sub Workbook_Open()

Dim Arr As Variant, Elt As Variant
Dim S As Shape

Arr = Array("Feuil1", "Feuil2")

For Each Elt In Arr
With Worksheets(Elt)
For Each S In .Shapes
If S.Type = msoFormControl Then
With S
.Placement = xlFreeFloating
.Locked = True
.LockAspectRatio = msoFalse
End With
End If
Next
.Protect , True, True, True, True
End With
Next

End Sub
'---------------------------------------


Et si à l'intérieur d'une procédure spéciale, tu désires enlever la
protection au contenu des cellules seulement, tu dois utiliser

quelque chose comme ceci :

'Tous les objets de ta feuille demeureront protégés mais tu pourras
modifier le contenu des cellules de la Feuil1

'------------------------
With Worksheets("Feuil1")
.Unprotect
.Protect , True, False, True, True
End With
'------------------------



Salutations!





"Caroline L." a écrit dans le message de news:
EVJ2e.82288$

Bonjour,

J'ai inséré des boutons (avec macro) et je voudrais que ces boutons soient
protégés MÊME LORSQUE LA PROTECTION DE LA FEUILLE EST ENLEVÉE. Je voudrais
qu'il soit Impossible de déplacer les boutons, de les redimensionner, de
les

supprimer ou de modifier le texte.

Merci beaucoup

Bon printemps à tous !

Caroline





Avatar
Caroline L.
Re-bonjour MichDenis,

voici la macro qui est dans le module de feuille (lorsque la feuille est
"clônée")
On pourrait peut-être seulement ajouter une ligne qui dit de protéger les
objets de cette feuille en même temps que la plage à protéger.


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False
Application.EnableEvents = False


If Not Intersect(Target, plage) Is Nothing Then

Else

Range("D9").Select
End If
Application.EnableEvents = True

End If

End Sub


Merci !



"MichDenis" a écrit dans le message de news:

Bonsoir Caroline,

Dans le ThisWorkbook, copie la procédure suivante en adaptant le nom des
feuilles pour lesquelles tu désires appliquer ce type de

protection.

'---------------------------------------
Private Sub Workbook_Open()

Dim Arr As Variant, Elt As Variant
Dim S As Shape

Arr = Array("Feuil1", "Feuil2")

For Each Elt In Arr
With Worksheets(Elt)
For Each S In .Shapes
If S.Type = msoFormControl Then
With S
.Placement = xlFreeFloating
.Locked = True
.LockAspectRatio = msoFalse
End With
End If
Next
.Protect , True, True, True, True
End With
Next

End Sub
'---------------------------------------


Et si à l'intérieur d'une procédure spéciale, tu désires enlever la
protection au contenu des cellules seulement, tu dois utiliser

quelque chose comme ceci :

'Tous les objets de ta feuille demeureront protégés mais tu pourras
modifier le contenu des cellules de la Feuil1

'------------------------
With Worksheets("Feuil1")
.Unprotect
.Protect , True, False, True, True
End With
'------------------------



Salutations!





"Caroline L." a écrit dans le message de news:
EVJ2e.82288$

Bonjour,

J'ai inséré des boutons (avec macro) et je voudrais que ces boutons soient
protégés MÊME LORSQUE LA PROTECTION DE LA FEUILLE EST ENLEVÉE. Je voudrais
qu'il soit Impossible de déplacer les boutons, de les redimensionner, de
les

supprimer ou de modifier le texte.

Merci beaucoup

Bon printemps à tous !

Caroline





Avatar
MichDenis
Bonjour Caroline,

Je débuterais par appliquer cette macro pour la feuille concernée. Comme tu reproduits des clones, les objets issus de la barre
d'outils formulaire conserveront leur caractéristique !

Et tu adaptes le nom de la feuille.
'------------------------------
Sub ExécuterUnefois()

Dim S As Shape
With Worksheets("Feuil1")
For Each S In .Shapes
If S.Type = msoFormControl Then
With S
.Placement = xlFreeFloating
.Locked = True
.LockAspectRatio = msoFalse
End With
End If
Next
End With
Set S = Nothing

End Sub
'------------------------------


Concernant la macro que tu as déjà dans ta feuille, essaie cette version :

'-------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"), _
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

If ws.ProtectContents Then
ws.Unprotect "1234"
ws.Protect "1234", True, False, True, True
plage.Locked = True
ws.Protect "1234"
Else
ws.Protect "1234", True, False, True, True
plage.Locked = False
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
Else
Range("D9").Select
End If
Application.EnableEvents = True

End If

End Sub
'-------------------------------------------


Salutations!




"Caroline L." a écrit dans le message de news: uTU2e.3194$
Re-bonjour MichDenis,

voici la macro qui est dans le module de feuille (lorsque la feuille est
"clônée")
On pourrait peut-être seulement ajouter une ligne qui dit de protéger les
objets de cette feuille en même temps que la plage à protéger.


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False
Application.EnableEvents = False


If Not Intersect(Target, plage) Is Nothing Then

Else

Range("D9").Select
End If
Application.EnableEvents = True

End If

End Sub


Merci !



"MichDenis" a écrit dans le message de news:

Bonsoir Caroline,

Dans le ThisWorkbook, copie la procédure suivante en adaptant le nom des
feuilles pour lesquelles tu désires appliquer ce type de

protection.

'---------------------------------------
Private Sub Workbook_Open()

Dim Arr As Variant, Elt As Variant
Dim S As Shape

Arr = Array("Feuil1", "Feuil2")

For Each Elt In Arr
With Worksheets(Elt)
For Each S In .Shapes
If S.Type = msoFormControl Then
With S
.Placement = xlFreeFloating
.Locked = True
.LockAspectRatio = msoFalse
End With
End If
Next
.Protect , True, True, True, True
End With
Next

End Sub
'---------------------------------------


Et si à l'intérieur d'une procédure spéciale, tu désires enlever la
protection au contenu des cellules seulement, tu dois utiliser

quelque chose comme ceci :

'Tous les objets de ta feuille demeureront protégés mais tu pourras
modifier le contenu des cellules de la Feuil1

'------------------------
With Worksheets("Feuil1")
.Unprotect
.Protect , True, False, True, True
End With
'------------------------



Salutations!





"Caroline L." a écrit dans le message de news:
EVJ2e.82288$

Bonjour,

J'ai inséré des boutons (avec macro) et je voudrais que ces boutons soient
protégés MÊME LORSQUE LA PROTECTION DE LA FEUILLE EST ENLEVÉE. Je voudrais
qu'il soit Impossible de déplacer les boutons, de les redimensionner, de
les

supprimer ou de modifier le texte.

Merci beaucoup

Bon printemps à tous !

Caroline





Avatar
Caroline L.
Re-bonjour MichDenis,

Bon, suite à des tests, je ne peux utiliser ce que tu me fourni car j'ai une
autre macro qui à la fermeture d'excel demande de protéger les feuilles
(avec mot de passe) et avec ce que tu me fourni la protection de la feuille
est presque toujours dessus. Donc à la fermeture, excel demande d'ôter la
protection (ce que je ne désire pas) et ensuite demande de protéger les
feuilles.
Par contre, la macro protégait bien les boutons (tel que demandé).

Merci...
...je réfléchie à une autre solution.


Caroline



"MichDenis" a écrit dans le message de news:
#8om$
Bonjour Caroline,

Je débuterais par appliquer cette macro pour la feuille concernée. Comme
tu reproduits des clones, les objets issus de la barre

d'outils formulaire conserveront leur caractéristique !

Et tu adaptes le nom de la feuille.
'------------------------------
Sub ExécuterUnefois()

Dim S As Shape
With Worksheets("Feuil1")
For Each S In .Shapes
If S.Type = msoFormControl Then
With S
.Placement = xlFreeFloating
.Locked = True
.LockAspectRatio = msoFalse
End With
End If
Next
End With
Set S = Nothing

End Sub
'------------------------------


Concernant la macro que tu as déjà dans ta feuille, essaie cette version :

'-------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"), _
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

If ws.ProtectContents Then
ws.Unprotect "1234"
ws.Protect "1234", True, False, True, True
plage.Locked = True
ws.Protect "1234"
Else
ws.Protect "1234", True, False, True, True
plage.Locked = False
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
Else
Range("D9").Select
End If
Application.EnableEvents = True

End If

End Sub
'-------------------------------------------


Salutations!




"Caroline L." a écrit dans le message de news:
uTU2e.3194$

Re-bonjour MichDenis,

voici la macro qui est dans le module de feuille (lorsque la feuille est
"clônée")
On pourrait peut-être seulement ajouter une ligne qui dit de protéger les
objets de cette feuille en même temps que la plage à protéger.


Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"), Range("D47:J47"), Range("D48:J48"))

If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False
Application.EnableEvents = False


If Not Intersect(Target, plage) Is Nothing Then

Else

Range("D9").Select
End If
Application.EnableEvents = True

End If

End Sub


Merci !



"MichDenis" a écrit dans le message de news:

Bonsoir Caroline,

Dans le ThisWorkbook, copie la procédure suivante en adaptant le nom des
feuilles pour lesquelles tu désires appliquer ce type de

protection.

'---------------------------------------
Private Sub Workbook_Open()

Dim Arr As Variant, Elt As Variant
Dim S As Shape

Arr = Array("Feuil1", "Feuil2")

For Each Elt In Arr
With Worksheets(Elt)
For Each S In .Shapes
If S.Type = msoFormControl Then
With S
.Placement = xlFreeFloating
.Locked = True
.LockAspectRatio = msoFalse
End With
End If
Next
.Protect , True, True, True, True
End With
Next

End Sub
'---------------------------------------


Et si à l'intérieur d'une procédure spéciale, tu désires enlever la
protection au contenu des cellules seulement, tu dois utiliser

quelque chose comme ceci :

'Tous les objets de ta feuille demeureront protégés mais tu pourras
modifier le contenu des cellules de la Feuil1

'------------------------
With Worksheets("Feuil1")
.Unprotect
.Protect , True, False, True, True
End With
'------------------------



Salutations!





"Caroline L." a écrit dans le message de news:
EVJ2e.82288$

Bonjour,

J'ai inséré des boutons (avec macro) et je voudrais que ces boutons
soient


protégés MÊME LORSQUE LA PROTECTION DE LA FEUILLE EST ENLEVÉE. Je
voudrais


qu'il soit Impossible de déplacer les boutons, de les redimensionner, de
les

supprimer ou de modifier le texte.

Merci beaucoup

Bon printemps à tous !

Caroline