Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Modifier des critères dans une requête

2 réponses
Avatar
blondet.m.
Bonjour à tous,

Je rapatrie des données depuis une base en modifiant mes critères variables
(2 dates :DateDebut et DateFin) dans MSQuery. Mais je voudrais pouvoir
récupérer ces critères dans 2 cellules dédiées et n'avoir plus qu'à cliquer
sur le bouton "Actualiser les Données". J'ai essayé de donner un nom aux 2
cellules mais cela ne marche pas car le requetteur cherche des données
identiques aux noms de mes cellules.

Merci d'avance aux experts en requêtes...

MB

2 réponses

Avatar
Denis Michon
Blondet,

Attaches tes bottines... on part ;-)

Je suppose que tu as défini une requête paramétrée dans query. Pour ce faire, directement dans la fenêtre "Query", tu
utilises les crochets droits et tu insères un petit texte significatif pour l'usager pour définir les paramètres de ta
requête. Les symboles ">" et "<" sert à déterminer l'intervalle entre les dates choisies.

Exemple :

Dans la fenêtre "Critères"

NomDuChamp : Date
critère : >[Date de début] Et <[Date de fin]


Tu retournes le résultat de la requête dans une feuille de ton classeur.

Avec un clic droit sur la plage de résultat, dans le menu déroulant , choisi : "Paramètre"

Dans la fenêtre qui s'ouvre : Tu sélectionnes dans la partie gauche de la fenêtre : " Date de début" et tu sélectionne le
bouton radio :"Obtenir la valeur de la cellule suivante" : Tu indiques la cellule devant servir pour ce critère. Et pour
finir, Tu coches le bouton radio si tu veux qu'excel actualise les données dès que tu modifieras le contenu de cette cellule
(date de début) . Maintenant il te reste à faire la même chose concernant "Date de fin" . Voilà.


Si tu voulais obtenir le même résultat à partir d'une macro qui servirait à actualiser ton "querytable", tu pourrais
t'inspirer de ceci. À copier dans la feuille module où l'action se déroule :

'----------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

'il est pris pour acquis que G1, G2 contiennent des dates
'ET
'G1 est plus petit que G2 ... tu peux ajouter une gestion
'd'erreur le cas échéant....! ( pas défini ici ! )

If Target.Address = [G1].Address Or _
Target.Address = [G2].Address Then
'En supposant que ton QueryTable se situe
'sur la feuille "Feuil1"
'Plage de critère de tes dates :
'Date de début : "Feuil1!G1"
'Date de Fin : "Feuil1!G2"

Dim P1 As Parameter
Dim P2 As Parameter

'utilise l'index ou le nom de la requête
With Worksheets("Feuil1").QueryTables(1)
Set P1 = .Parameters(1)
Set P2 = .Parameters(2)
P1.SetParam xlRange, Range("Feuil1!G1")
P2.SetParam xlRange, Range("Feuil1!G2")
.Refresh False
End With
End If

End Sub
'----------------------------------


Salutations!









"blondet.m." a écrit dans le message de news:bj2tst$uv6$
Bonjour à tous,

Je rapatrie des données depuis une base en modifiant mes critères variables
(2 dates :DateDebut et DateFin) dans MSQuery. Mais je voudrais pouvoir
récupérer ces critères dans 2 cellules dédiées et n'avoir plus qu'à cliquer
sur le bouton "Actualiser les Données". J'ai essayé de donner un nom aux 2
cellules mais cela ne marche pas car le requetteur cherche des données
identiques aux noms de mes cellules.

Merci d'avance aux experts en requêtes...

MB
Avatar
blondet.m.
Super, merci Denis, c'est exactement la solution que je cherchai !
A+



"Denis Michon" a écrit dans le message news:
8_95b.12269$
Blondet,

Attaches tes bottines... on part ;-)

Je suppose que tu as défini une requête paramétrée dans query. Pour ce
faire, directement dans la fenêtre "Query", tu

utilises les crochets droits et tu insères un petit texte significatif
pour l'usager pour définir les paramètres de ta

requête. Les symboles ">" et "<" sert à déterminer l'intervalle entre les
dates choisies.


Exemple :

Dans la fenêtre "Critères"

NomDuChamp : Date
critère : >[Date de début] Et <[Date de fin]


Tu retournes le résultat de la requête dans une feuille de ton classeur.

Avec un clic droit sur la plage de résultat, dans le menu déroulant ,
choisi : "Paramètre"


Dans la fenêtre qui s'ouvre : Tu sélectionnes dans la partie gauche de la
fenêtre : " Date de début" et tu sélectionne le

bouton radio :"Obtenir la valeur de la cellule suivante" : Tu indiques la
cellule devant servir pour ce critère. Et pour

finir, Tu coches le bouton radio si tu veux qu'excel actualise les données
dès que tu modifieras le contenu de cette cellule

(date de début) . Maintenant il te reste à faire la même chose concernant
"Date de fin" . Voilà.



Si tu voulais obtenir le même résultat à partir d'une macro qui servirait
à actualiser ton "querytable", tu pourrais

t'inspirer de ceci. À copier dans la feuille module où l'action se
déroule :


'----------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

'il est pris pour acquis que G1, G2 contiennent des dates
'ET
'G1 est plus petit que G2 ... tu peux ajouter une gestion
'd'erreur le cas échéant....! ( pas défini ici ! )

If Target.Address = [G1].Address Or _
Target.Address = [G2].Address Then
'En supposant que ton QueryTable se situe
'sur la feuille "Feuil1"
'Plage de critère de tes dates :
'Date de début : "Feuil1!G1"
'Date de Fin : "Feuil1!G2"

Dim P1 As Parameter
Dim P2 As Parameter

'utilise l'index ou le nom de la requête
With Worksheets("Feuil1").QueryTables(1)
Set P1 = .Parameters(1)
Set P2 = .Parameters(2)
P1.SetParam xlRange, Range("Feuil1!G1")
P2.SetParam xlRange, Range("Feuil1!G2")
.Refresh False
End With
End If

End Sub
'----------------------------------


Salutations!









"blondet.m." a écrit dans le message de
news:bj2tst$uv6$

Bonjour à tous,

Je rapatrie des données depuis une base en modifiant mes critères
variables

(2 dates :DateDebut et DateFin) dans MSQuery. Mais je voudrais pouvoir
récupérer ces critères dans 2 cellules dédiées et n'avoir plus qu'à
cliquer

sur le bouton "Actualiser les Données". J'ai essayé de donner un nom aux 2
cellules mais cela ne marche pas car le requetteur cherche des données
identiques aux noms de mes cellules.

Merci d'avance aux experts en requêtes...

MB