Forum - Questions générale - Sujet n°588

[]
Nombre de membres 1 membre
Connectés : ( personne )
 

La Charte du Forum - La Charte du Forum

Forum - Forum
Questions générale - Questions générale


clos par 3Stone le 12/04/2012 : 12:01  Sujet n° 588  Access_2007 - Filtre multicritères VBA / Dates

le 02/04/2012 : 09:36
par Snoopy

Anonyme

visiteur

Bonjour à toutes / tous,

Grâce à  l'article fort intéressant de Raymond Sénèque (http://officesystem.access.over-blog.com/article-16037884.html) j'ai pu créer un filtre multicritères tout à fait fonctionnel (y compris avec des valeurs nulles) pour des valeurs en format texte ou numérique.

Par contre, impossible de trouver la solution pour une valeur en format date (Between date_debut and date_fin).

J'ai formaté les dates de référence en format "américain" et introduit les "#" :

myFilter = myFilter & ("[MISSION_DATE] BETWEEN #" + Format(Forms!F_SELECTION_RECHERCHE!date_debut, "dd/mm/yyyy") + "# AND #" + Format(Forms!F_SELECTION_RECHERCHE!date_fin, "dd/mm/yyyy") + "# and ")

mais j'obtiens un message d'erreur : "Erreur d'exécution 3075 / Erreur de syntaxe dans la date dans l'expression "[MISSION_DATE] BETWEEN #01.01.2012# AND #30.03.2012# ".

Outre le fait que Windows rétablit, vraisemblablement,  le format de base par le biais des "paramètres régionaux", je ne vois pas où est l'erreur ?

Merci de votre aide !

Snoopy
Ecrire à Snoopy  sujet clos  Haut
Réponse n° 1
--------
le 03/04/2012 : 02:08
par 3Stone

Anonyme

Administrateur

Salut,
 
Citation :

Grâce à l'article fort intéressant de Raymond Sénèque...

 
Oui, cela date de 2008, alors que ceci date de... 2005 wink

Ceci dit, si tu t'inspire d'un code, il faut aussi respecter le codage en général.
Le signe de concaténation sous VBA est le signe & et non le +
Ensuite, lorsque l'on fait référence à une date, il faut la présenter sous le format US (donc Mois-Jour-Année).

Cordialement,
Pierre(3stone)


3stone

  clos par 3Stone le 12/04/2012 : 12:01  Haut
Réponse n° 2
--------
le 03/04/2012 : 08:46
par Snoopy

Anonyme

visiteur
Merci de votre réponse.
 
Citation : 3Stone

Ceci dit, si tu t'inspire d'un code, il faut aussi respecter le codage en général.
Le signe de concaténation sous VBA est le signe & et non le +

 
Je ne suis certes pas "MVP Office-Access" mais je ne suis pas non plus un néophyte. Par contre, je ne m'imagine pas avoir la science infuse et je suis ouvert à toutes les nouvelles connaissances que je peux acquérir.

Donc, si je suis bien au courant que le signe de concaténation dans VBA est "&", l'article de R. Sénèque (même s'il date de ... 2005 !) permet d'apprendre que :

Citation : R_Seneque

L’opérateur + placé dans les expressions conditionnelles indique de retourner une valeur Null pour l’expression entière si un de ses membres est Null. Donc si le champ de sélection est Null, toute l’expression sera null et rien ne sera ajouté dans myFilter.

 
ce que ne permet justement pas le "&" !

D'autre part, votre réponse n'indique pas comment empêcher les paramètres régionaux de Windows de rétablir automatiquement le format "local" d'une date formatée en "US" !?

Bonne journée !

Snoopy
Ecrire à Snoopy   clos par 3Stone le 12/04/2012 : 12:01  Haut
Réponse n° 3
--------
le 03/04/2012 : 11:44
par 3Stone

Anonyme

Administrateur

Bonjour,
 
Citation :

l'article de R. Sénèque...

 
Primo, dans cette concaténation, une date ne peut en aucun cas avoir de valeur NULL!
On obtiendrait immédiatement une erreur.

Secondo, le signe de concaténation pour le VBA Access est et reste le signe &, même si pour quelques cas spéciaux le signe + peut être utilisé.

Tertio, parfois, Raymond prétendait même l'inverse de ce qu'affirmait l'équipe de développeurs d'Access biggrin
 
Citation :

n'indique pas comment empêcher les paramètres régionaux de Windows

 
SI! J'ai spécifié qu'il est obligatoire de présenter les dates au format US!!!
Et là, même Raymond n'ose pas affirmer le contraire d

Tu dis ne pas être néophyte, c'est étonnant, car cette histoire de date au format US est une des premières choses à apprendre lorsque l'on touche au VBA...
et on ne recode pas l'OS pour modifier cela wink

Cordialement,
Pierre(3stone)


3stone

  clos par 3Stone le 12/04/2012 : 12:01  Haut
actif sujet actif   clos sujet clos   Important! Important!   Nouveau Nouveau message   -   Rectifier Rectifier message   Clôturer Clôturer sujet   Remonter Remonter
[]
Catégories de discussion  Forum 



Haut