VBA - Requête Multicritères - Aucun Filtrage Des Données N'Est Effectué

Schnee067 Messages postés 14 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 9 février 2010 - 30 janv. 2010 à 16:46
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 31 janv. 2010 à 16:59
"Attention message déjà posté dans requête quelque part sur le forum, personne sur le post"
Désolé, mais c'est urgent donc je l'ai mis une seconde fois ici !!!

Bonjour,

Je reviens vers vous pour avoir de l'aide. Je suis bloqué.

Je m'explique.

Sous access 2007, j'ai réussi à créer plusieurs requête pour effectuer des recherches multicritères.
Voici le détail:

Recherches:

1/ Par Année En Cours
* [Données Principales Enregistrement]![JOUR DU TRAVAIL]
** Critière: Année([JOUR DU TRAVAIL]) = Année(Maintenant())

2/ Par Année Précédente
* [Données Principales Enregistrement]![JOUR DU TRAVAIL]
** Critière: Année([JOUR DU TRAVAIL]) = Année(Date())-1

3/ Par Mois En Cours
* [Données Principales Enregistrement]![JOUR DU TRAVAIL]
** Critière: Mois([JOUR DU TRAVAIL]) = Mois(Maintenant())

4/ Par Mois Précédent
* [Données Principales Enregistrement]![JOUR DU TRAVAIL]
** Critière: Mois([JOUR DU TRAVAIL]) = Mois(Date())-1

5/ Par Date Précise
* [Données Principales Enregistrement]![JOUR DU TRAVAIL]
** Critière: Entre [Choisir La Date De Début] Et [Choisir La Date De Fin]

