Critere !

leubaa Messages postés 24 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 20 mai 2005 - 19 août 2003 à 14:09
leubaa Messages postés 24 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 20 mai 2005 - 22 août 2003 à 13:58
Bonjour,

J'ai un petit problème Access-VBA.

Dans un formulaire, j'ai une liste (liste de nom), et un champ qui permet de "chercher" un enregistrement

ex si je tape "c" dans le champ et que je clique sur mon boutton "positionner" le premier enregistrement commencant par C devrait etre selectionner ...

Cependant mon ode VBA ne fonctionne pas et je n'en trouve pas la cause ...

le voici

Function Positionner(num)
Dim bds As Database
Dim donnees As DAO.Recordset
Dim Formulaire As Form, critere, champ
Set bds = CurrentDb()
Set donnees = bds.OpenRecordset("Adresses")
Set Formulaire = Forms![Maintenance Adresses]
critere = "donnees![Adr_nom] >= '" & Formulaire![Nom] & "'"
donnees.FindFirst (critere)
If Not (donnees.NoMatch) Then
num = donnees("Cod_Adresses")
Formulaire![Politesse] = donnees("Cod_Pol")
Formulaire![Nom] = donnees("Adr_Nom")
Formulaire![Prenom] = donnees("Adr_Prenom")
Formulaire![Adresse1] = donnees("Adr_Adresse1")
Formulaire![Adresse2] = donnees("Adr_Adresse2")
Formulaire![Localite] = donnees("Cod_Localite")
Formulaire![Telephone] = donnees("Adr_Telephone")
Formulaire![Portable] = donnees("Adr_Portable")
Formulaire![Fax] = donnees("Adr_Fax")
Formulaire![E-Mail] = donnees("Adr_E-Mail")
Formulaire![SiteWeb] = donnees("Adr_SiteWeb")
Formulaire![Statut] = donnees("Cod_Statut")
Formulaire![Manifestations] = donnees("Cod_Manifestations")
Formulaire![Participation] = donnees("Adr_ManifParticipants")
Formulaire![Nombre] = donnees("Adr_ManifNbre")
Formulaire![DateNaissance] = donnees("Adr_DateNaissance")
Formulaire![DateEntree] = donnees("Adr_DateEntree")
Formulaire![DateSortie] = donnees("Adr_DateSortie")
End If
donnees.Close
End Function

Le paramètre de la fonction est le nom de la liste

merci

a+

17 réponses

EddiePonpon Messages postés 33 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 31 août 2005
19 août 2003 à 15:16
bonjour,

Le Problème vient sûrement de formulaire![Nom] qui ne doit pas te renvoyer le champ de ton recordset mais plutôt les nom de ton formulaire. Essaie de modifier le nom de ton controle par Formulaire![NomCritere] par exemple.

Eddie Ponpon is still alive :clown)
0
leubaa Messages postés 24 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 20 mai 2005
19 août 2003 à 15:31
Le problème ne vient pas de formulaire![nom], car dans ce champ on "rentre" la chaine a rechercher !

Le problème se situe au niveau du premier membre du critère

donnnees![Adr_nom] il ne trouve rien


Si je cherche "dupont" la valeur de critere est la suivante :

critere = "'donnees![Adr_nom] >= 'Dupont'"

et il plante !!!!!
0
EddiePonpon Messages postés 33 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 31 août 2005
19 août 2003 à 16:19
Essaie ton critere Comme ça
critere = "donnees![Adr_nom] Like '" & Formulaire![Nom] & "*'"

Eddie Ponpon is still alive :clown)
0
leubaa Messages postés 24 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 20 mai 2005
20 août 2003 à 09:53
Le problème vient de la zone donnees![adr_nom]

Lors de l'exécution il trouve des valeurs pour tout, sauf pour donnees![Adr_nom] ou il ne trouve rien du tout don mon critère n'est pas valide !!!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
EddiePonpon Messages postés 33 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 31 août 2005
20 août 2003 à 11:19
Fait un msgbox de ton critere avant ton donnees.findfirst (critere) pour voir ce qu'il cherche réellement
Eddie Ponpon is still alive :clown)
0
leubaa Messages postés 24 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 20 mai 2005
20 août 2003 à 11:49
Exemple si je tape dans mon champ de recherche "MONNET"

