OVH Cloud OVH Cloud

protection de cellules

12 réponses
Avatar
jpierrethillard
Bonjour =E0 tous,

Peut-on prot=E9ger des cellules d'apr=E8s le contenu d'une autre cellule.
Exemple: en a1 j'ai le mot de passe. Les cellules autoris=E9es en
=E9critures seraient de a2 =E0 a20.

Merci de vos lumi=E8res
JP

2 réponses

1 2
Avatar
FFO
Rebonjour à toi

Ce que tu propose est tout à fait jouable mais reste soustendu aussi à
l'action d'enregistrement de l'utilisateur qui est peut être un oubli
potentiel

Ce qui a le moins de chance d'être omis c'est la fermeture du document
Et de toute façon il ne peux être accessible avec un nouvelle état non
conforme tant qu'il n'a pas été refermé

Je te propose dans le Thisworkbook du classeur de mettre ce code :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveSheet.Unprotect ("ien")
Cells.Locked = True
Range("D4", "O4").Locked = False
For Each c In Worksheets("CAP MACON").Range("D4", "O4")
If c <> "Mot de passe" Then
c.Value = "Mot de passe"
End If
Next
ActiveSheet.Protect ("ien")
ActiveWorkbook.Save
End Sub

Il faudra pour éviter les regards indiscrets qui seraient tenter de
consulter tous les codes et de trouver les mots de passe protéger tes projets
avec un mot de passe qui peut être identique ou différent ainsi :

Click droit sur ThisWorkbook
Propriétés de VBAProject
Protection
Cocher : Verrouiller le projet pour l'affichage
Saisir le mot de passe dans la fenêtre prévue à cette effet et OK

Je pense qu'avec tout ceci tu devrais être servi

Le seul inconvénient est que le classeur à chacune de ses fermetures sera
systématiquement enregistré que l'utilisateur le souhaite ou non
Bien l'informer de cette disposition afin qu'il ne laisse pas des saisies
qu'il ne souhaiterait pas concerver

Donne moi tes impressions !!!!


Bonjour FFO,

La macro sera moins longue et aussi efficace. C'est très bien ainsi.

Quand tu dis:" Il est possible de contraindre à cette disposition à la
fermeture du
document au moyen d'un code adapté intégré dans le ThisWorkbook
évitant ainsi
l'oubli potentiel"
N'est-il pas possible de créer cette action au moment de la sauvegarde
du fichier?
Sinon créer un bouton qui lance une macro de "sauvegarde et quitte"
qui viderait la case et ferait apparaître " Mot de passe" avant de
quitter


Merci encore de ton aide.
JP

On 3 jan, 09:26, FFO wrote:
Rebonjour à toi

Aprés avoir analysé ton document je te propose en simplification ce code :

If Target.Row = 4 And Target.Column > 3 And Target.Column < 6 And Target <>
"Mot de passe" Then
ActiveSheet.Unprotect ("ien")
'Colonne 1
If Target.Address = Range("D4").Address And Target = "1923" Then

Range("D5:D24,D28:D30,D32:D36,D38:D43,D45:D46,D48:D53,D55:D62,D64").Locked > > False
Range("S6:V14,S16:V43,S44:T44").Locked = False
Autorisation = 1
End If
'Colonne 2
If Target.Address = Range("E4").Address And Target = "1044" Then

Range("E5:E24,E28:E30,E32:E36,E38:E43,E45:E46,E48:E53,E55:E62,E64").Locked > > False
Range("w6:z14,w16:z43,w44:x44").Locked = False
Autorisation = 1
End If
'Colonne 3
If Target.Address = Range("F4").Address And Target = "2428" Then

Range("F5:F24,F28:F30,F32:F36,F38:F43,F45:F46,F48:F53,F55:F62,F64").Locked > > False
Range("AA6:AD14,AA16:AD43,AA44:AB44").Locked = False
Autorisation = 1
End If
'Colonne 4
If Target.Address = Range("G4").Address And Target = "1607" Then

Range("G5:G24,G28:G30,G32:G36,G38:G43,G45:G46,G48:G53,G55:G62,G64").Locked > > False
Range("AE6:AH14,AE16:AH43,AE44:AF44").Locked = False
Autorisation = 1
End If
'Contrôle de la saisie
If Autorisation <> 1 Then
Target = "Mot de passe"
Cells.Locked = True
Range("D4", "O4").Locked = False
End If
ActiveSheet.Protect ("ien")
a = Target.Value
End If

qui réalise la même chose avec moins de lignes

Sa sécurité est soustendue à la suppression du mot de passe saisie par
l'utilisateur avec enregistrement en suivant de celui-ci pour qu'à la
prochaine réouverture seules les cellules D4 à O4 soient dévérouillées avec
la mention "Mot de passe" à l'interieur de chacune d'elles et non un mot de
passe oublié par le prédécesseur avec toutes les conséquences qui en résultent

Il est possible de contraindre à cette disposition à la fermeture du
document au moyen d'un code adapté intégré dans le ThisWorkbook évitant ainsi
l'oubli potentiel

A toi de statuer

Dis moi !!!!




Oups

Le mot de passe et "ien"
Les mots de passe pour les colonnes sont
colonne 1 1923
colonne 2 1044
colonne 3 2428
colonne 4 1607

Désolé.
JP

On 2 jan, 17:32, FFO wrote:
Rebonjour à toi

Attention si tu mets en place une procédure pour débloquer des cellules en
fonction de la saisie d'une autre cellule il faudra bien mettre en place un
2° procédure pour retrouver l'état initial des verroux
Cette dernière à l'instar de la première devra être déclenchée par un signal
un état une action réalisé par l'utilisateur sortant
Il a mis en place une situation en montrant patte blanche dans une cellule
il faudra en faire de même par une action à déterminer de ce même utilisateur
pour retrouver l'état initial

A toi de nous donner comme tu la fait pour enclencher l'état de déblocage
l'indicateur qui doit remettre en place l'état de blocage

Il va de soi que ces indicateurs ou actions s'adresseront de manière
identique à tous les utilisateurs et seront à réaliser autant dans le
déblocage que dans le blocage par leur soin
Ces états donc seront tributaire de leur participation

Dans l'attente de te lire




Salut FFO,

Je suis désolé mais le but est de bloquer le prochain utilisateur sur
les cellules A2:A20. J'ai 10 personnes différentes qui vont intervenir
sur le fichier. La première intervient sur les cellules A2:A20, la
deuxième sur les cellules B2:B20 etc. chaque personne devrait avoir un
mot de passe à placer en tête de colonne pour n'intervenir que ses
cellules.

Les risques de modif des cellules n'appartenant pas à la personne sont
ainsi nuls.

Tu me dis si c'est possible de l'améliorer.
Merci d'avance

JP

On 2 jan, 11:56, FFO wrote:
Salut à toi

Je te propose aprés avoir protégé ta feuille (Outils/Protection/Protéger la
feuille) en mettant un mot de passe (à ne pas oublier biensure)

de mettre dans le VBA de cette feuille ce code

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("A1").Address Then
If Target = "Toto" Then
ActiveSheet.Unprotect ("Mot de passe")
Range("A2:A20").Locked = False
ActiveSheet.Protect ("Mot de passe")
End If
End If
End Sub

Les cellules A2 à A20 seront déverrouillées avec le nom "Toto" saisi en A1
Il faudra les reverrouiller éventuellement avant la fermeture du classeur

Celà te convient il ????






Bonjour à tous,

Peut-on protéger des cellules d'après le contenu d'une autre cellule..
Exemple: en a1 j'ai le mot de passe. Les cellules autorisées en
écritures seraient de a2 à a20.

Merci de vos lumières
JP- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -











Avatar
jpierrethillard
Bonsoir,

