OVH Cloud OVH Cloud

choix menu en VBA

8 réponses
Avatar
didier
Bonjour

A partir d'un choix parmi une zone de liste d=E9fini je=20
veut modifi=E9 les crit=E8re sur un champ [date]
J'ai cr=E9=E9 un zone de liste "Liste0" et j'ai appliqu=E9 la=20
proc=E9dure suivante sur MAJ

Select Case Me.Liste0.Value
Case "Tout"
Me.Filter =3D "[Date] =3D ''"
Me.FilterOn =3D False
Case "12 derniers mois"
Me.Filter =3D "[Date] =3D '>=3DDate()-365'"
Me.FilterOn =3D True
=20
Case "Ann=E9e en cours"
Me.Filter =3D "ann=E9e[Date] =3D 'Ann=E9e(Maintenant())'"
Me.FilterOn =3D True
Il me demande =E0 chaque fois la valeur du param=E8tre date=20
et pour la derni=E8re la formule lui pose probl=E8me

Je commence en VBA et je cherche quelqu'un pour me=20
corriger mes erreurs
merci

8 réponses

Avatar
Raymond [mvp]
Bonjour.

ne jamais appeler un champ date, car ce mot est réservé access pour la date
du jour, même si tu mets des [ ]
places une indentation (retrait des lignes) pour une meilleure lecture

Select Case Me.Liste0
Case "Tout"
Me.Filter = ""
Me.FilterOn = False
Case "12 derniers mois"
Me.Filter = "format([Date];""aaaa/mm/jj"") >= #" & Format(Date -
365, "yyyy/mm/dd") & "#"
Me.FilterOn = True
Case "Année en cours"
Me.Filter = "année([Date]) = " & Year(Now())
Me.FilterOn = True
Case Else
Me.Filter = ""
Me.FilterOn = False
End Select

j'espère ne pas avoir oublié de ' ou de " ou de #
tu corrigeras.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"didier" a écrit dans le message de
news:d5b601c3efd8$85eafc50$
Bonjour

A partir d'un choix parmi une zone de liste défini je
veut modifié les critère sur un champ [date]
J'ai créé un zone de liste "Liste0" et j'ai appliqué la
procédure suivante sur MAJ

Select Case Me.Liste0.Value
Case "Tout"
Me.Filter = "[Date] = ''"
Me.FilterOn = False
Case "12 derniers mois"
Me.Filter = "[Date] = '>Úte()-365'"
Me.FilterOn = True

Case "Année en cours"
Me.Filter = "année[Date] = 'Année(Maintenant())'"
Me.FilterOn = True
Il me demande à chaque fois la valeur du paramètre date
et pour la dernière la formule lui pose problème