Le critere a la valeur suivante :

Critere = "donnees![Adr_nom] >= 'MONNET'"

donnees![Adr_Nom] fait reference aux element Adr_Nom de ma table adresses. Dans les autres parties du code cela fonctionne, mais dans ce cas du critere cela ne fonctionne pas et je ne comprends pas pourquoi !!!!
0
EddiePonpon Messages postés 33 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 31 août 2005
20 août 2003 à 12:02
Je viens de recréer ton cas dans une base Access 2002 et si j'enlève le nom de la table dans le critère ça passe, alors que si je le laisse ça plante
critere="[Adr_nom] >= '" & Formulaire![Nom] &"'"

Eddie Ponpon is still alive :clown)
0
leubaa Messages postés 24 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 20 mai 2005
20 août 2003 à 12:07
Le problème c'est que je suis sous Access 2000 !!!!

tu crois que c'est la meme chose ?
0
EddiePonpon Messages postés 33 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 31 août 2005
20 août 2003 à 13:50
Désolé je n'es pas d'ACCESS 2000
mais je viens de tester sous 97 et ça passe comme ça :

Function Positionner(num)
Dim bds As Database
Dim donnees As Recordset
Dim Formulaire As Form, critere, champ
Set bds = CurrentDb()
Set donnees = bds.OpenRecordset("Adresses",DB_OPEN_DYNASET)
Set Formulaire = Forms![Maintenance Adresses]
critere = "[Adr_nom] >= '" & Formulaire![Nom] & "'"
donnees.FindFirst (critere)

Eddie Ponpon is still alive :clown)
0
leubaa Messages postés 24 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 20 mai 2005
20 août 2003 à 14:05
Oui j'ai pris ce code d'une base access 97 que j'avais developpe il y a plusieurs annees !!!

Mais je ne comprends pas pourquoi cela ne fonctiionne pas sous Access 2000 !!!!

Je deviens fou !!!!!
0
EddiePonpon Messages postés 33 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 31 août 2005
20 août 2003 à 14:29
Reporte les modifications que j'ai faites aux ligne 3 6 et 8
Eddie Ponpon is still alive :clown)
0
leubaa Messages postés 24 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 20 mai 2005
20 août 2003 à 14:35
Sous access 2000 il y a la versionDAO 3.6 ... donc si tu tapes simplement recordeset il ne reconnait pas le type. De meme pour OpenRecordset("Adresses", db.OpenDynaset)

Donc cela ne fonctionne pas .. et ca uniquement sous access 2000
0
EddiePonpon Messages postés 33 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 31 août 2005
20 août 2003 à 14:46
As-tu essayé de simplement enlever le nom de ta table dans le critere ?
critere = "[Adr_nom] >= '" & Formulaire![Nom] & "'"

Eddie Ponpon is still alive :clown)
0
leubaa Messages postés 24 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 20 mai 2005
20 août 2003 à 14:52
Oui ... je crois que j'ai essaye toutes les combinaisons possibles et inimaginables au moins 10x !

Je ne comprends vraiment pas pourquoi ca cloche. et ce problème apparait dans plusieurs formulaire ... donc c'est la m ...+
0
EddiePonpon Messages postés 33 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 31 août 2005
20 août 2003 à 14:57
Au fait, désolé de demander ça si tard, mais ça plante comment ?

Eddie Ponpon is still alive :clown)
0
leubaa Messages postés 24 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 20 mai 2005
21 août 2003 à 10:05
En fait lorsque que je veux exécuter ma macro (ca passe a la compilation),il plante sur la ligne

donnees.FindFirst (critere)

car le critere est mal définit ([Adr_Nom]>= 'chaine?)

...
0
leubaa Messages postés 24 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 20 mai 2005
22 août 2003 à 13:58
J'ai trouve une solution en utilisant une requete sql

merci de ton aide !
0
Rejoignez-nous