Avec l'aide de Camille et FFO j'ai terminé mon projet.
Merci encore pour votre aide.

amicordialement
JP
On 3 jan, 15:10, FFO wrote:
Rebonjour à toi

Ce que tu propose est tout à fait jouable mais reste soustendu aussi à
l'action d'enregistrement de l'utilisateur qui est peut être un oubli
potentiel

Ce qui a le moins de chance d'être omis c'est la fermeture du document
Et de toute façon il ne peux être accessible avec un nouvelle état n on
conforme tant qu'il n'a pas été refermé

Je te propose dans le Thisworkbook du classeur de mettre ce code :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
 ActiveSheet.Unprotect ("ien")
 Cells.Locked = True
 Range("D4", "O4").Locked = False
 For Each c In Worksheets("CAP MACON").Range("D4", "O4")
 If c <> "Mot de passe" Then
 c.Value = "Mot de passe"
 End If
 Next
 ActiveSheet.Protect ("ien")
 ActiveWorkbook.Save
End Sub

Il faudra pour éviter les regards indiscrets qui seraient tenter de
consulter tous les codes et de trouver les mots de passe protéger tes pr ojets
avec un mot de passe qui peut être identique ou différent ainsi :

Click droit sur ThisWorkbook
Propriétés de VBAProject
Protection
Cocher : Verrouiller le projet pour l'affichage
Saisir le mot de passe dans la fenêtre prévue à cette effet et OK

Je pense qu'avec tout ceci tu devrais être servi

Le seul inconvénient est que le classeur à chacune de ses fermetures s era
systématiquement enregistré que l'utilisateur le souhaite ou non
Bien l'informer de cette disposition afin qu'il ne laisse pas des saisies
qu'il ne souhaiterait pas concerver

Donne moi tes impressions !!!!




Bonjour FFO,

La macro sera moins longue et aussi efficace. C'est très bien ainsi.

Quand tu dis:" Il est possible de contraindre à cette disposition à la
fermeture du
document au moyen d'un code adapté intégré dans le ThisWorkbook
évitant ainsi
l'oubli potentiel"
N'est-il pas possible de créer cette action au moment de la sauvegarde
du fichier?
Sinon créer un bouton qui lance une macro de "sauvegarde et quitte"
qui viderait la case et ferait apparaître " Mot de passe" avant de
quitter

Merci encore de ton aide.
JP

On 3 jan, 09:26, FFO wrote:
Rebonjour à toi

Aprés avoir analysé ton document je te propose en simplification c e code :

 If Target.Row = 4 And Target.Column > 3 And Target.Column < 6 And Target <>
"Mot de passe" Then
      ActiveSheet.Unprotect ("ien")
    'Colonne 1
      If Target.Address = Range("D4").Address And Target = " 1923" Then

Range("D5:D24,D28:D30,D32:D36,D38:D43,D45:D46,D48:D53,D55:D62,D64").Lo cked =
False
      Range("S6:V14,S16:V43,S44:T44").Locked = False
      Autorisation = 1
      End If
    'Colonne 2
      If Target.Address = Range("E4").Address And Target = " 1044" Then

Range("E5:E24,E28:E30,E32:E36,E38:E43,E45:E46,E48:E53,E55:E62,E64").Lo cked =
False
      Range("w6:z14,w16:z43,w44:x44").Locked = False
      Autorisation = 1
      End If
    'Colonne 3
      If Target.Address = Range("F4").Address And Target = " 2428" Then

Range("F5:F24,F28:F30,F32:F36,F38:F43,F45:F46,F48:F53,F55:F62,F64").Lo cked =
False
      Range("AA6:AD14,AA16:AD43,AA44:AB44").Locked = False
      Autorisation = 1
      End If
    'Colonne 4
      If Target.Address = Range("G4").Address And Target = " 1607" Then

