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

verouiller des cellules en fonction d'une couleur

7 réponses
Avatar
Sunburn
Bonjour,
est-il possible, pour tout un classeur, de définir la propriété
"verouillée", uniquement pour certaines cellules, de part leur couleur.
je m'explique, j'ai des cellules "jaunes clair" et "jaune pétant" pour les
cellules de saisie, et "sans couleur de fond" pour les cellules de base de
travail et les formules, "bleu clair" pour les cellules de controle, et "gris
moyen" pour les cellules d'information reprise d'un autre endroit.

Donc dans tout mon classeur, je veux que ne soit pas protéger uniquement les
cellules "jaune clair" et "jaune pétant".

est-il possible de gérer ça par VBA, où dois-je le faire onglet par onglet?

Merci.

YANN

7 réponses

Avatar
JPMonnier
Bonjour Sunburn
pour verouiller les cells de couleur 6 ou 36
1 déja déverrouiller toutes les cellules
puis lancer cette proc
la plage concernée [a1:g15] peut être modifiée

Sub Verrouiller()
For x = 1 To Worksheets.Count
For Each n In Worksheets(x).[a1:g15]
If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
n.Locked = True
End If
Next
Next
End Sub
--
Cordialement


"Sunburn" a écrit dans le message de
news:
Bonjour,
est-il possible, pour tout un classeur, de définir la propriété
"verouillée", uniquement pour certaines cellules, de part leur couleur.
je m'explique, j'ai des cellules "jaunes clair" et "jaune pétant" pour les
cellules de saisie, et "sans couleur de fond" pour les cellules de base de
travail et les formules, "bleu clair" pour les cellules de controle, et
"gris
moyen" pour les cellules d'information reprise d'un autre endroit.

Donc dans tout mon classeur, je veux que ne soit pas protéger uniquement
les
cellules "jaune clair" et "jaune pétant".

est-il possible de gérer ça par VBA, où dois-je le faire onglet par
onglet?

Merci.

YANN


Avatar
Sunburn
Ok, mais comment puis-je savoir le numéro des couleurs, car je veux que mes
cellules jaune clair et jaune pétante soit déverouiller, et toutes les autres
cellules en vérouillée.
Merci.
YANN

"JPMonnier" a écrit :

Bonjour Sunburn
pour verouiller les cells de couleur 6 ou 36
1 déja déverrouiller toutes les cellules
puis lancer cette proc
la plage concernée [a1:g15] peut être modifiée

Sub Verrouiller()
For x = 1 To Worksheets.Count
For Each n In Worksheets(x).[a1:g15]
If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
n.Locked = True
End If
Next
Next
End Sub
--
Cordialement


"Sunburn" a écrit dans le message de
news:
> Bonjour,
> est-il possible, pour tout un classeur, de définir la propriété
> "verouillée", uniquement pour certaines cellules, de part leur couleur.
> je m'explique, j'ai des cellules "jaunes clair" et "jaune pétant" pour les
> cellules de saisie, et "sans couleur de fond" pour les cellules de base de
> travail et les formules, "bleu clair" pour les cellules de controle, et
> "gris
> moyen" pour les cellules d'information reprise d'un autre endroit.
>
> Donc dans tout mon classeur, je veux que ne soit pas protéger uniquement
> les
> cellules "jaune clair" et "jaune pétant".
>
> est-il possible de gérer ça par VBA, où dois-je le faire onglet par
> onglet?
>
> Merci.
>
> YANN




Avatar
Sunburn
j'ai trouvé la palette de couleur
Sub Affiche_couleurs()
For i = 1 To 56
Cells(i, 1).Interior.ColorIndex = i
Next i
End Sub

et jsui bete, je vérouille tout, et je fais "n.locked = false"

Non ???
Je le fais sur chaque page ou ça le fais pour tout le classeur ??
Merci.
Yann

"JPMonnier" a écrit :

Bonjour Sunburn
pour verouiller les cells de couleur 6 ou 36
1 déja déverrouiller toutes les cellules
puis lancer cette proc
la plage concernée [a1:g15] peut être modifiée

Sub Verrouiller()
For x = 1 To Worksheets.Count
For Each n In Worksheets(x).[a1:g15]
If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
n.Locked = True
End If
Next
Next
End Sub
--
Cordialement


"Sunburn" a écrit dans le message de
news:
> Bonjour,
> est-il possible, pour tout un classeur, de définir la propriété
> "verouillée", uniquement pour certaines cellules, de part leur couleur.
> je m'explique, j'ai des cellules "jaunes clair" et "jaune pétant" pour les
> cellules de saisie, et "sans couleur de fond" pour les cellules de base de
> travail et les formules, "bleu clair" pour les cellules de controle, et
> "gris
> moyen" pour les cellules d'information reprise d'un autre endroit.
>
> Donc dans tout mon classeur, je veux que ne soit pas protéger uniquement
> les
> cellules "jaune clair" et "jaune pétant".
>
> est-il possible de gérer ça par VBA, où dois-je le faire onglet par
> onglet?
>
> Merci.
>
> YANN




