Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/07/2011, 14h31   #1
Membre régulier
 
Homme Jacques
Inscription : août 2005
Messages : 441
Détails du profil
Informations personnelles :
Nom : Homme Jacques
Âge : 66
Localisation : France, Val d'Oise (Île de France)

Informations forums :
Inscription : août 2005
Messages : 441
Points : 77
Points : 77
Par défaut Syntaxe dans un Dlookup

Bonjour,

Cette fonction me donne une erreur « incompatibilité de type » sur la ligne Sélection, et je n’arrive pas à trouver la syntaxe exacte.

Code :
1
2
3
Public Function GetMailExp(strIntitule As String, boolSelection As Boolean) As String
 
GetMailExp = DLookup("[Valeur]", "tbl Mail Expéditeurs", "[intitule]='" & strIntitule & "'" And ("Selection") = boolSelection)
Ou se trouve mon erreur ?

De même au début j’avais entouré le champ Selection par [ ] mais j’avais cette erreur
« Nom externe non défini »

Quelles en sont les raisons ?

Merci pour votre aide.

Salutations
jmde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2011, 17h18   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Plusieurs choses à tester :


Code :
GetMailExp = DLookup("[Valeur]", "[tbl Mail Expéditeurs]", "[intitule]='" & strIntitule & "'" And [Selection] = " & boolSelection & ")
Mettre le nom du domaine entre crochet à cause des espaces, et sortir la variable boolSelection pour l'intégrer par concaténation.

Je pense que cela devrait être mieux.

Sinon un peu de lecture : Les Fonctions de Domaine dans Access

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2011, 23h37   #3
Membre régulier
 
Homme Jacques
Inscription : août 2005
Messages : 441
Détails du profil
Informations personnelles :
Nom : Homme Jacques
Âge : 66
Localisation : France, Val d'Oise (Île de France)

Informations forums :
Inscription : août 2005
Messages : 441
Points : 77
Points : 77
Bonsoir,

J’avais déjà essayé cette syntaxe et lu le bon article sur les fonctions de domaine.
Cela ne fonctionne pas, et comme je l’ai écrit sur le message initial
Citation:
De même au début j’avais entouré le champ Selection par [ ] mais j’avais cette erreur
« Nom externe non défini »
Le curseur se place sur Selection est l’erreur « Nom externe non défini »
s’affiche.

J’appelle la fonction par :
Code :
Forms!frm_EditeM.txtDe = GetMailExp("Email", True)
Les champs de la table sont:
Intitule : texte (sans clé)
Valeur : texte
Selection : Oui/Non

Exemples d'enregistrements:

1er Enrg
Intitule = Email Valeur = aaaa@free.fr Selection = True

2ème Enrg
Intitule = Email Valeur = bbbb@neuf.fr Selection = False

De même par courtoisie pour Jean-Philippe André (jpcheck) je précise que je me suis inspiré
partiellement de son tuto sur l’utilisation possible d’une table de paramètre.

Salutations
jmde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 13h09   #4
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 651
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 651
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
Bonjour,

Que te renvoie l'instruction :
Code :
Debug.Print Nz(DLookup("[Valeur]", "[tbl Mail Expéditeurs]", "[intitule]='" & strIntitule & "'" And [Selection] = " & boolSelection & "), "Pas glop !")
et celle-ci :
Code :
Debug.Print Nz(DLookup("[Valeur]", "[tbl Mail Expéditeurs]", "[intitule]='" & strIntitule & "'" And [Selection] = " & CInt(boolSelection) & "), "Pas glop !")
Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 15h35   #5
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

Je verrai bien :

Code :
GetMailExp = DLookup("[Valeur]", "[tbl Mail Expéditeurs]", "[intitule]='" & strIntitule & "' And [Selection]='" & boolSelection & "'")
Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 15h47   #6
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 651
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 651
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
Citation:
Envoyé par fbtsra Voir le message
Je verrai bien :
Code :
...And [Selection]='" & boolSelection & "'")
Avec un champ Selection de type Boolean...
Allons, allons...
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 16h17   #7
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
C'est vrai ... que pensez vous alors de :

Code :
GetMailExp = DLookup("[Valeur]", "[tbl Mail Expéditeurs]", "[intitule]='" & strIntitule & "' And [Selection]=" & boolSelection & "")
Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 00h40   #8
Membre régulier
 
Homme Jacques
Inscription : août 2005
Messages : 441
Détails du profil
Informations personnelles :
Nom : Homme Jacques
Âge : 66
Localisation : France, Val d'Oise (Île de France)

Informations forums :
Inscription : août 2005
Messages : 441
Points : 77
Points : 77
Bonsoir argyronet,

Les deux instructions me renvoi cette erreur:

Salutations
Images attachées
Type de fichier : jpg Capture2.JPG (42,0 Ko, 5 affichages)
jmde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 04h32   #9
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Ta table tbl Mail Expéditeurs comporte bien un champ Selection ?

