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

Erreur d'exécution de Macro VBA quand feuille Excel protégée

4 réponses
Avatar
CHRIS
Bijour,

Voici un exemple de macro qui s'ex=E9cute bien s=FBr sans PB=20
quand la feuille n'est pas prot=E9g=E9e.
Si on prot=E8ge la feuille Excelon a alors :

"erreur d'ex=E9cution '1004'
Impossible de d=E9finir la propri=E9t=E9 ColorIndex de la classe=20
Interior."

Je d=E9bute en VBA. :o( Avez vous une explication ?
Cdlt

CHRIS

***************************
Sub test_protection()
'
'les cellules A1:B3 ne sont pas vides et ne sont ni _
verrouill=E9es, ni masqu=E9es
=20
=20
Range("A1:B3").Select
=20
Selection.Font.ColorIndex =3D 6
Selection.Interior.ColorIndex =3D 1
Selection.Font.Bold =3D True
Selection.Font.Size =3D 20
Range("b6").Select
=20
End Sub
*****************************

4 réponses

Avatar
Philippe
Salut,

je pense qu'il suffit juste de déprotéger les cellules (
Range("A1:B3").Unprotect) avant d'exécuter ce code

Philippe.


-----Message d'origine-----
Bijour,

Voici un exemple de macro qui s'exécute bien sûr sans PB
quand la feuille n'est pas protégée.
Si on protège la feuille Excelon a alors :

"erreur d'exécution '1004'
Impossible de définir la propriété ColorIndex de la
classe

Interior."

Je débute en VBA. :o( Avez vous une explication ?
Cdlt

CHRIS

***************************
Sub test_protection()
'
'les cellules A1:B3 ne sont pas vides et ne sont ni _
verrouillées, ni masquées


Range("A1:B3").Select

Selection.Font.ColorIndex = 6
Selection.Interior.ColorIndex = 1
Selection.Font.Bold = True
Selection.Font.Size = 20
Range("b6").Select

End Sub
*****************************
.



Avatar
Hi Philippe,
Non, les cellules ne sont ni vides, ni verrouillées (donc
pas protégées), ni masquées : j'ai fait cela directement
dans la feuille Excel.
Tu peux essayer dans une nouvelle feuille, c'est rapide.
Si j'ajoute la ligne que tu indiques, on a erreur
d'exécution : Unprotect n'est pas pris en compte par
l'objet Range.
En revanche, je pense qu'on est obligé de passer par la
déprotection de la feuille puis exécution des instructions
voulues (!) suivie de la re-protection de la feuille.
A MOINS QUE QUELQU'UN AIT UNE AUTRE IDEE ?

Merci quand même ; ça m'a permis d'apprendre "Unprotect" !
Cdlt
CHRIS

Merci
-----Message d'origine-----
Salut,

je pense qu'il suffit juste de déprotéger les cellules (
Range("A1:B3").Unprotect) avant d'exécuter ce code

Philippe.


-----Message d'origine-----
Bijour,

Voici un exemple de macro qui s'exécute bien sûr sans PB
quand la feuille n'est pas protégée.
Si on protège la feuille Excel on a alors :

"erreur d'exécution '1004'
Impossible de définir la propriété ColorIndex de la
classe

Interior."

Je débute en VBA. :o( Avez vous une explication ?
Cdlt

CHRIS

***************************
Sub test_protection()
'
'les cellules A1:B3 ne sont pas vides et ne sont ni _
verrouillées, ni masquées


Range("A1:B3").Select

Selection.Font.ColorIndex = 6
Selection.Interior.ColorIndex = 1
Selection.Font.Bold = True
Selection.Font.Size = 20
Range("b6").Select

End Sub
*****************************
.

.





Avatar
AV
En revanche, je pense qu'on est obligé de passer par la
déprotection de la feuille puis exécution des instructions
voulues (!) suivie de la re-protection de la feuille.


Pas obligé...
A mettre dans le module de la feuille (ou, en adaptant, dans le ThisWorkbook)

Private Sub Worksheet_Activate()
ActiveSheet.Protect Contents:=True, UserInterfaceOnly:=True
End Sub

AV

Avatar
CHRIS
Ne peux pas tester immédiatement mais merci à AV pour cette réponse.
Have a good nigh
CHRIS