Avatar
Sunburn
bon, ben, j'ai verouillé toutes mes cellules, puis cette macro :
-----
Sub ProtegerOnglets()
For x = 1 To Worksheets.Count
For Each n In Worksheets(x).[a1:z200]
If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
n.Locked = False
End If
Next
Next
End Sub
-----
mais ça plante "impossible de définitr la propriété lokede de range"
Merci
YANN


"JPMonnier" a écrit :

Bonjour Sunburn
pour verouiller les cells de couleur 6 ou 36
1 déja déverrouiller toutes les cellules
puis lancer cette proc
la plage concernée [a1:g15] peut être modifiée

Sub Verrouiller()
For x = 1 To Worksheets.Count
For Each n In Worksheets(x).[a1:g15]
If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
n.Locked = True
End If
Next
Next
End Sub
--
Cordialement


"Sunburn" a écrit dans le message de
news:
> Bonjour,
> est-il possible, pour tout un classeur, de définir la propriété
> "verouillée", uniquement pour certaines cellules, de part leur couleur.
> je m'explique, j'ai des cellules "jaunes clair" et "jaune pétant" pour les
> cellules de saisie, et "sans couleur de fond" pour les cellules de base de
> travail et les formules, "bleu clair" pour les cellules de controle, et
> "gris
> moyen" pour les cellules d'information reprise d'un autre endroit.
>
> Donc dans tout mon classeur, je veux que ne soit pas protéger uniquement
> les
> cellules "jaune clair" et "jaune pétant".
>
> est-il possible de gérer ça par VBA, où dois-je le faire onglet par
> onglet?
>
> Merci.
>
> YANN




Avatar
JPMonnier
Cette proc fonctionne à condition que la feuille ne soit pas verrouillé
A mon avis ta feuille est protégée modifie comme ceci
Sub ProtegerOnglets()
For x = 1 To Worksheets.Count
Sheets(x).Unprotect
For Each n In Worksheets(x).[a1:z200]
If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
n.Locked = False
End If
Next
Sheets(x).Protect
Next
End Sub
--
Cordialement

"Sunburn" a écrit dans le message de
news:
bon, ben, j'ai verouillé toutes mes cellules, puis cette macro :
-----
Sub ProtegerOnglets()
For x = 1 To Worksheets.Count
For Each n In Worksheets(x).[a1:z200]
If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
n.Locked = False
End If
Next
Next
End Sub
-----
mais ça plante "impossible de définitr la propriété lokede de range"
Merci
YANN


"JPMonnier" a écrit :

Bonjour Sunburn
pour verouiller les cells de couleur 6 ou 36
1 déja déverrouiller toutes les cellules
puis lancer cette proc
la plage concernée [a1:g15] peut être modifiée

Sub Verrouiller()
For x = 1 To Worksheets.Count
For Each n In Worksheets(x).[a1:g15]
If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
n.Locked = True
End If
Next
Next
End Sub
--
Cordialement


"Sunburn" a écrit dans le message de
news:
> Bonjour,
> est-il possible, pour tout un classeur, de définir la propriété
> "verouillée", uniquement pour certaines cellules, de part leur couleur.
> je m'explique, j'ai des cellules "jaunes clair" et "jaune pétant" pour
> les
> cellules de saisie, et "sans couleur de fond" pour les cellules de base
> de
> travail et les formules, "bleu clair" pour les cellules de controle, et
> "gris
> moyen" pour les cellules d'information reprise d'un autre endroit.
>
> Donc dans tout mon classeur, je veux que ne soit pas protéger
> uniquement
> les
> cellules "jaune clair" et "jaune pétant".
>
> est-il possible de gérer ça par VBA, où dois-je le faire onglet par
> onglet?
>
> Merci.
>
> YANN






Avatar
Sunburn
non, ce n'est pas ça, il bloque à "n.Locked = False"
ben, c'est seulement parce que j'ai beaucoup de cellules, et c'est pour être
sur de rien avoir oublié de verrouiller, sinon ça fait beaucoup de boulot de
vérifier 90 onglets.
ou alors, je peux tout "déprotéger", et utiliser ta procédure du début en
mettant les couleurs autres que 6 et 36, soit 15 pour le gris, et 20 pour le
bleu clair, mais combien pour le "transparent", là où y'a rien ?
merci.
YANN

"JPMonnier" a écrit :

Cette proc fonctionne à condition que la feuille ne soit pas verrouillé
A mon avis ta feuille est protégée modifie comme ceci
Sub ProtegerOnglets()
For x = 1 To Worksheets.Count
Sheets(x).Unprotect
For Each n In Worksheets(x).[a1:z200]
If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
n.Locked = False
End If
Next
Sheets(x).Protect
Next
End Sub
--
Cordialement

"Sunburn" a écrit dans le message de
news:
> bon, ben, j'ai verouillé toutes mes cellules, puis cette macro :
> -----
> Sub ProtegerOnglets()
> For x = 1 To Worksheets.Count
> For Each n In Worksheets(x).[a1:z200]
> If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
> n.Locked = False
> End If
> Next
> Next
> End Sub
> -----
> mais ça plante "impossible de définitr la propriété lokede de range"
> Merci
> YANN
>
>
> "JPMonnier" a écrit :
>
>> Bonjour Sunburn
>> pour verouiller les cells de couleur 6 ou 36
>> 1 déja déverrouiller toutes les cellules
>> puis lancer cette proc
>> la plage concernée [a1:g15] peut être modifiée
>>
>> Sub Verrouiller()
>> For x = 1 To Worksheets.Count
>> For Each n In Worksheets(x).[a1:g15]
>> If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
>> n.Locked = True
>> End If
>> Next
>> Next
>> End Sub
>> --
>> Cordialement
>>
>>
>> "Sunburn" a écrit dans le message de
>> news:
>> > Bonjour,
>> > est-il possible, pour tout un classeur, de définir la propriété
>> > "verouillée", uniquement pour certaines cellules, de part leur couleur.
>> > je m'explique, j'ai des cellules "jaunes clair" et "jaune pétant" pour
>> > les
>> > cellules de saisie, et "sans couleur de fond" pour les cellules de base
>> > de
>> > travail et les formules, "bleu clair" pour les cellules de controle, et
>> > "gris
>> > moyen" pour les cellules d'information reprise d'un autre endroit.
>> >
>> > Donc dans tout mon classeur, je veux que ne soit pas protéger
>> > uniquement
>> > les
>> > cellules "jaune clair" et "jaune pétant".
>> >
>> > est-il possible de gérer ça par VBA, où dois-je le faire onglet par
>> > onglet?
>> >
>> > Merci.
>> >
>> > YANN
>>
>>




Avatar
JPMonnier
Salut Sunburn
Si ça bloque sur une cellule, ajoute ce message
MsgBox Sheets(x).Name & " " & n.Address
avant la ligne n.Locked = False
qui te donneras ou ça bloque
et controle la cellule concernée
Si tu as Option Explicit en début de module, ajoute
Dim x as Integer
Dim n as Range
--
Cordialement



n.Locked = False
"Sunburn" a écrit dans le message de
news:
non, ce n'est pas ça, il bloque à "n.Locked = False"
ben, c'est seulement parce que j'ai beaucoup de cellules, et c'est pour
être
sur de rien avoir oublié de verrouiller, sinon ça fait beaucoup de boulot
de
vérifier 90 onglets.
ou alors, je peux tout "déprotéger", et utiliser ta procédure du début en
mettant les couleurs autres que 6 et 36, soit 15 pour le gris, et 20 pour
le
bleu clair, mais combien pour le "transparent", là où y'a rien ?
merci.
YANN

"JPMonnier" a écrit :

Cette proc fonctionne à condition que la feuille ne soit pas verrouillé
A mon avis ta feuille est protégée modifie comme ceci
Sub ProtegerOnglets()
For x = 1 To Worksheets.Count
Sheets(x).Unprotect
For Each n In Worksheets(x).[a1:z200]
If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
n.Locked = False
End If
Next
Sheets(x).Protect
Next
End Sub
--
Cordialement

"Sunburn" a écrit dans le message de
news:
> bon, ben, j'ai verouillé toutes mes cellules, puis cette macro :
> -----
> Sub ProtegerOnglets()
> For x = 1 To Worksheets.Count
> For Each n In Worksheets(x).[a1:z200]
> If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
> n.Locked = False
> End If
> Next
> Next
> End Sub
> -----
> mais ça plante "impossible de définitr la propriété lokede de range"
> Merci
> YANN
>
>
> "JPMonnier" a écrit :
>
>> Bonjour Sunburn
>> pour verouiller les cells de couleur 6 ou 36
>> 1 déja déverrouiller toutes les cellules
>> puis lancer cette proc
>> la plage concernée [a1:g15] peut être modifiée
>>
>> Sub Verrouiller()
>> For x = 1 To Worksheets.Count
>> For Each n In Worksheets(x).[a1:g15]
>> If n.Interior.ColorIndex = 6 Or n.Interior.ColorIndex = 36 Then
>> n.Locked = True
>> End If
>> Next
>> Next
>> End Sub
>> --
>> Cordialement
>>
>>
>> "Sunburn" a écrit dans le message
>> de
>> news:
>> > Bonjour,
>> > est-il possible, pour tout un classeur, de définir la propriété
>> > "verouillée", uniquement pour certaines cellules, de part leur
>> > couleur.
>> > je m'explique, j'ai des cellules "jaunes clair" et "jaune pétant"
>> > pour
>> > les
>> > cellules de saisie, et "sans couleur de fond" pour les cellules de
>> > base
>> > de
>> > travail et les formules, "bleu clair" pour les cellules de controle,
>> > et
>> > "gris
>> > moyen" pour les cellules d'information reprise d'un autre endroit.
>> >
>> > Donc dans tout mon classeur, je veux que ne soit pas protéger
>> > uniquement
>> > les
>> > cellules "jaune clair" et "jaune pétant".
>> >
>> > est-il possible de gérer ça par VBA, où dois-je le faire onglet par
>> > onglet?
>> >
>> > Merci.
>> >
>> > YANN
>>
>>