Re : creation de mot de passe pour la saisie des données sur une colonne
Bonsoir Eric et le forum,
Effectivement, tu avais raison pour la date : en appliquant tes conseils, le resultat par donnees--->validation etc.. ça fonctionne parfaitement et c'est super!
Par contre, j'ai toujours le même souci avec ma boîte malgré les modifications que j'ai faite suite à ton envoi :
J' envoie une partie du code car peut-être que celui-ci est mal ordonné, d'où le bug auquel je suis confronté.
L'exemple concerne un tableau dans lequel je dois remplir pour chaque ligne les colonnes de A à L soit par saisie manuelle soit à l'aide de boites de dialogue : si les cellules sont correctement renseignées, elles sont validées et enregistrées en colonne N avec la date d'enregistrement en colonne M : dès lors cette ligne est protégée. Et ainsi de suite pour chaque ligne dûment renseignée.
' récupère la Saisie dans la colonne de A à L
Lig = target.Row
VColA = Range("A" & Lig).Value
VColB = Range("B" & Lig).Value
VColC = Range("C" & Lig).Value
VColD = Range("D" & Lig).Value
VColE = Range("E" & Lig).Value
VColF = Range("F" & Lig).Value
VColG = Range("G" & Lig).Value
VColH = Range("H" & Lig).Value
VcolI = Range("I" & Lig).Value
VcolJ = Range("J" & Lig).Value
VcolK = Range("K" & Lig).Value
VColL = Range("L" & Lig).Value
If VColH = "OUI" And VcolI = "TOTO" And VcolJ = "OUI" And VColA <> "" And _
VColB <> "" And VColC <> "" And VColD <> "" And VColE <> "" And VColF <> "" And _
VColG <> "" And VColL <> "" And VcolK <> "" Then
SetRep = MsgBox("Validez votre saisie :Attention,vous ne pourrez plus modifier la ligne après la validation ", vbYesNo)
End If
Dim motdepasse As String, a As Variant, mot as variant
mot = "x"
If target.Column >= 1 And target.Column <= 9 Then Exit Sub
If target.Column = 10 And ActiveCell.Offset(0, -1) = "TOTO" Then _
motdepasse = InputBox("Mot de passe,svp")
If motdepasse = "x" Then
a = MsgBox("Valeurs autorisées OUI ou NON", vbYesNo, "Saisie de valeurs")
If a = vbYes Then ActiveCell.Value = "OUI"
If a = vbNo Then ActiveCell.Value = "NON"
Else
target.Offset(0, -1).Select
End If
If VColH = "NON" And VColA <> "" And VColB <> "" And VColC <> "" And VColD <> "" And _
VColE <> "" And VColF <> "" And VColG <> "" And VColL <> "" And VcolI = "" And _
VcolJ = "" And VcolK = "" Then
SetRep = MsgBox("Validez votre saisie :Attention,vous ne pourrez plus modifier la ligne après la validation ", vbYesNo)
End If
If VColH = "OUI" And VcolI <> "Chauffeur" And VColA <> "" And VColB <> "" And _
VColC <> "" And VColD <> "" And VColE <> "" And VColF <> "" And VColG <> "" And _
VColL <> "" And VcolK <> "" And VcolJ <> "OUI" And VcolJ <> "NON" And VcolJ <> "" Then
SetRep = MsgBox("Validez votre saisie :Attention,vous ne pourrez plus modifier la ligne après la validation ", vbYesNo)
End If
' Quelle réponse de l'utilisateur
If SetRep = 6 Then
' Désactive les évènements dans le classeur
Application.EnableEvents = False
If Range("N" & Lig).Value = "" Then
Range("N" & Lig).Value = "Enregistré"
End If
'Déprotège le classeur
ActiveSheet.Unprotect Password:="yyyyy"
With Range("A" & target.Row & ":N" & target.Row)
.Locked = True
.FormulaHidden = True
End With
'Inscrit la date et heure de saisie si n'existe pas déjà
If Range("N" & Lig).Value <> 0 Then
If Range("M" & Lig).Value = "" Then 'And Target.Value <> "" Then
' Inscrit la date
Range("M" & Lig).Value = Now()
End If
End If
End If
Je pense qu'on peut obtenir le meme résultat en simplifiant les If et then mais je ne suis pas très doué.
Merci de votre aide si vous savez pourquoi l'inputbox boucle sans fin des que l'on inscrit le mot de passe.
A+