Verouiller deverouiller cellule Excel VBA

Bonjour,

Voilà mes deux macros une pour verrouiller une plage de cellule

L’autre pour déverrouiller. Le problème est que quand j’exécute la macro déverrouiller elle me déverrouille toute la feuille j’aimerais qu’elle me déverrouille que la plage sélectionné.

Et quand je veux exécuter la macro verrouiller de nouveau, il faut que je recoche la casse verrouillé dans format cellule, protection pour que ça marche.

Si je pouvais avoir un coup de main merci.

Sub Verouillage()
    Sheets("Feuil1").Select
    ActiveSheet.Unprotect
    Range("B1:F1,B2:F2").Select
    Range("B7").Activate
    Selection.Locked = True
    Selection.FormulaHidden = False
    ActiveSheet.Protect Password:="0000", DrawingObjects:=True, Contents:=True, Scenarios:=True
    Range("A1").Select

End Sub

Sub Deverouillage()
    Sheets("Feuil1").Visible = True
    Sheets("Feuil1").Select
    ActiveSheet.Unprotect
    Range("B1:F1").Select
    Cells.Select
    Selection.Locked = False
    Selection.FormulaHidden = False
   'Sheets("EnterData" ).Visible = False
End Sub

Bonsoir Pat Balotelli, bonsoir le forum,

Verrouiller/Déverrouiller nécessite deux actions bien distinctes :

Définir la plage des cellules qui seront verrouillées si l'onglet est protégé ou quand l'onglet est protégé

Protéger / Déprotéger l'onglet

Pour la première, tu n'as pas besoin de spécifier la plage dans la code . Tu fais ça directement dans l'onglet. Par défaut, toutes les cellules sont verrouillées (Locked). Tu sélectionnes la plage que tu veux rendre accessible et tu la déverrouilles par le menu Format/Cellule onglet Protection.

Le code ensuite sera juste :

Sheets("Feuil1").Protect Password:="0000" pour verrouiller

et

Sheets("Feuil1").Unprotect Password:="0000" pour déverrouiller

je dois spécifier la plage pour la partie déverrouiller ?

Bonjour,

C'est à toi de déverrouiller les cellules qui doivent être accessibles lorsque la feuille est protégée.

Tu sélectionnes la plage visée : clic droit > Format de cellule > Propriétés > tu décoches Verrouillé.

Tu peux ensuite protéger la feuille et on pourra continuer à saisir dans les cellules déverrouillées.

Cordialement.

voila mon fichier que j'ai commencé si vous pouvez jeter un coup d'œil. quand j'appuie sur le bouton déverrouiller toute les autres ligne ce déverrouille si j'ai plusieurs ligne de verrouillé. j'aimerais pouvoir déverrouillez juste celle que je veux mais pas toutes

Si je comprends bien, tu veux déverrouiller/verrouiller sélectivement... C'est un peu se compliquer la vie, mais c'est naturellement faisable...

Quelques remarques préalables :

1) Tes procédures dans un module de feuille sont mal placées. Elles ne justifient pas d'être insérées dans un tel module spécifique. Il convient donc de les déplacer dans un module standard.

2) VBA n'a aucun besoin de sélectionner pour agir. Tout code bâti avec une flopée de Select est par définition du mauvais code VBA. Il est plus qu'utile de l'expurger...

3) Pour protéger/déprotéger, il faut deux procédures en tout et pour tout (bien qu'une seule alternant protection/déprotection pourrait suffire). Ton problème étant de déverrouiller, il te faut tout de même avoir les procédures de protection/déprotection, qui seront utilisées par la procédure de déverrouillage.

4) Dans la mesure où ton déverrouillage est sélectif et changeant, une procédure de verrouillage global est nécessaire (pour partir d'une situation où tout est verrouillé, également sans doute pour rétablir un verrouillage global à l'ouverture). La procédure de déverrouillage commencera par tout verrouiller avant de procéder au déverrouillage sélectif.

5) Une seule procédure de déverrouillage doit suffire : elle doit pouvoir se baser sur la sélection pour identifier la zone à déverrouiller (NB- là ce n'est pas VBA qui sélectionne mais l'utilisateur, pour fournir une indication utile à VBA). Il convient donc de définir des zones dont chacune doit être déverrouillée indépendamment des autres, identifiables par VBA...)

En résumé :

  • définir les zones à déverrouiller (lorsqu'une d'entre elles est déverrouillée, les autres doivent être verrouillées),
  • quatre procédures dans un module standard : Protéger, Déprotéger, Verrouiller (utilise Déprotéger et Protéger), Déverrouiller (utilise Déprotéger, Verrouiller et Protéger),
  • une procédure Workbook_Open qui lance Verrouiller à l'ouverture.

Cordialement.

Rechercher des sujets similaires à "verouiller deverouiller vba"