Verrouillage et insertion de nouvelles cellules

  • Initiateur de la discussion Carole
  • Date de début
C

Carole

Guest
Bonjour à tous,

Voici ma question:
J'ai protégé ma feuille de calcul, du moins ai je verrouillé toutes mes cellules critiques.
Le probleme, c est que si un utilisateur desire l'utiliser, je ne veux pas qu'il puisse modifier mes formules (c est pour ça qu elles sont verrouillées), mais je veux qu il puisse insérer des cellules et faire des copier coller de ces formules. Est ce possible? Et si oui, comment?

Merci d'avance et bonne fin d'aprem'

Carole
 
R

Robert

Guest
Salut Carole, salut le forum,

Je te propose une solution qui utilise Visual Basic pour Application. Si tu en as déjà fait pas de problème sinon ça va te paraître "Barbare" (pour reprendre une expression qui passe bien dans ce forum !).

Dans l'exemple en pièce jointe les zones oranges sont celles que l'utilisateur peut modifier (cellules non verrouillés) alors que le reste en jaune est verrouillé.

Les codes utilisent le déplacement du curseur. Si le curseur est dans une zone orange le classeur est déprotégé sinon il est protégé. Ils permettent aussi un copier coller des cellules protégées.

Il faudrait que tu copie/colle ces codes dans ton fichier. Au cas où tu ne saurais pas comment procéder voici un moyen:

Ouvre ton fichier, active la feuille pour laquelle tu voudrais qu'ils agissent (si tu les veux sur plusieurs feuilles il faudra les coller à chaque fois dans chacune d'entre elles). Clique avec le bouton droit dans l'onglet ce cette feuille et choisi l'option [Visualiser le code]. Copie les deux procédures ci-dessous et colle-les dans le grand cadre blanc sur ta droite.

'Début du code
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque modification
Application.CutCopyMode = False 'vide le presse-papier
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'à chaque déplacement
If Target.Locked = False Then 'si la cellule active n'est pas verrouillée
If Application.CutCopyMode = xlCopy Then 'si un 'Edition/Copier ou Ctrl+c a été fait
Exit Sub 'rien ne se passe (classeur déprotégé)
End If
Unprotect 'déprotège le classeur
Else 'sinon (la cellule active est verrouillée)
If Application.CutCopyMode = xlCopy Then 'si un 'Edition/Copier ou Ctrl+c a été fait
Exit Sub 'rien ne se passe (classeur déprotégé)
End If
Protect 'protège le classeur
End If
End Sub
'fin du code

'Bonne chance,

'À plus,

'Robert
 

Pièces jointes

  • protection.zip
    8.3 KB · Affichages: 22
  • protection.zip
    8.3 KB · Affichages: 19
  • protection.zip
    8.3 KB · Affichages: 23

Discussions similaires

Réponses
3
Affichages
199