Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formulaire d'identification

31 réponses
Avatar
Leyley39
Bonjour

Je voudrais créer un formulaire d'accueil qui demande à l'utilisateur de
s'identifier (liste déroulante des utilisateurs) et un mots de passe. Si ces
informations sont justes, après avoir cliqué sur le bouton, l'utilisateur à
accès aux autres formulaire. J'ai créé dans une des tables, un champ "nom
d'utilisateur" et "Mot de passe". Quel est le code qui me pertmettra de faire
ça et est-ce que je le place au niveau du bouton d'ouverture des autres
formulaires ?
--
Merci de votre aide

Leyley39

10 réponses

1 2 3 4
Avatar
Fabien
Leyley39 a écrit :
Voici le code et il ne fonctionne que pour mon premier utilisateur :

Private Sub Entrerr_Click()
Dim Rs As DAO.Recordset
On Error GoTo Err_Entrerr_Click

Set Rs = CurrentDb.OpenRecordset("PRO SMAEC")
Do While Not Rs.EOF
If Rs.Fields("NOM UTILISATEUR").Value = Me.Modifiable4.Value Then
If Rs.Fields("CODE ACCES").Value = Me.CODEACCES.Value Then



> Dim stDocName As String
> Dim stLinkCriteria As String



> stDocName = "Menu Général "
> DoCmd.OpenForm stDocName, , , stLinkCriteria



> Exit Do
> Else
MsgBox "Erreur de mot de passe"


> Exit Sub
End If


> Else
MsgBox "Utilisateur non reconnu !!!", vbCritical, "Attention..."


> Exit Sub
End If
Rs.MoveNext
Loop


Exit_Entrerr_Click:
Exit Sub

Err_Entrerr_Click:
MsgBox Err.Description
Resume Exit_Entrerr_Click

End Sub



Comportement normal puisque dés que tu ne reconnais pas l'utilisateur,
tu envoi un message et tu sors de la boucle et de la procédure par un
exit sub. Enleve cet exit sub et la boucle continura jusqu'au nom
correct s'il existe dans la table
Entre nous ce code est plutôt mauvais. En effet tu veux tester tout les
nom utilisteur de ta table par rapport a ton choix et afficher a chaque
fois le message "Utilisateur non reconnu !!!".
Vois celui de Raymond seneque ou utilise le mien tu t'embetera moins ;-)
@+
Avatar
Michel__D
Bonjour,

Leyley39 a écrit :
Quand je relance, le dernier mot de passe (même caché par des *) s'affiche.
J'aimerais bien que ce soit en blanc. Mais c'est un moindre soucis.

J'ai toujours se problème de reconnaissance des autres utilisateurs.
Pourquoi un seul des 10 utilisateurs créés est reconnu ? Le code devrait
fonctionné pour tous. Le problème vient d'ailleurs mais où ? C'est terrible
d'être si près du but.



En fait c'est de ma faute, j'ai mal réorganisé ton code initial,
ce qui suit devrait mieux fonctionner mais je ne l'ai pas testé.


Private Sub Entrerr_Click()
Dim Rs As DAO.Recordset
Dim Drap As Long
On Error Goto Err_Entrerr_Click

Drap = 0
Set Rs = CurrentDb.OpenRecordset("PRO SMAEC")
Do While Not Rs.EOF
If Rs.Fields("NOM UTILISATEUR").Value=me.Modifiable4.Value Then
Drap = 1
If Rs.Fields("CODE ACCES").Value=me.CODE_ACCES.Value Then
Drap = -1
End If
Exit Do
End If
Rs.MoveNext
Loop
Select Case Drap
Case -1
MsgBox "Ok"
Case 1
MsgBox "Erreur de mot de passe"
Exit Sub
Case 0
MsgBox "Utilisateur non reconnu !!!", vbCritical, "Attention..."
Exit Sub
End Select

DoCmd.OpenForm "Menu Général "

Exit_Entrerr_Click:
Exit Sub

Err_Entrerr_Click:
MsgBox Err.Description
Resume Exit_Entrerr_Click

End Sub
Avatar
Gloops
Bonjour,

J'ignore si je vais autant taper à côté que l'autre fois, mais quelques
questions me viennent.


Leyley39 a écrit, le 27/08/2008 12:07 :
J'ai parlé trop vite. Je n'ai qu'un utilisateur de reconnu. C'est un mystère.



Comment faut-il comprendre : il n'apparaît qu'un utilisateur dans la
liste déroulante, ou le mot de passe n'est comparé que pour le premier ?

D'ailleurs, cette question me fait un drôle d'effet, on ne devrait
comparer le mot de passe que pour l'utilisateur sélectionné.

Qu'y-a-t-il dans le RowSource de la liste déroulante ?


Aussi, y aurait-t-il un moyen d'effacer le contenu du contrôle du mot de
passe à l'ouverture de la basse. Là, le dernier mot de passe entrer s'affiche
toujours.



Quelle est la propriété ControlSource de la zone de texte ?
Et la propriété RecordSource du formulaire ?

Elles devraient être vides, mais je me méfie ...
Avatar
Gloops
Fabien a écrit, le 27/08/2008 15:33 :
Comportement normal puisque dés que tu ne reconnais pas l'utilisat eur,
tu envoi un message et tu sors de la boucle et de la procédure par un
exit sub. Enleve cet exit sub et la boucle continura jusqu'au nom
correct s'il existe dans la table
Entre nous ce code est plutôt mauvais. En effet tu veux tester tou t les
nom utilisteur de ta table par rapport a ton choix et afficher a chaque
fois le message "Utilisateur non reconnu !!!".
Vois celui de Raymond seneque ou utilise le mien tu t'embetera moins ;- )
@+



Oups, on dirait que j'ai oublié que les vacances c'est pour se repos er :
je réalise que le dernier message que j'ai posté est une â nerie, ou du
moins en contient.


Pour essayer de me faire pardonner :

txtMdp = Me.Controls("CODE_ACCES")
If DCount("*", "PRO_SMAEC", "[NOM UTILISATEUR]='" & modifiable4 & "'") =
0 Then
MsgBox "Utilisateur non reconnu"
Exit Sub
End If

If DLookup("CODE_ACCES", "PRO_SMAEC", "[NOM UTILISATEUR]='" &
modifiable4 & "'") <> txtMdp Then
MsgBox "Mot de passe erroné"
Exit Sub
End If

MsgBox "Y a bon"


'On a supposé :
' - que la table des utilisateurs s'appelle PRO_SMAEC
' - que NOM_UTILISATEUR est le nom du champ clef dans cette table
' - que CODE_ACCES est le nom du champ où figure le mot de passe
' - qu'il n'y a d'apostrophe ni dans le NOM_UTILISATEUR ni dans le
CODE_ACCES
Avatar
Leyley39
Merci Michel_D

Là je peux dire que ça fonctionne. Le code est bon.

Comment faire pour que la textbox du mot de passe soit vide à l'ouverture du
formulaire ?
--
Merci de votre aide

Leyley39


"Michel__D" a écrit :

Bonjour,

Leyley39 a écrit :
> Quand je relance, le dernier mot de passe (même caché par des *) s'affiche.
> J'aimerais bien que ce soit en blanc. Mais c'est un moindre soucis.
>
> J'ai toujours se problème de reconnaissance des autres utilisateurs.
> Pourquoi un seul des 10 utilisateurs créés est reconnu ? Le code devrait
> fonctionné pour tous. Le problème vient d'ailleurs mais où ? C'est terrible
> d'être si près du but.

En fait c'est de ma faute, j'ai mal réorganisé ton code initial,
ce qui suit devrait mieux fonctionner mais je ne l'ai pas testé.


Private Sub Entrerr_Click()
Dim Rs As DAO.Recordset
Dim Drap As Long
On Error Goto Err_Entrerr_Click

Drap = 0
Set Rs = CurrentDb.OpenRecordset("PRO SMAEC")
Do While Not Rs.EOF
If Rs.Fields("NOM UTILISATEUR").Value=me.Modifiable4.Value Then
Drap = 1
If Rs.Fields("CODE ACCES").Value=me.CODE_ACCES.Value Then
Drap = -1
End If
Exit Do
End If
Rs.MoveNext
Loop
Select Case Drap
Case -1
MsgBox "Ok"
Case 1
MsgBox "Erreur de mot de passe"
Exit Sub
Case 0
MsgBox "Utilisateur non reconnu !!!", vbCritical, "Attention..."
Exit Sub
End Select

DoCmd.OpenForm "Menu Général "

Exit_Entrerr_Click:
Exit Sub

Err_Entrerr_Click:
MsgBox Err.Description
Resume Exit_Entrerr_Click

End Sub



Avatar
Michel__D
Bonjour,

"Leyley39" a écrit dans le message de
news:
Merci Michel_D

Là je peux dire que ça fonctionne. Le code est bon.

Comment faire pour que la textbox du mot de passe soit vide à l'ouverture du
formulaire ?




Comme tu as surement basé ton formulaire sur la table qui contient
les noms des utilisateurs et des mots de passe, c'est normal qu'il
t'affiche le 1er enregistrement et donc il ne faut pas baser le
formulaire sur une table, par contre dans le recordsource du
contrôle de la liste déroulante correspondante au choix de
l'utilisateur il va falloir mettre une requête de ce type :

SELECT DISTINCT [Nom Utilisateur] FROM [PRO SMAEC];

PS:Il faut utiliser 2 contrôles indépendants (choix de l'utilisateur et
saisie du mot de passe)


> En fait c'est de ma faute, j'ai mal réorganisé ton code initial,
> ce qui suit devrait mieux fonctionner mais je ne l'ai pas testé.
>
>
> Private Sub Entrerr_Click()
> Dim Rs As DAO.Recordset
> Dim Drap As Long
> On Error Goto Err_Entrerr_Click
>
> Drap = 0
> Set Rs = CurrentDb.OpenRecordset("PRO SMAEC")
> Do While Not Rs.EOF
> If Rs.Fields("NOM UTILISATEUR").Value=me.Modifiable4.Value Then
> Drap = 1
> If Rs.Fields("CODE ACCES").Value=me.CODE_ACCES.Value Then
> Drap = -1
> End If
> Exit Do
> End If
> Rs.MoveNext
> Loop
> Select Case Drap
> Case -1
> MsgBox "Ok"
> Case 1
> MsgBox "Erreur de mot de passe"
> Exit Sub
> Case 0
> MsgBox "Utilisateur non reconnu !!!", vbCritical, "Attention..."
> Exit Sub
> End Select
>
> DoCmd.OpenForm "Menu Général "
>
> Exit_Entrerr_Click:
> Exit Sub
>
> Err_Entrerr_Click:
> MsgBox Err.Description
> Resume Exit_Entrerr_Click
>
> End Sub
>


Avatar
Leyley39
Maintenant, je peux affirmer que ça fonctionne. Mais ce n'est pas parfait.
Merci à Michel_D, ton dernier code m'a sorti d'affaire.

J'aimerais seulement avoir la textbox du mot de pass vide à l'ouverture du
formulaire. Je me suis rendu compte que si on ouvre le formulaire, c'est le
code du premier utilisateur qui s'affiche et que si j'entre un autre
utilisateur avec son mot de passe, le mot de passe du premier utilisateur se
modifie dans la table. Ca c'est embêtant tout de même.

Je vais essayer de répondre à tes dernières questions Gloops et peut être
arrivé à bout.

Le contrôle source de ma zone texte du mot de passe est CODE ACCES (le nom
du champ de la table PRO SMAEC
La source du formulaire 1 est PRO SMAEC (la dite table où se trouve les
info, donc pas vide).

J'espère que quelqu'un apportera la lumière à mon soucis et que cette grande
aide que vous m'apportez tous permettra d'aider d'autres personnes.
--
Merci de votre aide

Leyley39


"Gloops" a écrit :

Bonjour,

J'ignore si je vais autant taper à côté que l'autre fois, mais quelques
questions me viennent.


Leyley39 a écrit, le 27/08/2008 12:07 :
> J'ai parlé trop vite. Je n'ai qu'un utilisateur de reconnu. C'est un mystère.

Comment faut-il comprendre : il n'apparaît qu'un utilisateur dans la
liste déroulante, ou le mot de passe n'est comparé que pour le premier ?

D'ailleurs, cette question me fait un drôle d'effet, on ne devrait
comparer le mot de passe que pour l'utilisateur sélectionné.

Qu'y-a-t-il dans le RowSource de la liste déroulante ?

>
> Aussi, y aurait-t-il un moyen d'effacer le contenu du contrôle du mot de
> passe à l'ouverture de la basse. Là, le dernier mot de passe entrer s'affiche
> toujours.

Quelle est la propriété ControlSource de la zone de texte ?
Et la propriété RecordSource du formulaire ?

Elles devraient être vides, mais je me méfie ...



Avatar
Gloops
Leyley39 a écrit, le 28/08/2008 17:06 :
Le contrôle source de ma zone texte du mot de passe est CODE ACCES (le nom
du champ de la table PRO SMAEC
La source du formulaire 1 est PRO SMAEC (la dite table où se trouv e les
info, donc pas vide).



Je suggérerais bien de vider les deux : le formulaire n'a pas pour b ut
de saisir des valeurs dans une table.

De cette manière, la zone de texte sera vide, et ça éviter a d'ailleurs
de faire des modifications inattendues dans les mots de passe.
Avatar
Leyley39
Oh super ! Merci Gloops. Tout fonctionne à merveille.

Vous avez tous super. Merci à tous de votre patience et d'avoir pris le
temps de partager vos connaissances.
--

Leyley39


"Gloops" a écrit :

Leyley39 a écrit, le 28/08/2008 17:06 :
> Le contrôle source de ma zone texte du mot de passe est CODE ACCES (le nom
> du champ de la table PRO SMAEC
> La source du formulaire 1 est PRO SMAEC (la dite table où se trouve les
> info, donc pas vide).

Je suggérerais bien de vider les deux : le formulaire n'a pas pour but
de saisir des valeurs dans une table.

De cette manière, la zone de texte sera vide, et ça évitera d'ailleurs
de faire des modifications inattendues dans les mots de passe.



Avatar
Gloops
Leyley39 a écrit, le 29/08/2008 10:00 :
Oh super ! Merci Gloops. Tout fonctionne à merveille.

Vous avez tous super. Merci à tous de votre patience et d'avoir pr is le
temps de partager vos connaissances.



Heureux que ça marche :)
1 2 3 4