6/ Par Heure De Début
* [Données Principales Enregistrement]![HEURE DE DEBUT]
** Critière: Comme [Choisir L'Horaire De Début - Exemple 08:00 Ou Pour Tous Choisir *] & "*"


7/ Par Heure De Fin
* [Données Principales Enregistrement]![HEURE DE FIN]
** Critière: Comme [Choisir L'Horaire De Fin - Exemple 18:00 Ou Pour Tous Choisir *] & "*"

8/ Par Employeur
* [Données Principales Enregistrement]![Nom Des Employeurs]
** Critière: [Nom Des Employeurs] & "*"

9/ Par Remarques
* [Données Principales Enregistrement]![REMARQUES]
** Critière: Comme [Choisir Un Mot Ou Une Expression - Recherche Dans Le Champs Remarques Ou Pour Tous Choisir *] & "*"

10/ Par Type De Travail
* [Données Principales Enregistrement]![TYPE DE TRAVAIL]
** Critière: Comme [Choisir Un Type De Travail Ou Pour Tous Choisir *] & "*"

11/ Par Véhicule
* [Données Principales Enregistrement]![VEHICULE UTILISE]
** Critière: Comme [Choisir Le Véhicule Utilisé - Exemple MOTO Ou PEUGEOT 309 Ou Pour Tous Choisir *] & "*"

Mon soucis est que j'aimerai mettre l'ensemble de ces critères en VBA qui me permet ensuite de les confiés à divers champs et cases à cocher.

Pour ce faire, j'ai créé un formulaire avec divers champs et cases à cocher, mais quand je confie les critères aucun tri n'est effectué. Je précise toutefois que les données apparaissent bien dans le formulaire dans la listbox prévu à cet effet, mais sans tri.

Voici pour exemple ce que j'ai tenté de réaliser mais qui ne fonctionne pas:


Private Sub Valider_Click()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT [JOUR DU TRAVAIL], [Nom des Employeurs], [HORAIRE DEBUT], [HORAIRE FIN], [VEHICULE UTILISE], [TYPE DE TRAVAIL], [INTEGRATION CUMUL HEURE PAR SEANCE], [REMARQUES] FROM [Données Principales Enregistrement] Where [Données Principales Enregistrement]![N°] <> 0 "

If Not Me.ChkAnCours Then
SQL SQL & "And [Données Principales Enregistrement]![JOUR DU TRAVAIL] Where (((Year([JOUR DU TRAVAIL])) Year(Now())))"
End If

If Not Me.FTxtRemarques Then
SQL = SQL & "And [Données Principales Enregistrement]![REMARQUES] like '*" & Me.FTxtRemarques & "*' "
End If

End Sub

Les autres ne sont pas encore marqués car ceux précités ne fonctionnant déjà pas.

Le but de cette manoeuvre est de renseigner divers champs dans un formulaire et à la fin de la saisie appuyer sur le bouton valider pour filtrer les données puis appuyer sur un autre bouton pour l'exporter vers une feuille d'Etat (déjà crée) de access (ceci n'étant pas encore gagné car ça non plus je ne sais pas faire).

Serait-il possible si quelqu'un à quelques minutes de bien vouloir m'aider à traduire les critères de recherches en VBA et surtout de m'expliquer s'il peut avec les informations fournies pourquoi les données ne sont pas filtrées apprès avoir appuyé sur le bouton valider. Et si vraiment quelqu'un pourra simplement encore me donner une petite idée pour l'exportation des données dans une feuille d'Etat !!!

Merci pour tout. Je sens que je m'approche de la fin de mon petit programme, donc merci encore de donner de votre temps pour m'aider !!!!!!!

Cordialement Schnee067.



On dit que la vie est un long fleuve tranquille. Mais quand je vois le temps qu'il me faut pour créer un programme et la sueur dépensé, cette phrase devient alors incompréhensible....

3 réponses

Schnee067 Messages postés 14 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 9 février 2010
30 janv. 2010 à 20:06
Bon j'ai réussi à avancer un peu.

Les formules suivantes fonctionnes:
Private Sub Valider_Click()

Me.LstRésultat.RowSource = "SELECT [Données Principales Enregistrement].[JOUR DU TRAVAIL], [Données Principales Enregistrement].[Nom Des Employeurs], [Données Principales Enregistrement].[HORAIRE DEBUT], [Données Principales Enregistrement].[HORAIRE FIN], [Données Principales Enregistrement].[INTEGRATION CUMUL HEURE PAR SEANCE], [Données Principales Enregistrement].[TYPE DE TRAVAIL], [Données Principales Enregistrement].[VEHICULE UTILISE], [Données Principales Enregistrement].[REMARQUES] " & _

"FROM [Données Principales Enregistrement] " & _

"WHERE (([Données Principales Enregistrement].[VEHICULE UTILISE])=[FCmbVéhicule]) " & _

" AND (([Données Principales Enregistrement].[REMARQUES])= [FCmbRemarques]) " & _

"ORDER BY [Données Principales Enregistrement].[JOUR DU TRAVAIL], [Données Principales Enregistrement].[Nom des Employeurs], [Données Principales Enregistrement].[HORAIRE DEBUT];"

Me.LstRésultat.Requery

End Sub

Pour faire fonctionner l'ensemble j'ai du changer le champ des remarques de txtbox en cmbbox, pourquoi ???? mystère....

Toutefois lorsque je ne rentre aucune donnée dans le champ remarques il me sort rien du tout, il faut que je change de AND en OR. Mais après il me sort les champs en "ou".
Je pense qu'il manque un petit quelque chose disant que si aucune donnée n'est entrée donc il faut tout prendre. Mais quoi ??? :

" AND (([Données Principales Enregistrement].[REMARQUES])= [FCmbRemarques]) " & _


Aidez moi s'il vous plait
0
Schnee067 Messages postés 14 Date d'inscription mercredi 27 janvier 2010 Statut Membre Dernière intervention 9 février 2010
30 janv. 2010 à 20:45
Merci quand même, j'ai trouvé.

Il fallait simplement rajouter ceci:
Au lieu de
"WHERE (([Données Principales Enregistrement].[VEHICULE UTILISE])=[FCmbVéhicule]) " & _

" AND (([Données Principales Enregistrement].[REMARQUES])= [FCmbRemarques]) " & _

Mettre
"WHERE (([Données Principales Enregistrement].[VEHICULE UTILISE])=[FCmbVéhicule]) & NZ ('') " & _
" AND (([Données Principales Enregistrement].[REMARQUES])= [FCmbRemarques]) & NZ ('') " & _

Si cela peut servir à quelqu'un......

Seul bémol!!! il prend tous les résultats même ceux ayant le champs vide. Donc, j'ai mis une valeur par défaut dans le formulaire pour qu'il y inscrive toujours quelque chose , et dans la table null interdit.
Voilà.

@+
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
31 janv. 2010 à 16:59
Bonjour,

Merci de ne pas double poster. Et il y a un thème VBA sur vbfrance qui aurait été plus approprié.

[ Déplacé sur vbfrance ]
0