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.