Modification partielle d'un document protégé

Fermé
Tif76 Messages postés 3 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 11 février 2015 - 15 janv. 2015 à 22:21
Tif76 Messages postés 3 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 11 février 2015 - 11 févr. 2015 à 21:01
Bonjour,

Voici ma première question sur ce site, et j'espère y trouver réponse :-)

Je cherche depuis un petit moment la possibilité de modifier le format d'une cellule Excel 2007 même après avoir protégé le document.

Je m'explique,

J'ai créé plusieurs documents, dont j'ai déverrouillé des cellules pour permettre l'écriture aux différents utilisateurs. J'ai protégé le document en cochant seulement dans "Autoriser tous les utilisateurs de cette feuille à"

- sélectionner les cellules verrouillés
- sélectionner les cellules déverrouillés

Je n'ai pas permis la modifications du format de cellule pour le document.

Mais j'ai une cellule ou je souhaite que le format cellule (Gras, couleur etc.) puisse être déverrouillé uniquement pour elle.

Quelqu'un aurait il une solution qui puisse m'aider s'il vous plaît?

Je vous remercie pour vos différentes réponses

4 réponses

via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
15 janv. 2015 à 22:53
Bonsoir

Essaie une macro de ce type qui déprotége la feuille lorsqu'on selectionne la cellule B3 mais la reprotège lorsqu'on sélectionne toute autre cellule :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Protect
' si cellule cible est celle en ligne 3 et colonne 2 deprotection (à adapter)
If Target.Row = 3 And Target.Column = 2 Then
ActiveSheet.Unprotect
End If
End Sub


ou si tu as protégé la feuille avec un mot de passe :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Protect ("ton mot de passe")
If Target.Row = 3 And Target.Column = 2 Then  
ActiveSheet.Unprotect ("ton mot de passe")
End If
End Sub


ALT+F11 pour ouvrir l'editeur VBA, selectionner la feuille concernée dans l'arborescence, copier et coller la macro dans la page blanche puis fermer l'éditeur

Cdlmnt

0
Hillian Fellers Messages postés 79 Date d'inscription mardi 22 octobre 2013 Statut Membre Dernière intervention 24 mai 2022 12
15 janv. 2015 à 22:55
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 15/01/2015 à 23:31
Bonjour à tous,

Si c'est pour ôter la protection à la sélection de la cellule autant ne pas la protéger non ? ;-)

Autre proposition qui te restaure le contenu (valeur ou formule) en cas de saisie dans la plage désignée (A2:B2 dans l'exemple)
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    For Each c In Target
        If Not Intersect(c, [A2:B2]) Is Nothing Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
            Exit Sub
        End If
    Next c
End Sub

Les cellules doivent être non protégées pour permettre les mises en forme.
https://www.cjoint.com/c/EApxMYSbMcs

eric

PS : tu peux ajouter un message d'alerte juste avant le Exit Sub
Msgbox "Opération interdite, annulée"

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703
Modifié par via55 le 15/01/2015 à 23:57
Bonsoir Eric

Si c'est pour ôter la protection à la sélection de la cellule autant ne pas la protéger non ? ;-)
Oui mais le cas proposé est un peu plus complexe :
- la feuille est protégée en laissant la possibilité de ne rentrer des données que dans les cellules non verrouillées
- certaines cellules sont non verrouillées
- et dans une seule d'entre elle il doit être possible de modifier en plus la mise en forme

Donc la feuille doit bien être protégée pour ne laisser accès qu'aux cellules déverrouillées en ne permettant cependant pas de mise en forme dans celles-ci et en même temps il faut déprotéger à un moment la feuille pour permettre de changer le format de la seule cellule dans laquelle cela est permis, d'où ma macro !

Si tu vois une autre solution ?

Bien cdlmnt
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 16/01/2015 à 00:32
Oui mais si tu déprotèges ça ne sert à plus rien de protéger cette cellule puisqu'on peut y faire ce qu'on veut, y compris supprimer son contenu.

Si tu vois une autre solution ?
Voir ma proposition au-dessus. Le contenu est protégé et on peut changer les mises en formes.
Mais c'est vrai que j'ai oublié la partie déprotection de la feuille pour ces cellules.
Il faut ajouter :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim pl As Range
Set pl = Intersect(Target, [A2:B2])
If pl Is Nothing Then ActiveSheet.Protect: Exit Sub
If pl.Address = Target.Address Then
'si la plage sélectionnée est intégralement contenue dans la plage aux mises en forme autorisées
ActiveSheet.Unprotect
Else
ActiveSheet.Protect
End If
End Sub

Le fichier modifié : https://www.cjoint.com/c/EAqaKmcTk3b
J'ai l'impression que c'est bon dans tous les cas de figure.
J'ai prévu plusieurs cellules au cas où. Si c'est vraiment qu'une seule cellule concenée on peut simplifier. Mais qui peut le plus peut le moins comme on dit
eric
0
via55 Messages postés 14405 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 25 avril 2024 2 703 > eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024
16 janv. 2015 à 00:30
Ah tu as compris qu'il fallait protéger le contenu ?
Je n'avais pas compris dans ce sens vu qu'il était dit : J'ai créé plusieurs documents, dont j'ai déverrouillé des cellules pour permettre l'écriture aux différents utilisateurs
Attendons de voir ce qu'en dit le demandeur lorsqu'il se manifestera
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
16 janv. 2015 à 00:38
Ben oui j'ai supposé ça.
S'il n'y a rien à protéger pourquoi on en parlerait ? Il suffit de la déverrouiller ;-)
0
Tif76 Messages postés 3 Date d'inscription jeudi 15 janvier 2015 Statut Membre Dernière intervention 11 février 2015
11 févr. 2015 à 21:01
J'ai bien pris vos différents commentaires et vous remercie pour vos réponses.

Oui je sais que le plus facile de ne pas bloquer la feuille mais j'ai pas le choix malheureusement.

J'ai trouvé une solution plus simple, l'installation d'une zone de texte avec le texte déverrouillé dans ses propriétés. Elle me permet de bloquer totalement ma feuille Excel et permet aux utilisateurs de modifier le format du texte dans cette unique zone.

Merci pour vos différents postes
0