Protection de données

  • Initiateur de la discussion Initiateur de la discussion abc
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

abc

XLDnaute Impliqué
Bonsoir,
voila mon probléme,
je désire protéger les cellules de la colonne D dés qu'une info est introduite.
Donc si d1 est vide ,autoriser l'encodage,sinon demander un mot de passe.
Ensuite si d2 est vide,autoriser l'encodage,sinon demander un mot de passe et D 1 est toujours protégé.
Ensuite si d3 est vide,autoriser l'encodage,sinon demander un mot de passe et D1,D2 sont toujours protégées et ainsi de suite pour les autres cellules
En résumer ,dés qu'une info est introduit dans la colonne D, l'utilisateur ne sais plus la modifiée.
Voila ce que j'ai fais mais cela n'est pas au point.
Merci de m'aider
 

Pièces jointes

Re : Protection de données

Bonjour abc,

Etant sur Excel 2003 je ne peux ouvrir le fichier.

J'en ai donc créé un autre avec la macro suivante dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, [D:D])
If Target Is Nothing Then Exit Sub
If Target.Cells(1, 1) = "" Then Exit Sub
ActiveSheet.Unprotect 'éventuellement mot de passe
Target.Locked = True
ActiveSheet.Protect 'éventuellement mot de passe
End Sub

A+
 

Pièces jointes

Re : Protection de données

Bonjour,
merci pour ta réponse,on avance.
Pour la colonne D c'est OK mais les autres colonnes ou toute la feuille sont protégées, mais je dois pouvoir continuer à écrire dans les autres colonnes.
Si tu as une idée .
Merci d'avance
A +
 
Re : Protection de données

Re,

Adapter la macro pour qu'elle fonctionne sur d'autres colonnes, vous devez savoir le faire (700 posts...).

Sur une feuille protégée, on peut écrire seulement dans les cellules déverrouillées. Vous devez savoir ça aussi.

Edit : je corrige un peu, on peut aussi écrire dans une cellule verrouillée mais protégée par mot de passe...

A+
 
Dernière édition:
Re : Protection de données

Bonjour,

Après la saisie dans une cellule de la plage D1;D20, la cellule est vérouillée automatiquement.
Code à insérer dans l'onglet (Clic droit sur l'onglet puis y coler le code).



Code:
[COLOR=black][FONT=Verdana][COLOR=black][FONT=Verdana]Dim témoin As Boolean[/FONT][/COLOR]
[LEFT][COLOR=black][FONT=Verdana]Private Sub Worksheet_Change(ByVal Target As Range)[/FONT][/COLOR]
[COLOR=black][FONT=Verdana]If Not Intersect([D1:D20], Target) Is Nothing And Target.Count = 1 And Not témoin Then[/FONT][/COLOR]
[COLOR=black][FONT=Verdana] témoin = True[/FONT][/COLOR]
[COLOR=black][FONT=Verdana] ActiveSheet.Unprotect[/FONT][/COLOR]
[COLOR=black][FONT=Verdana] Target.Locked = True[/FONT][/COLOR]
[COLOR=black][FONT=Verdana] Target.Interior.ColorIndex = 44[/FONT][/COLOR]
[COLOR=black][FONT=Verdana] ActiveSheet.Protect[/FONT][/COLOR]
[COLOR=black][FONT=Verdana] témoin = False[/FONT][/COLOR]
[COLOR=black][FONT=Verdana]End If[/FONT][/COLOR][/LEFT]
[COLOR=black][FONT=Verdana]End Sub[/FONT][/COLOR]
[/FONT][/COLOR]


Une fois la cellule protégée la couleur de fond devient orange (index couleur 44)
 
Re : Protection de données

AïE!
En m'amusant pour m'occuper j'ai bricolé çà.
Pas necessaire protection feuille, valable pour n'importe quelle cellule.
A peaufiner, mais ça marche!Possibilité un mot de passe par cellule.
Faire gaffe à la "Casse"

Mettre un bouton pour lancer la sub Macro4()

Code:
Public Sub Worksheet_SelectionChange(ByVal Target As Range)

Adre = ActiveCell.Address
Adre = Right(Adre, Len(Adre) - 1)
POSA = 1
Do While Mid(Adre, POSA, 1) <> "$"
POSA = POSA + 1
Loop
lign = Val(Right(Adre, Len(Adre) - POSA)) - 1
col = Asc(Left(Adre, POSA - 1)) - 64

If col <> 4 Then GoTo cgt
'If Cells(lign, col + 1) = Mdp(lign) Or Cells(lign, col) = "" Then
If Cells(lign, col) <> Fantom(lign) And Cells(lign, col + 1) = Mdp(lign) Then
Cells(lign, col + 1) = ""
Fantom(lign) = Cells(lign, col)

Else
Cells(lign, col) = Fantom(lign)
Cells(lign, col + 1) = ""
End If

cgt:
End Sub


Dans un module
Code:
Option Explicit
Public Adr
Public Mdp(10)
Public Fantom(10)
Public cont
Public lign
Public col
Public Adre



Public Sub Macro4()
Mdp(1) = "ok"
Mdp(2) = "ok"
Mdp(3) = "ok"
Mdp(4) = "ok"
Mdp(5) = "ok"
Mdp(6) = "ok"
Mdp(7) = "ok"
Mdp(8) = "ok"
Mdp(9) = "ok"
Mdp(10) = "ok"

For cont = 1 To 10

Fantom(cont) = Cells(cont, 4)
Next cont

Punaise, plus je deviens vieux plus je deviens intelligent!😛

Saulongue
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
345
Réponses
2
Affichages
620
Retour