creation de mot de passe pour la saisie des données sur une colonne

dss

XLDnaute Occasionnel
Bonjour le forum,

Tout d'abord, permettez moi de vous souhaiter de très, très bonnes fêtes de fin d'année.

Je fais appel à vous après avoir cherché dans le forum les sujets traitant de la création d'un mot de passe sous excel et je n'ai rien trouvé en rapport avec le problème auquel je suis confronté et qui doit être cependant très simple pour les experts que vous êtes !

En fait, je voudrais créer un mot de passe sur la colonne B en fonction de la réponse apportée en colonne A

Exemple : si la réponse sur une ligne en colonne A est égale TOTO alors seul un utilisateur disposant d'un mot de passe pourra saisir sur la même ligne en colonne B : OUI ou NON.

Merci de m'apporter vos lumières,

Amicalement


dss
 

dss

XLDnaute Occasionnel
Re : creation de mot de passe pour la saisie des données sur une colonne

Bonjour le forum,

En complément de ma demande de création d'un mot de passe pour la saisie de données sur les lignes de la colonne B si et uniquement si la valeur saisie sur la même ligne en colonne A est "TOTO", savez vous également s'il est possible d'imposer le format jj/mm/aaaa à toutes les cellules de la colonne A ?
J'ai essayé avec données-->Validation etc... mais ça ne fonctionne pas.
Si l'un d'entre vous a été confronté à un des deux voire aux deux problèmes que je rencontre, merci de m'apporter votre aide...

Amicalement

dss
 

Staple1600

XLDnaute Barbatruc
Re : creation de mot de passe pour la saisie des données sur une colonne

Bonjour


Un début de réponse (à mettre dans le code de la feuille)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim motdepasse As String
If Target.Column = 1 And Target.Value = "toto" Then motdepasse = InputBox("Mot de passe,svp")
If motdepasse = "x" Then
Target.Offset(0, 1).Select
End If
End Sub


si TOTO est saisi en colonne A ce n'est pas une date
donc on peut appliquer une format date non?

Sie dates en colonne A
alors essaie ce code (à mettre dans un module)
Code:
Sub test()
Dim C As Range
For Each C In Range("A1:A" & [A65536].End(xlUp).Row)
C.NumberFormat = "dd/mm/yy"
Next
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : creation de mot de passe pour la saisie des données sur une colonne

Re

Une variante qui traite le OUI/NON
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim motdepasse As String
If Target.Column = 1 And Target.Value = "toto" Then motdepasse = InputBox("Mot de passe,svp")
If motdepasse = "x" Then' mettre le mot passe que l'on veut à la place du x
Target.Offset(0, 1).Select
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"
End If
End Sub
 

dss

XLDnaute Occasionnel
Re : creation de mot de passe pour la saisie des données sur une colonne

Bonsoir Staple et le forum,

Merci de ton aide. J'ai essayé de suivre tes recommandations : j'ai crée le module1 de la façon suivante en recopiant ton code :

Sub test()
Dim C As Range
For Each C In Range("D8:D" & [A65536].End(xlUp).Row)
C.NumberFormat = "dd/mm/yy"
Next
End Sub

Comme tu me l'as fait remarquer à juste raison, les valeurs "dates" concernées se trouvent en colonne D et non en colonne A, c'est pourquoi j'ai remplacé "A" par "D".
Malgrè cela, je peux saisir dans la colonne "D" ce que je veux car le module ne m'impose aucun format? Doit on préciser la feuille concernée?

Pour le mot de passe, c'est opérant dès que je saisis "TOTO" en colonne A alors qu'il faudrait que le mot de passe soit demandé seulement quand on veut saisir dans la colonne B et si "TOTO" est inscrit en colonne A : Car ce n'est pas le même utilisateur qui renseignera dans le cas présent les colonnes A et B (donc décalage dans le temps) .

En tout cas, mes sincères remerciements pour m'avoir apporté ton aide. Si tu as une idée notamment par rapport au contrôle que doit effectuer le module, elle sera la bienvenue.

Cordialement

dss
 

Staple1600

XLDnaute Barbatruc
Re : creation de mot de passe pour la saisie des données sur une colonne

Bonjour

Une petite modification (en rouge)
Sub test()
Dim C As Range
For Each C In Range("D8: D" & [D65536].End(xlUp).Row)
C.NumberFormat = "dd/mm/yy"
Next
End Sub

(supprime les espace entre "D1: et D")

edit: une modification suite à ton dernier message
(Efface au préalable la première macro:
Private Sub Worksheet_Change(ByVal Target As Range) )
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim motdepasse As String
If Target.Column = 1 Then Exit Sub
If Target.Column = 2 And ActiveCell.Offset(0, -1) = "toto" Then motdepasse = InputBox("Mot de passe,svp")
If motdepasse = "x" Then ' mettre le mot passe que l'on veut à la place du x
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"
End If
End Sub
 
Dernière édition:

dss

XLDnaute Occasionnel
Re : creation de mot de passe pour la saisie des données sur une colonne

Bonsoir Staple,

Désolé de ne pas t'avoir répondu plus rapidement, je reviens sur le fil juste maintenant.
Merci encore de m'épauler dans ma recherche de solution au problème qui m'est posé.
J'ai pris connaissance de la modification du code et j'ai essayé de suivre au mieux tes conseils:

Voila les premiers résultats que j'obtiens :

1) Au niveau du VBA project, j'ai crée le module1 dans lequel j'ai copie le code comme cela :

Sub test()
Dim C As Range
For Each C In Range("D8:D" & [D65536].End(xlUp).Row)
C.NumberFormat = "dd/mm/yy"
Next
End Sub

Le pb c'est que je peux toujours saisir ce que je veux (lettres par ex) sans aucun contrôle effectif. Je sèche…

2) Pour ce qui concerne le mot de passe :
a) si j'annule la boite de dialogue, à priori aucun contrôle effectué car
Est ce normal que je puisse saisir dans la colonne J alors que "toto" est inscrit en colonne I : le mot de passe n'est apparemment pas effectif dès l’appui sur une touche pour saisir en colonne J et lorsque "toto" est en colonne I sur la même ligne.

b) Si je conserve ma boite de dialogue données--->validation, (ce que je ne souhaite pas), je rentre la donnée prédéfinie et là, l'inputbox me demande la saisie d'un mot de passe:
Si je valide "OUI" dans l'inputbox, elle reboucle indéfiniment sur elle-même dès lors que je fais OK à chaque fois : pour l'arrêter, je dois faire "Annuler" ?
Idem si je valide "NON", elle reboucle sans arrêt tant que je ne fais pas annuler

Je tiens la totalité de mon code à ta disposition si cela peut t'intéresser

Cordialement

dss
 

dss

XLDnaute Occasionnel
Re : creation de mot de passe pour la saisie des données sur une colonne

Bonsoir à nouveau Staple,

Précision : l'inputbox s'ouvre lorsque j'appuie sur la touche "suppr".
Après réflexion, et contrairement a ce que je te disais dans mon message précédent, je serai tout compte fait obligé de garder Données-->Validation etc (tout en la restructurant).
Mais le principe ne change pas dès que toto est inscrit en colonne I: Est-il possible que le mot de passe soit demandé avant qu'on puisse saisir ou valider la donnée en colonne J
A ce propos, j'ai changé target.column respectivement par 9 et 10 colonne I et L.

Cordialement

dss
 

dss

XLDnaute Occasionnel
Re : creation de mot de passe pour la saisie des données sur une colonne

Bonsoir Staple,

En fait, j'avais bien recopié le code sans le smiley et avec ("D8:D"); la présence du smiley au niveau du message précédent demeure pour moi énigmatique car j'ai fait fait un copier/coller depuis VBA.

Sub test()
Dim C As Range
For Each C In Range("D2:D" & [D65536].End(xlUp).Row)
C.NumberFormat = "dd/mm/yy"
Next
End Sub

Cordialement
 

ERIC S

XLDnaute Barbatruc
Re : creation de mot de passe pour la saisie des données sur une colonne

Bonjour

le smiley, c'est dû au forum, donc pas de panique..

pour ne pas boucler, essaie d'ajouter une ligne (non testé)

If a = vbNo Then ActiveCell.Value = "NON"
ActiveCell.Offset(0, -1).select
End If

pour les dates, pourquoi la validation ne fonctionne-t'elle pas cumulée avec une sélection colonne D format cellule date...?
 

dss

XLDnaute Occasionnel
Re : creation de mot de passe pour la saisie des données sur une colonne

Bonjour Eric S, Staple et le forum et bonnes fêtes de fin d'année

J'ai essayé de rajouter ta ligne de code mais toujours le même pb:
L'inputbox boucle sur la demande de saisie du mot de passe tant que je tape le mot de passe et que je valide OUI ou NON.

Pour info voilà un extrait du code que m'a envoyé Staple :

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"
End If

J'ai noté ta remarque sur la validation des données : peux-tu m'en dire plus car je m'y prends peut-être mal

Merci d'avance,

Cordialement

dss
 

ERIC S

XLDnaute Barbatruc
Re : creation de mot de passe pour la saisie des données sur une colonne

re

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
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 = mot 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
End Sub


pour les dates, tu sélectionnes toute ta colonne et
format
cellule
nombre
date

cela te fixe le format

tu sélectionnes toute ta colonne
données validation
date
supérieure à
01/01/2007
 

dss

XLDnaute Occasionnel
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+
 

Discussions similaires

Réponses
5
Affichages
416
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 330
Messages
2 087 349
Membres
103 526
dernier inscrit
HEC