Formulaire de recherche sur access avec boite de dialogue

samgi Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
 Tessel75 -
Bonjour,
j'ai cree un formulaire de recherche a partir du quel on doit rechercher des fournisseurs en entrant son numero.

le formulaire de recherche se nome RechercheF avec un bouton valider qui se nome btValider et une zone de texte nome rechercheF et qui doit ouvrire le formulaire T_Fournisseurs en etrant une valeur dans la zone de texte rechercheF et en cliquant sur le bouton valider.

mon probleme c'est que: si la valeur entrer dans la zone de texte du formulaire de recherche n'existe pas dans le formulaire T_Fournisseurs , en cliquant sur le bouton il doit afficher un message qui dit " ce Fournisseurs n'existe pas", si on n'entre rien dans le formulaire de recherche, il doit aussi afficher un message.
tous les instruction que j'ai mis sur le formulaire de recherche ne marchent pas comme prevu. qui peut m'aider a resoudre ce probleme svp.

voici mes bouts de code.
'------------------------------------------------------------
' btvalider_Click
'
'------------------------------------------------------------
Private Sub btvalider_Click()
On Error GoTo btvalider_Click_Err
If (RechercheF) = [No] Then
DoCmd.OpenForm "T_Fournisseurs", acNormal, "", "[No]=[Forms]![RechercheF]![RechercheF]", acReadOnly, acNormal
DoCmd.Close acForm, "RechercheF"
ElseIf IsNull(RechercheF) Then
MsgBox "Entrer le numero du Fournisseur!", vbOKOnly, "Recherche Fourn"
Me.RechercheF.SetFocus
ElseIf Not IsNumeric(RechercheF) Then
MsgBox "La valeur cherchée doit être numérique !", vbExclamation
Me.RechercheF.SetFocus
ElseIf "[No]" <> (RechercheF) Then
MsgBox "Fournisseur n'existe pas!", vbOKOnly, "Recherche prof"
Me.RechercheF.SetFocus
Else
MsgBox "Erreur Inatendue!", vbOKOnly, "Recherche prof"
Me.RechercheF.SetFocus
Exit Sub '(Not IsNull(RechercheF))
End If

btvalider_Click_Exit:
Exit Sub

btvalider_Click_Err:
MsgBox Error$
Resume btvalider_Click_Exit

End Sub

NB: cela fonctionne, mais seulement pour le premier enregistrement du formulaire, pour les autres, il affiche toujours le message "Fournisseur n'existe pas" meme si ce fournisseur existe, dans ce cas que dois je faire.

A voir également:

1 réponse

Tessel75
 
Bonjour,
Si ton code ne tourne pas comme tu veux, la première chose à faire est de rechercher la ligne qui agrippe. Pour cela tu dois le faire tourner pas à pas à la main. (Ouvrir la fenêtre VBA et avancer pas à pas en vérifiant à chaque ligne la valeur que prend la variable, jusqu'à ce qu'il s'arrête seul parce qu'il y a quelque chose qui le bloque. Auparavant, il est nécessaire de neutraliser la ligne "On Error GoTo ....", pour être sûr qu'il s'arrêtera sur la ligne fautive)
Pour ce que tu nous donnes, ton code commence par:
If (RechercheF) = [No] Then

- d'abord: les parenthèses sont inutiles, et comme tu n'as pas définis "RechercheF", VBA le considère comme une variable de type variant
- ensuite, [No] , , tu n'as pas dit ce que c'est, ni dans ton code, ni dans ton message. On peut imaginer qu'il s'agit du contrôle où l'opérateur entre le N° du fournisseur; dans ce cas il faut écrire: Me!No ou Me![No]; sans cela VBA ne peut pas savoir ce qu'est ce champ ou ce contrôle qui arrive tout seul, il considère une valeur nulle.
- Après tu écris la ligne d'ouverture du formulaire "T_Fournisseurs" avec la condition : "[No]=[Forms]![RechercheF]![RechercheF]", mais comme tu as une série de "If" avant les opérations à effectuer, tu ne peux pas savoir où il en est ni quelle est la valeur de la condition d'ouverture à ce moment du processus.
Commence par cela, on verra pour les autres lignes en-dessous.
Bonne suite
0