Autoriser la modification d'une ligne saisie seulement par mot de passe

dss

XLDnaute Occasionnel
Bonjour le forum,

J'essaie d'empêcher la modification d'une ligne saisie (colonne A à N) pour tout utilisateur qui ne dispose pas du mot de passe à l'aide de l'instruction suivante :
(Précision : la cellule de la colonne N sur la ligne concernée est égale à "Enregistré" avant le déroulement de l'instruction qui suit :

Lig =Target.row
If Range("N" & Lig).Value <> "" Then
VMdP = InputBox("La date de la demande est déjà enregistrée !" & vbCrLf & vbCrLf _
& "Pour modifier les données existantes, merci de saisir le mot de passe : ", _
"MODIFICATION IMPOSSIBLE ...")
'Vérifie le mot de passe ici
If VMdP <> "TOTO" Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Exit Sub
End If
End If

J'ai aussi essayé a la place de
Lig =Target.row
If Range("N" & Lig).Value <> "" Then

VcolN =val(range("N" & target.row).value
If VcolF<>0
Etc...

Je vous remercie de venir à mon aide car j'ai essayé solution sur solution je ne m'en sors pas pour protéger la ligne de saisie par mot de passe.

D'avance grand merci,

Amicalement

dss
 

dss

XLDnaute Occasionnel
Re : Autoriser la modification d'une ligne saisie seulement par mot de passe

Bonsoir le Forum et bonsoir BrunoM45,

Grand merci pour ton envoi.
Je teste et je ne comprends pas pourquoi lorsque je saisis en colonne N, la valeur saisie disparaît. la suppression ou la modification deviennent alors possibles.
Si ce n'est pas trop te demander, peux tu m'expliquer d'autant que le reste de ma macro prevoit de remplir cette case selon reponse de l'utilisateur.

Pour info, peux tu me dire si le reste du code presentera à ton avis probleme en l'integrant tel quel

VColD = Range("D" & Target.Row).Value
VColL = Range("L" & Target.Row).Value
If VColL <> 0 And VColD <> 0 Then
Setrep = MsgBox("Validez votre saisie :Attention,vous ne pourrez plus modifier la ligne après la validation ", vbYesNo)
End If

Tri des données sur 3 colonnes
If Setrep = 6 Then
Range("A4:M65000").Select
Selection.Sort key1:=Range("D5"), Order1:=xlAscending, Key2:=Range("A5") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
'Enregistre le classeur
ActiveWorkbook.Save
End If
End If
Inscrit Enregistré en colonne N sur la ligne saisie
If ActiveWorkbook.Saved = True And Range("N" & Target.Row).Value = "" Then
Range("N" & Target.Row).Value = "Enregistré"
End If

Encore mille fois merci car tu me sors d'une veritable galere!

Cordialement

dss
 

dss

XLDnaute Occasionnel
Re : Autoriser la modification d'une ligne saisie seulement par mot de passe

Bonsoir le forum et BrunoM45,

Excuse moi BrunoM45, dans ma précipitation je viens de m'apercevoir que j'ai oublié ce bout de code qui vient en plus du précédent

'Inscrit la date et heure de saisie si n'existe pas déjà
If Range("N" & Target.Row).Value <> 0 Then

Lig = Target.Row
If Range("M" & Lig).Value = "" And Target.Value <> "" Then
Range("M" & Lig).Value = Now()
End If

Merci encore pour ton aide precieuse

dss
 

dss

XLDnaute Occasionnel
Re : Autoriser la modification d'une ligne saisie seulement par mot de passe

RE bonsoir le forum et brunoM45,

J'ai testé après avoir recopié les lignes de code restantes et la macro bloque apres avoir inscrit enregistré en colonne N au niveau de application.Undo dans IF not intersect......
Peut être à cause de If ActiveWorkbook.Saved = True And Range("N" & Target.Row).Value = "" Then
Range("N" & Target.Row).Value = "Enregistré"

mais je n'en suis pas sur...car peu de pratique en VBA et aucune de programmation mais je m'accroche....
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo