Protéger cellules

Bonjour!

J’aimerais sur le document suivant, sur la feuille "Résultats", bloquer toutes les cellules sauf la plage J7 à O10, mais, quand je fais cela, cette partie du code rentre en erreur:

For Each Cell In Range("J7:O10")
If Cell.Value = "" Then    'Enleve la couleur des cellules vides
Cell.Interior.Color = xlColorIndexNone
End If
Next Cell

Je ne comprend pas pourquoi, puisque cela ne concerne que la plage qui n'est pas vérouillée

Bonjour

Il n'y a pas de raison que cela ne fonctionne pas... Est tu sur que les cellules dans lesquelles tu veux retirer les couleurs ne sont pas protégées ? Clique sur l'image (elle est animée) pour vérifié ça

protect

Oui c'est bien ce que j'ai fait, j'ai déverrouillé la plage mais le code se met toujours en erreur, j'ai mis le document sur mon premier message si tu veux regarder

Pour faire la même chose en VBA utilise le code ci-dessous :

With Sheets("Nom de la feuille") 'Le nom de la feuille sur laquelle effectuée l'opération
.Unprotect "Le mot de passe de la feuille" 'Retire le mot de passe de la feuille
.Range("J7:O10").Locked = False 'Retire la "protection" de la plage (elles ne sont donc plus bloquées une _
fois la protection de la feuille remise)

'----Ton code

Sheets("Nom de la feuille").Protect "Le mot de passe de la feuille" 'Remettre le mot de passe pour vérouiller la feuille
End With

Je comprend pas bien ou mettre cela, et le fait que ce soit une macro qui verrouille la feuille ce n'est pas plus lourd que si c’était directement fait par l'onglet révision?

Perso de mon coté ça marche

(Avec le code d'origine du fichier)

EDIT : j'ai fait le test sur la mauvaise feuille, je revient vite !

protect2

Oui mais tu es sur la feuille "Demandes" alors que je veux le faire sur la feuille "Résultats"

Oui j'ai remarqué ^^ Alors c'est tout bête

Effectivement du retire bien la protection de ta plage de cellule mais ça ne suffis pas ! Quand tu protèges ta feuille tu sélectionne bien la case "Sélectionner les cellules déverrouillées". Cependant le code VBA lui à besoins de pouvoir modifier la mise en forme des cellules (entre autre, les couleurs ) . Donc au moment de la protection tu n'a qu'à juste coché la ligne "Format de cellule"

Oui tu as raison! Plus de problème avec cette partie de code! Merci! Seulement une dernière chose, je ne peuxc plus effacer les colonnes avec les boutons en dessous, tu sais pourquoi?

EDIT: AH non c'est bon j'ai compris

Merci encore de ton aide!

Par ce que tu as retiré la protection des cellules de J7 à O10. Cepedant quand tu veux par exemple effacer la colonne 240 le code lui veux effacer les cellules de K7 à K30, il y à donc des cellules qui se trouve dans une plage qui n'est pas autorisé à modifier !

Oui c'est une erreur bête ça, je l'ai vu tout de suite après avoir envoyé

Okey, bonne continuation

Re! Pour la feuille "Demande" j'ai également un problème, je veux bloquer les lignes 1,2,3 et laisser les autres déverrouillées, mais comme à chaque demande de mesure je fais "Insérer une ligne row(4)", la nouvelle ligne 4 a les propriétés de la ligne 3 c'est à dire qu'elle est verrouillée...

Heuuu moi ça marche

Ce que j'ai fait :

  • Je sélectionne les lignes 1, 2 et 3
  • Clic droit, Format Cellule et j'active la protection
  • Je sélectionne toutes les autres lignes et là je retire la protection
  • Je protège la feuille en cochant au préalable les options "Sélectionner les cellules déverrouillées" et "Insérer des lignes"
  • Je valide, je teste et ça marche

C'est exactement ce que je fais, mais si tu essaie de demander une mesure avec le bouton en haut à gauche tu verra que ça se met en erreur

Effectivement je vais un peu trop vite, j'ai juste testé intersession de ligne mais c'est après que ça merdouille, je regarde ça

En faite je ne pense pas que excel prenne le format de la ligne 3 quand il insère une ligne à la ligne 4. C'est juste que par défaut quand on insère une ligne le paramètre de protection est coché ! Il faut donc trouver le paramètre à codé en VBA pour que se sois OK !

Ah oui je comprend ce que tu veux dire, après l'insertion , je met:

Row(4).Locked = False

 Row(4).Locked = False 

J'ai essayé mais c'est déjà trop tard, dès que tu insères une ligne le parametre de protection sera coché donc même si la ligne d'apres tu me Locked=false il ne pourra pas étant donné que la ligne est protégée.

Sinon tu met ça comme ça :

Sheets("Demande").Unprotect "Ton mdp"
Sheets("Demande").Rows(4).Insert
Sheets("Demande").Rows(4).Locked = False
Sheets("Demande").Protect "Ton mdp"
Rechercher des sujets similaires à "proteger"