Je commence en VBA et je cherche quelqu'un pour me
corriger mes erreurs
merci
Avatar
didier
re
Les champs ne sont pas appelé [date] mais [date d'achat]
et [date vente] c'est juste pour l'exemple

je ne comprends pas la formule suivante :
Me.Filter = "format([Date];""aaaa/mm/jj"") >= #"
& Format(Date -365, "yyyy/mm/dd") & "#"
Pourquoi formater le champs date en année/mois/jour et
ensuite tu parle de format Year/month/day
Ton niveau étant bien supérieur au mien je ne veut pas te
contredire
et comment peut ton applique ça à un formulaire basé sur
une instruction SQL comprenant un champ[fournisseur]en
regroupement [total d'achat] en somme et le champ [date]
en where car lorsque je ne met rien dans le critère
[date] celui-ci disparait



-----Message d'origine-----
Bonjour.

ne jamais appeler un champ date, car ce mot est réservé
access pour la date

du jour, même si tu mets des [ ]
places une indentation (retrait des lignes) pour une
meilleure lecture


Select Case Me.Liste0
Case "Tout"
Me.Filter = ""
Me.FilterOn = False
Case "12 derniers mois"
Me.Filter = "format([Date];""aaaa/mm/jj"") >= #"
& Format(Date -

365, "yyyy/mm/dd") & "#"
Me.FilterOn = True
Case "Année en cours"
Me.Filter = "année([Date]) = " & Year(Now())
Me.FilterOn = True
Case Else
Me.Filter = ""
Me.FilterOn = False
End Select

j'espère ne pas avoir oublié de ' ou de " ou de #
tu corrigeras.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"didier" a écrit
dans le message de

news:d5b601c3efd8$85eafc50$
Bonjour

A partir d'un choix parmi une zone de liste défini je
veut modifié les critère sur un champ [date]
J'ai créé un zone de liste "Liste0" et j'ai appliqué la
procédure suivante sur MAJ

Select Case Me.Liste0.Value
Case "Tout"
Me.Filter = "[Date] = ''"
Me.FilterOn = False
Case "12 derniers mois"
Me.Filter = "[Date] = '>Úte()-365'"
Me.FilterOn = True

Case "Année en cours"
Me.Filter = "année[Date] = 'Année(Maintenant())'"
Me.FilterOn = True
Il me demande à chaque fois la valeur du paramètre date
et pour la dernière la formule lui pose problème

Je commence en VBA et je cherche quelqu'un pour me
corriger mes erreurs
merci


.



Avatar
Raymond [mvp]
Nous sommes dans du vba.
c'est parceque je passais un filtre en dur, pour bien ajuster les formats
entre vba et access qui ne résonnent pas pareil. vba = date US.
tu peux aussi mettre
Me.Filter = "[Date] >= Date -365"
si les dates de la tables sont bien dans le même format que le paramètres
régionaux.

si le champ [date] est déjà dans le where pourquoi le remettre en filtre ?
ou vice-versa ? supprime le du where et joue sur le filtre.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"didier" a écrit dans le message de
news:e04c01c3efe3$15899a60$
re
Les champs ne sont pas appelé [date] mais [date d'achat]
et [date vente] c'est juste pour l'exemple

je ne comprends pas la formule suivante :
Me.Filter = "format([Date];""aaaa/mm/jj"") >= #"
& Format(Date -365, "yyyy/mm/dd") & "#"
Pourquoi formater le champs date en année/mois/jour et
ensuite tu parle de format Year/month/day
Ton niveau étant bien supérieur au mien je ne veut pas te
contredire
et comment peut ton applique ça à un formulaire basé sur
une instruction SQL comprenant un champ[fournisseur]en
regroupement [total d'achat] en somme et le champ [date]
en where car lorsque je ne met rien dans le critère
[date] celui-ci disparait
Avatar
didier
Voici ma requête sur laquel est basé mon formulaire
SELECT Fournisseur.[N° Fournisseur],
Fournisseur.Fournisseur, Sum([Prix Unitaire]*[Quantité])
AS Total
FROM (Fournisseur INNER JOIN [Mouvement matière] ON
Fournisseur.[N° Fournisseur] = [Mouvement matière].[N°
Fournisseur]) INNER JOIN [Détail mouvement matière] ON
[Mouvement matière].[Ref mouvement] = [Détail mouvement
matière].[Ref mouvement]
WHERE ((([Mouvement matière].[Date du mouvement])>Úte
()))
GROUP BY Fournisseur.[N° Fournisseur],
Fournisseur.Fournisseur;

Dans mon formulaire je n'ai gardé que les
champs "Fournisseur" et [Total]
et je veut quand fonction de ma zone de liste Liste(0)
changer les critères de date pour avoir le total d'achat
pour chaque fournisseur suivant ces intervalle de temps
(tout, 6 derniers mois, année en cours etc...)



-----Message d'origine-----
Nous sommes dans du vba.
c'est parceque je passais un filtre en dur, pour bien
ajuster les formats

entre vba et access qui ne résonnent pas pareil. vba =
date US.

tu peux aussi mettre
Me.Filter = "[Date] >= Date -365"
si les dates de la tables sont bien dans le même format
que le paramètres

régionaux.

si le champ [date] est déjà dans le where pourquoi le
remettre en filtre ?

ou vice-versa ? supprime le du where et joue sur le
filtre.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"didier" a écrit
dans le message de

news:e04c01c3efe3$15899a60$
re
Les champs ne sont pas appelé [date] mais [date d'achat]
et [date vente] c'est juste pour l'exemple

je ne comprends pas la formule suivante :
Me.Filter = "format([Date];""aaaa/mm/jj"") >= #"
& Format(Date -365, "yyyy/mm/dd") & "#"
Pourquoi formater le champs date en année/mois/jour et
ensuite tu parle de format Year/month/day
Ton niveau étant bien supérieur au mien je ne veut pas te
contredire
et comment peut ton applique ça à un formulaire basé sur
une instruction SQL comprenant un champ[fournisseur]en
regroupement [total d'achat] en somme et le champ [date]
en where car lorsque je ne met rien dans le critère
[date] celui-ci disparait



.



Avatar
Raymond [mvp]
tu as une clause where de départ :
WHERE ((([Mouvement matière].[Date du mouvement])>Úte
()))
si le mouvement est postérieur à la date du jour, tu ne peux rien récupérer
dans ta requête ?
il faut choisir entre le filtre ou la clause where car ça ne se passe pas au
même endroit.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"didier" a écrit dans le message de
news:dcf301c3eff1$32e06770$
Voici ma requête sur laquel est basé mon formulaire
SELECT Fournisseur.[N° Fournisseur],
Fournisseur.Fournisseur, Sum([Prix Unitaire]*[Quantité])
AS Total
FROM (Fournisseur INNER JOIN [Mouvement matière] ON
Fournisseur.[N° Fournisseur] = [Mouvement matière].[N°
Fournisseur]) INNER JOIN [Détail mouvement matière] ON
[Mouvement matière].[Ref mouvement] = [Détail mouvement
matière].[Ref mouvement]
WHERE ((([Mouvement matière].[Date du mouvement])>Úte
()))
GROUP BY Fournisseur.[N° Fournisseur],
Fournisseur.Fournisseur;

Dans mon formulaire je n'ai gardé que les
champs "Fournisseur" et [Total]
et je veut quand fonction de ma zone de liste Liste(0)
changer les critères de date pour avoir le total d'achat
pour chaque fournisseur suivant ces intervalle de temps
(tout, 6 derniers mois, année en cours etc...)
Avatar
didier
J'ai bien vu que ma clause where me bloque mais je ne
sais pas comment faire pour avoir dans mon formulaire les
champs "Fournisseur" et [Total] et filtrer par [date] car
quand je ne fait pas ma requête je n'ai plus la fonction
de regroupement par fournisseur
Si tu as une idée elle sera la bien venu
D'autre part pouquoi la fonction executer commande
filtrer par formulaire dans les macros ne réagit pas
comme dans la barre de menu

-----Message d'origine-----
tu as une clause where de départ :
WHERE ((([Mouvement matière].[Date du mouvement])>Úte
()))
si le mouvement est postérieur à la date du jour, tu ne
peux rien récupérer

dans ta requête ?
il faut choisir entre le filtre ou la clause where car
ça ne se passe pas au

même endroit.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"didier" a écrit
dans le message de

news:dcf301c3eff1$32e06770$
Voici ma requête sur laquel est basé mon formulaire
SELECT Fournisseur.[N° Fournisseur],
Fournisseur.Fournisseur, Sum([Prix Unitaire]*[Quantité])
AS Total
FROM (Fournisseur INNER JOIN [Mouvement matière] ON
Fournisseur.[N° Fournisseur] = [Mouvement matière].[N°
Fournisseur]) INNER JOIN [Détail mouvement matière] ON
[Mouvement matière].[Ref mouvement] = [Détail mouvement
matière].[Ref mouvement]
WHERE ((([Mouvement matière].[Date du mouvement])>Úte
()))
GROUP BY Fournisseur.[N° Fournisseur],
Fournisseur.Fournisseur;

Dans mon formulaire je n'ai gardé que les
champs "Fournisseur" et [Total]
et je veut quand fonction de ma zone de liste Liste(0)
changer les critères de date pour avoir le total d'achat
pour chaque fournisseur suivant ces intervalle de temps
(tout, 6 derniers mois, année en cours etc...)




.



Avatar
Raymond [mvp]
Pourrais-tu m'envoyer, ton formulaire, ta requête et tes 3 tables
fournisseur, mouvement matière, détail mouvement matière, si je n'en oublie
pas. le tout dans une base vierge en fichier ZIP obligatoire et en enlevant
XYZ. dans mon adresse ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"didier" a écrit dans le message de
news:d53601c3effd$3201f7e0$
J'ai bien vu que ma clause where me bloque mais je ne
sais pas comment faire pour avoir dans mon formulaire les
champs "Fournisseur" et [Total] et filtrer par [date] car
quand je ne fait pas ma requête je n'ai plus la fonction
de regroupement par fournisseur
Si tu as une idée elle sera la bien venu
D'autre part pouquoi la fonction executer commande
filtrer par formulaire dans les macros ne réagit pas
comme dans la barre de menu
Avatar
Raymond [mvp]
Réponse donnée par mail:
je viens de voir ta base.

un filtre sur le recordsource ne sert à rien car ton recordsource est une
requête regroupement qui n'a même pas la date , forcément, c'est par cumul
client.
il faut que ton test sur la période soit inclus dans la requête sur la ligne
critère (clause where).
fais bien attention, les requêtes reconnaissent les listes mais pas les
column des listes.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum