Erreur code vba
Résoluj ai ecrit un code vba mais il me donne une erreur lors de l execution est ce que vous pouvvez maider a la corriger???
merci d avance
Configuration: Windows XP Internet Explorer 7.0
43 réponses
Un code VBA génère une erreur d'exécution lors de son exécution, et le problème central est lié à la ligne Me.Requery dans une logique qui implique l'ouverture conditionnelle de formulaires. Des éléments de réponse essentiels indiquent que le souci est partiellement résolu mais qu'une erreur subsiste à la ligne Me.Requery, sans qu'une cause claire soit précisée. La discussion évoque aussi des approches liées à l'ouverture conditionnelle des formulaires (menu1, menu) selon le type d'utilisateur, et des tentatives d'authentification qui influent sur le flux. En complément, plusieurs contributions témoignent d'échanges hétérogènes et d'aspects hors sujet sans impact direct sur la résolution, mais la ligne problématique reste au cœur de cet échange et mérite une correction ciblée.
-
Faire ceci:
Private Sub Commande8_Click()
Static i As Byte
Dim rs As Recordset
********Ajouter ceci*************************
Dim user AS String
***********************************
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT [LOGIN],[PASSWORD],[USER] FROM USERS WHERE LOGIN = '" & Me.LOGIN & "' AND [PASSWORD]='" & Me.PASSWORD & "';")
If Not rs.EOF Then
**************************************************
****Récupérer le user et l'afficher**************
user = rs("USER")
************Gouli lia wach hwa hadak le user ou pas******
MsgBox(user)
If User = "administrateur" Then
stDoName = "menu1"
DoCmd.OpenForm "menu1", acNormal, , , , acWindowNormal
End If
If User = "limite" Then
DoCmd.OpenForm "menu", acNormal, , , , acWindowNormal
stDoName = "menu"
DoCmd.OpenForm "menu", acNormal, , , , acWindowNormal
End If
DoCmd.Close acForm, "accés"
Else
MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
i = i + 1
End If
If i = 3 Then
MsgBox "Vous avez dépassé le nombre de tentatives autorisés", vbCritical
DoCmd.Quit
End If
End Sub -
nn
makhadmatch ba9i le meme prb ma3raftch chno ndir bach yat7al l formulaire selon user
ila can user=administrateur yat7l l menu1 sinon yat7al menu
Private Sub Commande8_Click()
Static i As Byte
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT [LOGIN],[PASSWORD],[USER] FROM USERS WHERE LOGIN = '" & Me.LOGIN & "' AND [PASSWORD]='" & Me.PASSWORD & "';")
If Not rs.EOF Then
If User = "administrateur" Then
stDoName = "menu1"
End If
DoCmd.OpenForm "menu1", acNormal, , , , acWindowNormal
If User = "limite" Then
DoCmd.OpenForm "menu", acNormal, , , , acWindowNormal
stDoName = "menu"
End If
DoCmd.Close acForm, "accés"
Else
MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
i = i + 1
End If
If i = 3 Then
MsgBox "Vous avez dépassé le nombre de tentatives autorisés", vbCritical
DoCmd.Quit
End If
End Sub
chouf ila banlak chi erreur -
ça marche ?
-
Donc au niveau de cette ligne il faut récupérer aussi la variable "USER"
Set rs = db.OpenRecordset("SELECT [LOGIN],[PASSWORD] FROM USER WHERE LOGIN = '" & Me.LOGIN & "' AND [PASSWORD]='" & Me.PASSWORD & "';")
C'est à dire :
select login, password, user into :login-loc , :password-loc, :user-loc where login = me.login and password = Me.password.
"Choufi ntia la syntaxe de la requette ok"
login-loc, password-loc et user-loc sont des variables locales à déclarer (dim login-loc.....par exemple) pour stocker les info issus de la base ensuite:
Afficher "user-loc " (Msgbox(user-loc )) chofi achnou fiha 3ad diri les tests.
si user-loc = "administrateur"
ouvrir menu1
sinon
ouvrir menu
endif
Hani 3ta9tek wakha ntia 3yana m3a rassek gelna lik sifti hadakchi dialek f mail mabritich (c'est: amine-sys).
Bon thlay o bslama 3lik -
oui f la meme table
-
wach kayna m3a "LOGIN" et "PASSWORD" f la même table?
-
hadik la variable rah c'est un champs de la table tu vois???ma3raft mandir 3ta9ni rah mab9a walo khassni nkaml l'application
chokran -
Donc ta variable "USER" mafiha walou hadchi li gelna lik. choufi fine jebti hadik la variable.
-
Faites ceci:
MsgBox (User ) /////Pour voir le contenu de ta variable d'abord:
If User = "administrateur" then
menu1.Show
menu.Hide
Else
menu1.Hide
menu.Show
End if -
Aprés les if les deux formulaires se lancent : c'est à dire tes lignes sont correctes le problème donc c'est au niveau de ton test: Afficher la variable user et voir s'elle prend bien les valeurs "administrateur" et "limite"
Ton test ça marche pas,-
oui la variable user de la table prend les valeurs administrateur et limite
voila le code
est ce qu'on doit mettre les 2 lignes aprés if ou quoi?????????????????????????
:Private Sub Commande4_Click()
Static i As Byte
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT [LOGIN],[PASSWORD] FROM USER WHERE LOGIN = '" & Me.LOGIN & "' AND [PASSWORD]='" & Me.PASSWORD & "';")
If Not rs.EOF Then
If User = "administrateur" Then
stDoName = "menu1"
End If
DoCmd.OpenForm "menu1", acNormal, , , , acWindowNormal
If User = "limite" Then
stDoName = "menu"
End If
DoCmd.OpenForm "menu", acNormal, , , , acWindowNormal
DoCmd.Close acForm, "Formulaire1"
Else
MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
i = i + 1
End If
If i = 3 Then
MsgBox "Vous avez dépassé le nombre de tentatives autorisés", vbCritical
DoCmd.Quit
End If
End Sub
-
-
le probléme n est pas dans les variables je crois le probléme réside dans ces lignes
DoCmd.OpenForm "menu1", acNormal, , , , acWindowNormal
DoCmd.OpenForm "menu", acNormal, , , , acWindowNormal
je ne sais pas exactement ou les pllacer
car quand je les mis aprés les if les 2 formulaires se lancent et qund je les place dans if ils ne se lancent pas c ca le prb -
Tu dit que les deux formulaires se lancent tous les deux:
Ton message:
mais quand j'execute les deux formulaires se lancent les deux a la fois quelque soit le type de user il parait qu il ya une erreur est ce que je peux t envoie le code et m aider a le corriger??
Maintenant tu me dit qu'aucun de tes formulaires ne se lance!!! Bon est ce que ta variable cotient d'abord "administrateur" et "limie" ? est ce que tu l'a affiché ? -
ok
-
Afficher la variable "USER" et voir ce qu'il y' a de dans. supprimer le "é" de : "limité"
-
non pas l'erreur de l autre fois
et oui biens sur je suis en bts gi meis je n ai jamais etudié vba et j ai arriver a réaliser plusieurs choses compris??-
-
@nvarosje sais merci
-
@sanaeNon tu sais pas.
Tu n'eprouve aucun égard envers les personnes.
Tu veux juste réaliser ton application pour que ton responsable ou tuteur soit content.
Mais ce n'est pas l'essentiel.
Retiens bien cela dans ta tête. -
@nvarospour qui tu es faché ou koi je suis vraiment désolé si je t'ai dit quelque chose de mal tu t enfou de ce que ja dit désolé
m ai je n ai pas le choix je doit le réaliser pas pour que le tuteur soit content mais dans ma soutenance je doit présenter une bonne application -
@nvarosmais il me parait que tu ne vex pas m aider
c pas grave je vais trouver quelqu un d autre
-
-
le voila
Private Sub Commande4_Click()
Static i As Byte
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT [LOGIN],[PASSWORD] FROM USER WHERE LOGIN = '" & Me.LOGIN & "' AND [PASSWORD]='" & Me.PASSWORD & "';")
If Not rs.EOF Then
If User = "administrateur" Then
stDoName = "menu1"
DoCmd.OpenForm "menu1", acNormal, , , , acWindowNormal
End If
If User = "limité" Then
stDoName = "menu"
DoCmd.OpenForm "menu", acNormal, , , , acWindowNormal
End If
DoCmd.Close acForm, "Formulaire1"
Else
MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
i = i + 1
End If
If i = 3 Then
MsgBox "Vous avez dépassé le nombre de tentatives autorisés", vbCritical
DoCmd.Quit
End If
End Sub-
-
@nvarosje crois que toi meme tu n a pas arriver a la trouver n est ce pas pcq je n ai recu aucune aide de ta part!!
-
-
d accord mais tu vas me répondre le plus vite possible stp pcq ca doit etre une petite erreur merci
je te l envoie mnt -
Je travaille je peux pas accéder au Forum toute la journnée ok
-
mais comment tu me répond mnt??
-
Sur mon mail j'ai plus accés au forum. Tu me comprend j'éspère
- 1
- 2
- 3