Ce champ (s'il existe) est de quel type ?

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 08h28   #10
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour jmde,

D'un naturel curieux et sans réponse sur le sujet, avez vous pu tester :

Code :
GetMailExp = DLookup("[Valeur]", "[tbl Mail Expéditeurs]", "[intitule]='" & strIntitule & "' And [Selection]=" & boolSelection & "")
car il me semble à mon humble niveau qu'il y a une erreur de syntaxe sur la clause de recherche initiale ...

Merci de votre retour

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 09h42   #11
Membre régulier
 
Homme Jacques
Inscription : août 2005
Messages : 441
Détails du profil
Informations personnelles :
Nom : Homme Jacques
Âge : 66
Localisation : France, Val d'Oise (Île de France)

Informations forums :
Inscription : août 2005
Messages : 441
Points : 77
Points : 77
Bonjour fbtsra,

Toutes mes excuses pour ne pas avoir répondu, ta syntaxe me donne cette erreur :

Erreur d’exécution Opération annulée.

Salutations
jmde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 09h43   #12
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 651
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 651
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
Humm, Je m'en doutais, et c'est pour cela que je t'ai posté cette suggestion.
Dans l'absolu, tu aurais du avoir un "Pas glop !"
Selection, Selection... un mot clé réservé non ?
Et si tu le renommais ce champ avec un nom un peu moins propriétaire, qu'est ce que ça donne ?

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 09h46   #13
Membre régulier
 
Homme Jacques
Inscription : août 2005
Messages : 441
Détails du profil
Informations personnelles :
Nom : Homme Jacques
Âge : 66
Localisation : France, Val d'Oise (Île de France)

Informations forums :
Inscription : août 2005
Messages : 441
Points : 77
Points : 77
Bonjour Philippe,

Oui le champ selection existe bien.

Salutations
Images attachées
Type de fichier : jpg Sans titre.jpg (111,5 Ko, 7 affichages)
jmde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 11h13   #14
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Bonjour,

On peut commencer le débogage par un
Code :
debug.print "[intitule]='" & strIntitule & "' And [Selection]=" & boolSelection
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 11h18   #15
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Merci de votre reponse.

Il manque en effet une conversion de donnees car vous appelez la fonction avec False-True

Ajoutez un CInt devant BoolSelection de la commande DLookup

Ca fonctionne sur A2000

Desole de ne pouvoir ecrire le code complet (plus de reseau, envoi par smartphone)

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 15h32   #16
Membre régulier
 
Homme Jacques
Inscription : août 2005
Messages : 441
Détails du profil
Informations personnelles :
Nom : Homme Jacques
Âge : 66
Localisation : France, Val d'Oise (Île de France)

Informations forums :
Inscription : août 2005
Messages : 441
Points : 77
Points : 77
Bonjour et merci à tous,

Ce n’était pas le nom du champ selection la cause du problème.
Il fallait bien un Cint, voici la syntaxe exacte :

Code :
GetMailExp = DLookup("[Valeur]", "[tbl Mail Expéditeurs]", "[intitule]='" & strIntitule & "' And [Selection]=" & CInt(boolSelection) & "")
Par contre pourquoi la syntaxe d’argyronet ne fonctionne pas ?

Code :
Debug.Print Nz(DLookup("[Valeur]", "[tbl Mail Expéditeurs]", "[intitule]='" & strIntitule & "'" And [Selection] = " & CInt(boolSelection) & "), "Pas glop !")
Je mettrais plus tard la mention Résolu.

Salutations
jmde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 15h39   #17
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Le code :

Code :
Debug.Print Nz(DLookup("[Valeur]", "[tbl Mail Expéditeurs]", "[intitule]='" & strIntitule & "'" And [Selection] = " & CInt(boolSelection) & "), "Pas glop !")
ne fonctionne pas car il conserve l'erreur de syntaxe initiale à savoir pb de concaténation sur les chaines qui commence à "And [Selection] = " qui est en dehors de la chaine.

Bonne continuation.

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 16h04   #18
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 651
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 651
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
Citation:
Envoyé par jmde
Par contre pourquoi la syntaxe d’argyronet ne fonctionne pas ?
Code :
And [Selection] = " & CInt(boolSelection) & ")
C'est juste un mauvais copié collé et donc de l'inattention de ma part.
il aurait fallu écrire :
Code :
And [Selection] = " & CInt(boolSelection) & "")
ou bien
Code :
And [Selection] = " & CInt(boolSelection))
En revanche, le principe suggestif initial était bon - heureusement pour moi
Bref, n'utilisant jamais de fonction de domaine, je m'accorde le droit d'avoir fait une omission.

Bonne fin de journée.

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 16h50   #19
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Je me vois contraint de contredire Argyronet (en toute amitié ...et humilité !) :

Les codes :

Code :
And [Selection] = " & CInt(boolSelection) & "")
et

Code :
And [Selection] = " & CInt(boolSelection))
ne peuvent fonctionner car pb d'intégration à la chaine de recherche. Il faut donc inverser pour que cela fonctionne, à savoir placer "And [Selection]=" dans la chaine et en sortir le critère "CInt(boolSelection)":

Code :
"And [Selection] = " & CInt(boolSelection) & "")
ou

Code :
"And [Selection] = " & CInt(boolSelection))
la faute en fait au qui précède ...

A bientôt,
Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 17h20   #20
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 651
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 651
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
Humm, je suis comme la fosse
Que tu écrives :
Code :
DLookup("[MonChampCible]","MaTable1","ChampTexte '"& "ValeurTexte" & "' AND [ChampNumérique]=" & -1 & "")
ou
Code :
DLookup("[MonChampCible]","MaTable1","ChampTexte '"& "ValeurTexte" & "' AND [ChampNumérique]=" & -1)
C'est idem...
Dès qu'il y a un numérique (booléen ou autre) pas besoin de terminateur.
De plus, je n'ai pas mis de caractère 39 dans ma suggestion, j'ai juste copié la formule en apportant le CInt(Bool).

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h32.


 
 
 
 
Partenaires

Hébergement Web