Verrouillage automatique après saisie
Résolu/Fermé
JN
-
6 sept. 2012 à 18:45
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 8 sept. 2012 à 16:31
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 8 sept. 2012 à 16:31
A voir également:
- Verrouillage automatique après saisie
- Verrouillage clavier - Guide
- Code de verrouillage oublié - Guide
- Message automatique thunderbird - Guide
- Réponse automatique outlook - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
2 réponses
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 209
Modifié par eriiic le 6/09/2012 à 19:48
Modifié par eriiic le 6/09/2012 à 19:48
Bonsoir,
une proposition en vba :
Mettre un x en A1 pour activer la protection générale. Le supprimer pour ôter la protection de la feuille et permettre toutes les modifications (formats, etc) sans être embêté par la protection.
Un x en colonne A verrouille 10 cellules sur la ligne (adapter le 10 dans le code) si A1 n'est pas vide.
Déverrouiller toutes les cellules au départ.
exemple : https://www.cjoint.com/?BIgtUSPpQJF
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
une proposition en vba :
Private Sub Worksheet_Change(ByVal Target As Range) 'activation protection générale If Target = [A1] And [A1] = "" Then ActiveSheet.Unprotect ' protection des lignes If Target.Column = 1 And Target.Row > 1 Then ActiveSheet.Unprotect If LCase(Target) = "x" Then Target.Offset(0, 1).Resize(1, 10).Locked = True Else Target.Offset(0, 1).Resize(1, 10).Locked = False End If End If If [A1] = "x" Then ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
Mettre un x en A1 pour activer la protection générale. Le supprimer pour ôter la protection de la feuille et permettre toutes les modifications (formats, etc) sans être embêté par la protection.
Un x en colonne A verrouille 10 cellules sur la ligne (adapter le 10 dans le code) si A1 n'est pas vide.
Déverrouiller toutes les cellules au départ.
exemple : https://www.cjoint.com/?BIgtUSPpQJF
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Dsl mais même l'exemple que vous m'avez mis en pièce jointe ne fonctionne pas...
Je voudrais que si je mets un "x" dans la case A2, toutes les cellules la ligne 2 soit bloquées (non modifiable) et que si je décoche la cellule A2 les cellules de la ligne 2 redeviennent modifable.
(si je mets le x en A3, ce sera pareil mais uniquement pour la ligne 3; et ainsi de suite...)
Encore merci pour le temps consacré à me répondre...
Je voudrais que si je mets un "x" dans la case A2, toutes les cellules la ligne 2 soit bloquées (non modifiable) et que si je décoche la cellule A2 les cellules de la ligne 2 redeviennent modifable.
(si je mets le x en A3, ce sera pareil mais uniquement pour la ligne 3; et ainsi de suite...)
Encore merci pour le temps consacré à me répondre...
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 209
7 sept. 2012 à 19:18
7 sept. 2012 à 19:18
L'exemple fonctionne très bien.
Seulement il faut accepter les macros, et que la sécurité d'excel soit réglée pour te proposer de les accepter.
eric
Seulement il faut accepter les macros, et que la sécurité d'excel soit réglée pour te proposer de les accepter.
eric
Puis-je abuser????
En fait j'ai adapté le code pour qu'il verrouille 149 cellules de la ligne concernée.
Mais, subtilité que je n'avais pas précisé, certaines colonnes comprennent des formules. Afin que l'agent ne modifie pas ces données j'avais initiallement bloqué ces celulles.
Lorsque que je bloque la ligne avec le "x" dans la première cellule elles sont toutes bloquées (ce que je voulais) mais lorsque je débloque en enlevant le "x" toutes les cellules de la ligne redeviennent accessible, je souhaiterais que les cellules à formule restent bloquées (comme dans la configuration de départ)
Les colonnes qui devraient rester en permanence bloquées sont:
B
U
AO à AX (AO et AX compris)
CX
DB
Encore un grand merci
Et promis après j'arrête ;)
Jean-Noël
En fait j'ai adapté le code pour qu'il verrouille 149 cellules de la ligne concernée.
Mais, subtilité que je n'avais pas précisé, certaines colonnes comprennent des formules. Afin que l'agent ne modifie pas ces données j'avais initiallement bloqué ces celulles.
Lorsque que je bloque la ligne avec le "x" dans la première cellule elles sont toutes bloquées (ce que je voulais) mais lorsque je débloque en enlevant le "x" toutes les cellules de la ligne redeviennent accessible, je souhaiterais que les cellules à formule restent bloquées (comme dans la configuration de départ)
Les colonnes qui devraient rester en permanence bloquées sont:
B
U
AO à AX (AO et AX compris)
CX
DB
Encore un grand merci
Et promis après j'arrête ;)
Jean-Noël
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 décembre 2023
7 209
Modifié par eriiic le 7/09/2012 à 23:37
Modifié par eriiic le 7/09/2012 à 23:37
Bonsoir,
On va faire plus général : si une cellule contient une formule elle n'est pas déverrouillée :
J'ai mis le nombre de colonnes en constante au début du code. Ca ne fait qu'une valeur à changer en cas de modif.
Teste et dis.
eric
On va faire plus général : si une cellule contient une formule elle n'est pas déverrouillée :
Private Sub Worksheet_Change(ByVal Target As Range) Const nbcol As Long = 10 Dim col As Long 'activation protection générale If Target = [A1] And [A1] = "" Then ActiveSheet.Unprotect ' protection des lignes If Target.Column = 1 And Target.Row > 1 Then ActiveSheet.Unprotect If LCase(Target) = "x" Then Target.Offset(0, 1).Resize(1, nbcol).Locked = True Else For col = 1 To nbcol If Left(Target.Offset(0, col).Formula, 1) <> "=" Then Target.Offset(0, col).Locked = False Next col End If End If If [A1] = "x" Then ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
J'ai mis le nombre de colonnes en constante au début du code. Ca ne fait qu'une valeur à changer en cas de modif.
Teste et dis.
eric