Déverrouillage/Verrouillage cellules spécifique

Y compris Power BI, Power Query et toute autre question en lien avec Excel
r
rochual
Jeune membre
Jeune membre
Messages : 16
Inscrit le : 8 septembre 2017
Version d'Excel : 2010

Message par rochual » 8 septembre 2017, 12:10

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
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 8 septembre 2017, 13:06

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.
r
rochual
Jeune membre
Jeune membre
Messages : 16
Inscrit le : 8 septembre 2017
Version d'Excel : 2010

Message par rochual » 8 septembre 2017, 13:19

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
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 8 septembre 2017, 13:22

Là c'est que ton mot de passe n'est pas le bon ! :D
r
rochual
Jeune membre
Jeune membre
Messages : 16
Inscrit le : 8 septembre 2017
Version d'Excel : 2010

Message par rochual » 8 septembre 2017, 13:44

Le mot de passe est bon, quand il n'est pas bon rien de se passe dalon ;)
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 8 septembre 2017, 14:03

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... :D
Mais la modification de la propriété ne peut intervenir que si la feuille est déprotégée...
r
rochual
Jeune membre
Jeune membre
Messages : 16
Inscrit le : 8 septembre 2017
Version d'Excel : 2010

Message par rochual » 8 septembre 2017, 14:39

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"
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 8 septembre 2017, 14:48

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 ?
r
rochual
Jeune membre
Jeune membre
Messages : 16
Inscrit le : 8 septembre 2017
Version d'Excel : 2010

Message par rochual » 8 septembre 2017, 15:27

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é ;)
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 8 septembre 2017, 21:05

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...
rochual_Test.xlsm
(22.58 Kio) Téléchargé 8 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message