Déverrouillage/Verrouillage cellules spécifique

Bonjour à tous,

Après plusieurs recherches, je pose mon soucis ici;

J'ai un classeur excel de plusieurs feuilles.

Pour protéger mes formules, macros etc... j'ai verrouiller une grande partie des cellules des feuilles.

Ce classeur sera complété par plusieurs personnes. Il sera tout d'abord complété par une personne qui remplira des cellules des deux premières feuilles et ces infos seront importantes par la suite et ne doivent pas être modifiées.

Je souhaite donc pouvoir protéger l'ensemble des cellules des deux premières feuilles et déverrouiller juste les cellules qui doivent être complétés par la première personne puis qu'elle puissent les verrouiller de nouveau.

J'ai donc penser verrouiller l'ensemble de deux pages concernés, mettre un Commandbutton pour déverrouiller les cellules qui doivent être déverrouiller et un autre pour reverrouiller. J'ai essayé avec des macro de ce type

1/ Déverouillage des cellules :

If Inputbox("Mot de passe pour compléter la fiche") = "MDP2"

Worksheets("feuil1").Unprotect ("MDP1")

Range("J2").Locked = False

Worksheets("feuil1").Protect ("MDP1")

End if

2/ Verouillage des cellules :

Worksheets("feuil1").Unprotect ("MDP1")

Range("J2").Locked = True

Worksheets("feuil1").Protect ("MDP1")

End if

Mais quand j'exécute la macro, une erreur apparait "Impossible de définir la propriété Locked de la classe Range.

Avez-vous une idée pour mon souci,

Merci d'avance

Bonjour,

Il manque un Then, et Range n'est pas qualifié...

Combinaison du déverrouillage/verrouillage dans une même macro :

Sub DéverrouillerVerrouiller()
    With Worksheets("Feuil1")
        If .Range("J2").Locked Then
            If InputBox("Mot de passe pour compléter la fiche") <> "MDP2" Then Exit Sub
        End If
        .Unprotect "MDP1"
        With .Range("J2")
            .Locked = Not .Locked
        End With
        .Protect "MDP1"
    End With
End Sub

Cordialement.

Merci pour la réponse.

J'avais oublié de mettre Then quand j'ai recopier ma macro car j'avais essayer de nombreuse chose.

J'ai essayé ta solution mais j'ai encore le même message d'erreur... :/

Cdt

Là c'est que ton mot de passe n'est pas le bon !

Le mot de passe est bon, quand il n'est pas bon rien de se passe dalon

Je parle de MDP1 ! C'est le seul élément qui peut jouer !

J'ai retesté le code après ton message et il fonctionne dans toutes les conditions...

Mais la modification de la propriété ne peut intervenir que si la feuille est déprotégée...

Le mot de passe est bon.

De toute façon le message d'erreur : "Impossible de définir la propriété Locked de la classe Range" rien sur le mot de passe ou autre.

Après je l'ai mis direct dans la macro d'un bouton, peut être qu'il faut faire une macro et l'appeler avec le bouton?

Merci en tout cas !


J'ai réessayer avec une macro toujours pareil.

Quand je clique sur debogage sur le message d'erreur, la ligne surligner en jaune est :

".Locked = Not .Locked"

Le message "Impossible de définir la propriété Locked de la classe Range" indique qu'un élément ne permet pas de définir la propriété.

Si la feuille Feuil1 (nommée ainsi !) existe, la cellule J2 elle existe à coup sûr dans la feuille, rien n'empêche d'accéder à la propriété, sauf si la feuille reste protégée ! On la déprotège, avec le mot de passe : "MDP1" (majuscules !), si elle ne se déprotège pas, c'est que le mot de passe est inexact ! C'est le seul élément non assuré.

As-tu au moins essayé de déprotéger manuellement pour vérifier le mot de passe ? (je rappelle qu'il s'agit de "MDP1" et non "mdp1").

Après je l'ai mis direct dans la macro d'un bouton

Cela veut dire quoi ?

Dans ce que j'ai posté j'avais mis MDP1 pour l'exemple en réalité il s'agit de mon nom, donc peut d'erreur possible.

J'ai tout de même supprimer le mot de passe et ai donc mit "" au lieu de "MDP1" dans la macro pour assurer le coup et toujours pareil.

J'ai également essayer de mettre un mot de passe différent de celui qui se trouve dans la macro et là, le message d'erreur est "Mot de passe non valide..."

Le soucis ne viendrait pas de "If .Range("J2").Locked Then"?

Je ne comprends vraiment ce qui cloche.

La macro que j'avais essayer avant de poster mon soucis ici était très proche de ce que tu m'as donné et j'avais le même soucis mais tu m'as dit que Range n'était pas qualifié. C'est à dire? Par rapport à la feuille de travail?

Pour "Après je l'ai mis direct dans la macro d'un bouton" c'est que j'ai mis la macro dans "Sub Commandbutton1_click()" et non pas dans une macro spéciale qui serait appelée ensuite. Mais j'ai essayer est ça ne marche pas.

Peux-tu m'envoyer le fichier excel sur lequel tu as essayer cette macro?

Nartrouvé

Bonsoir,

Peux-tu m'envoyer le fichier excel sur lequel tu as essayer cette macro?

Pas enregistré, mais c'est vite reconstitué...

Tu peux utiliser le bouton Feuil1 ou celui Feuil2, la macro est affectée au 2, usage indifférent de l'un ou l'autre...

15rochual-test.xlsm (22.58 Ko)

Bonjour

Merci mais de mon côté ça ne marche toujours pas.

J'ai testé le tien ça marche, j'ai copié-collé, utilisé une commande de formulaire et un module comme tu l'avais fait mais sur mon fichier toujours pareil. J'ai du loupé un truc mais je ne vois pas quoi!

En tout cas merci, je vais chercher ce qui cloche!

Edit : J'ai essayé sur un nouveau fichier excel et ça marche ! Ca vient du fichier sur lequel je travaille

Edit2 : Sur mon fichier la case était fusionnée avec la case K2... voila pourquoi ça ne marché pas! Erreur de débutant! Ma macro marché depuis le début...

Dans ce que tu m'as donné tu utilise tout le temps la fonction With. Quelle et l'avantage de cette fonction? Juste alléger la macro en éciture?

L'instruction With permet en effet d'alléger l'écriture, mais surtout de rendre l'exécution plus rapide : VBA met en mémoire la référence d'objet visé et y accède directement, et sans doute plus rapidement même qu'à une variable (With est d'ailleurs aussi utilisable avec des variables, mais permet aussi souvent d'en faire l'économie...) Dès lors que l'on a un accès qui se répète à un objet, j'en conseille volontiers l'utilisation systématique...

Cordialement.

Rechercher des sujets similaires à "deverrouillage verrouillage specifique"