Range("G5:G24,G28:G30,G32:G36,G38:G43,G45:G46,G48:G53,G55:G62,G64").Lo cked =
False
      Range("AE6:AH14,AE16:AH43,AE44:AF44").Locked = False
      Autorisation = 1
      End If
    'Contrôle de la saisie
      If Autorisation <> 1 Then
      Target = "Mot de passe"
      Cells.Locked = True
      Range("D4", "O4").Locked = False
      End If
      ActiveSheet.Protect ("ien")
      a = Target.Value
      End If

qui réalise la même chose avec moins de lignes

Sa sécurité est soustendue à la suppression du mot de passe sais ie par
l'utilisateur avec enregistrement en suivant de celui-ci pour qu'à l a
prochaine réouverture seules les cellules D4 à O4 soient dévér ouillées avec
la mention "Mot de passe" à l'interieur de chacune d'elles et non un mot de
passe oublié par le prédécesseur avec toutes les conséquences qui en résultent

Il est possible de contraindre à cette disposition à la fermeture du
document au moyen d'un code adapté intégré dans le ThisWorkbook évitant ainsi
l'oubli potentiel

A toi de statuer

Dis moi !!!!




Oups

Le mot de passe et "ien"
Les mots de passe pour les colonnes sont
colonne 1 1923
colonne 2 1044
colonne 3 2428
colonne 4 1607

Désolé.
JP

On 2 jan, 17:32, FFO wrote:
Rebonjour à toi

Attention si tu mets en place une procédure pour débloquer des cellules en
fonction de la saisie  d'une autre cellule il faudra bien mettre en place un
2° procédure pour retrouver l'état initial des verroux
Cette dernière à l'instar de la première devra être décl enchée par un signal
un état une action réalisé par l'utilisateur sortant
Il a mis en place une situation en montrant patte blanche dans une cellule
il faudra en faire de même par une action à déterminer de ce même utilisateur
pour retrouver l'état initial

A toi de nous donner comme tu la fait pour enclencher l'état de déblocage
l'indicateur qui doit remettre en place l'état de blocage

Il va de soi que ces indicateurs ou actions s'adresseront de mani ère
identique à tous les utilisateurs et seront à réaliser autan t dans le
déblocage que dans le blocage par leur soin
Ces états donc seront tributaire de leur participation

Dans l'attente de te lire






Salut FFO,

Je suis désolé mais le but est de bloquer le prochain utilis ateur  sur
les cellules A2:A20. J'ai 10 personnes différentes qui vont in tervenir
sur le fichier. La première intervient sur les cellules A2:A20 , la
deuxième sur les cellules B2:B20 etc. chaque personne devrait avoir un
mot de passe à placer en tête de colonne pour n'intervenir q ue ses
cellules.

Les risques de modif des cellules n'appartenant pas à la perso nne sont
ainsi nuls.

Tu me dis si c'est possible de l'améliorer.
Merci d'avance

JP

On 2 jan, 11:56, FFO wrote:
Salut à toi

Je te propose aprés avoir protégé ta feuille (Outils/Pro tection/Protéger la
feuille) en mettant un mot de passe (à ne pas oublier biensu re)

de mettre dans le VBA de cette feuille ce code

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("A1").Address Then
If Target = "Toto" Then
ActiveSheet.Unprotect ("Mot de passe")
Range("A2:A20").Locked = False
ActiveSheet.Protect ("Mot de passe")
End If
End If
End Sub

Les cellules A2 à A20 seront déverrouillées avec le nom "Toto" saisi en A1
Il faudra les reverrouiller éventuellement avant la fermetur e du classeur

Celà te convient il ????








Bonjour à tous,

Peut-on protéger des cellules d'après le contenu d'une a utre cellule..
Exemple: en a1 j'ai le mot de passe. Les cellules autorisé es en
écritures seraient de a2 à a20.

Merci de vos lumières
JP- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -- Masquer le text e des messages précédents -



- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -



- Afficher le texte des messages précédents -









1 2