OVH Cloud OVH Cloud

Modifier la requèque d'import dans un tableau croisé dynamique

5 réponses
Avatar
LMPF
Bonjour,
J'ai créé un TCD à partir d'une base de données Access avec une requête sur
des champs au moment de la création à l'aide de l'assistant.
Comment modifier cette requête ?
Je ne parviens pas à retourner dans l'assistant ni dans Microsoft Query
contrairement à l'importation de données externes qui permet très facilement
de modifier la requête.
Merci de l'attention que vous porterez à cette question

5 réponses

Avatar
michdenis
Tu dois utiliser la propriété "CommandText" de l'objet PivotCache
pour avoir accès au texte de la requête sous-jacent à ton pivottable.

Si tu veux afficher la requête dans une cellule, tu peux utiliser ce type
de code :

'------------------------
Sub test()

Dim PC As PivotCache
'Tu peux remplacer l'index 1 par son nom
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
ActiveWorkbook.Worksheets("feuil3").Range("A1") = .CommandText
End With
End Sub
'------------------------

Si tu modifies le texte de la requête affiché dans la cellule, tu peux
utiliser le code suivant pour modifier la requête :

With PC
.CommandText = ActiveWorkbook.Worksheets("feuil3").Range("A1")
.Refresh
End With

Et tu sauvegardes ton fichier



"LMPF" a écrit dans le message de news:

Bonjour,
J'ai créé un TCD à partir d'une base de données Access avec une requête sur
des champs au moment de la création à l'aide de l'assistant.
Comment modifier cette requête ?
Je ne parviens pas à retourner dans l'assistant ni dans Microsoft Query
contrairement à l'importation de données externes qui permet très facilement
de modifier la requête.
Merci de l'attention que vous porterez à cette question
Avatar
CAIRIS
Merci pour la diffusion de ce code que j'essaie désespérement de mettre en
place mais je ne maîtrise pas du tout le VBA et ai du mal à l'adapter à mon
classeur.
J'ai réussi à faire fonctionner la 1ère partie du code, non par pour la
"CommandText" mais pour la "Connection" (car c'est le chemin d'accès à ma
base de données source que j'ai modifié) mais je n'arrive pas à utiliser la
2ème partie.

Ci joint les 2 textes (le TCD() fonctionne mais pas le MajTCD() :

Sub TCD()
Dim PC As PivotCache
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
ActiveWorkbook.Worksheets("source").Range("B3") = .Connection
End With
End Sub

Sub MajTCD()
Dim PC As PivotCache
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
.CommandText = ActiveWorkbook.Worksheets("source").Range("B3")
.Refresh
End With
End Sub

Merci d 'avance pour votre assistance
--
Catherine


"michdenis" wrote:

Tu dois utiliser la propriété "CommandText" de l'objet PivotCache
pour avoir accès au texte de la requête sous-jacent à ton pivottable.

Si tu veux afficher la requête dans une cellule, tu peux utiliser ce type
de code :

'------------------------
Sub test()

Dim PC As PivotCache
'Tu peux remplacer l'index 1 par son nom
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
ActiveWorkbook.Worksheets("feuil3").Range("A1") = .CommandText
End With
End Sub
'------------------------

Si tu modifies le texte de la requête affiché dans la cellule, tu peux
utiliser le code suivant pour modifier la requête :

With PC
.CommandText = ActiveWorkbook.Worksheets("feuil3").Range("A1")
.Refresh
End With

Et tu sauvegardes ton fichier



"LMPF" a écrit dans le message de news:

Bonjour,
J'ai créé un TCD à partir d'une base de données Access avec une requête sur
des champs au moment de la création à l'aide de l'assistant.
Comment modifier cette requête ?
Je ne parviens pas à retourner dans l'assistant ni dans Microsoft Query
contrairement à l'importation de données externes qui permet très facilement
de modifier la requête.
Merci de l'attention que vous porterez à cette question






Avatar
michdenis
Je t'ai fait un petit fichier exemple avec minuscule TDC.

Tu télécharges ce fichier sur ton disque dur.

http://cjoint.com/?jBpUTDba4s

Pour la requête, j'ai utilisé la base de données Access "Comptoir.xls"
que tu as sur le CD de Microsoft Office et je l'ai mis dans ce
répertoire "C:ATravail" - Chemin que tu peux reproduire
sur ton PC, si tu ne veux pas avoir à adapter les procédures.

Le module 1 contient 4 procédures ....
A ) Création_TDC : le code peut être généré par l'enregistreur macro.
Je l'ai seulement modifié pour le rendre plus lisible (espérons pour toi !)

B ) Modifier_Requete_PivotCache
- Modification une première fois de la requête
En fait la seule chose qui est modifié à la requête est la condition "Where"
requête originale : "WHERE (Clients.Pays>'S%''')"
nouvelle requête : "WHERE (Clients.Pays>'H%''')"

Après l'avoir exécuté, observe dans la feuille de calcul, la liste des pays
affiché a été modifié...pour tenir compte de la nouvelle requête

C ) Retour_A_La_Requete_Initiale :
Cette procédure ne fait qu'appliquer la requête initiale.
Si tu observes dans la feuille de calcul, la liste des pays
disponibles dans le TDC est demeuré la même qu'en B
ET CE , à cause des éléments fantômes que le TDC ne
sait pas se débarrasser ... pour ce faire tu appliques
la macro en D

D ) DeleteOldItemsWB
Et tu retrouves la liste des pays d'origine ...




"CAIRIS" a écrit dans le message de news:

Merci pour la diffusion de ce code que j'essaie désespérement de mettre en
place mais je ne maîtrise pas du tout le VBA et ai du mal à l'adapter à mon
classeur.
J'ai réussi à faire fonctionner la 1ère partie du code, non par pour la
"CommandText" mais pour la "Connection" (car c'est le chemin d'accès à ma
base de données source que j'ai modifié) mais je n'arrive pas à utiliser la
2ème partie.

Ci joint les 2 textes (le TCD() fonctionne mais pas le MajTCD() :

Sub TCD()
Dim PC As PivotCache
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
ActiveWorkbook.Worksheets("source").Range("B3") = .Connection
End With
End Sub

Sub MajTCD()
Dim PC As PivotCache
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
.CommandText = ActiveWorkbook.Worksheets("source").Range("B3")
.Refresh
End With
End Sub

Merci d 'avance pour votre assistance
--
Catherine


"michdenis" wrote:

Tu dois utiliser la propriété "CommandText" de l'objet PivotCache
pour avoir accès au texte de la requête sous-jacent à ton pivottable.

Si tu veux afficher la requête dans une cellule, tu peux utiliser ce type
de code :

'------------------------
Sub test()

Dim PC As PivotCache
'Tu peux remplacer l'index 1 par son nom
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
ActiveWorkbook.Worksheets("feuil3").Range("A1") = .CommandText
End With
End Sub
'------------------------

Si tu modifies le texte de la requête affiché dans la cellule, tu peux
utiliser le code suivant pour modifier la requête :

With PC
.CommandText = ActiveWorkbook.Worksheets("feuil3").Range("A1")
.Refresh
End With

Et tu sauvegardes ton fichier



"LMPF" a écrit dans le message de news:

Bonjour,
J'ai créé un TCD à partir d'une base de données Access avec une requête sur
des champs au moment de la création à l'aide de l'assistant.
Comment modifier cette requête ?
Je ne parviens pas à retourner dans l'assistant ni dans Microsoft Query
contrairement à l'importation de données externes qui permet très facilement
de modifier la requête.
Merci de l'attention que vous porterez à cette question






Avatar
michdenis
ATTENTION :

Le TDC est déjà créé dans la feuille. Pour pouvoir
exécuter à nouveau la procédure Création_TDC
tu DOIS auparavant SUPPRIMER toutes les
lignes où apparaissent le tableau TDC avec la commande
du menu édition / supprimer




"michdenis" a écrit dans le message de news:

Je t'ai fait un petit fichier exemple avec minuscule TDC.

Tu télécharges ce fichier sur ton disque dur.

http://cjoint.com/?jBpUTDba4s

Pour la requête, j'ai utilisé la base de données Access "Comptoir.xls"
que tu as sur le CD de Microsoft Office et je l'ai mis dans ce
répertoire "C:ATravail" - Chemin que tu peux reproduire
sur ton PC, si tu ne veux pas avoir à adapter les procédures.

Le module 1 contient 4 procédures ....
A ) Création_TDC : le code peut être généré par l'enregistreur macro.
Je l'ai seulement modifié pour le rendre plus lisible (espérons pour toi !)

B ) Modifier_Requete_PivotCache
- Modification une première fois de la requête
En fait la seule chose qui est modifié à la requête est la condition "Where"
requête originale : "WHERE (Clients.Pays>'S%''')"
nouvelle requête : "WHERE (Clients.Pays>'H%''')"

Après l'avoir exécuté, observe dans la feuille de calcul, la liste des pays
affiché a été modifié...pour tenir compte de la nouvelle requête

C ) Retour_A_La_Requete_Initiale :
Cette procédure ne fait qu'appliquer la requête initiale.
Si tu observes dans la feuille de calcul, la liste des pays
disponibles dans le TDC est demeuré la même qu'en B
ET CE , à cause des éléments fantômes que le TDC ne
sait pas se débarrasser ... pour ce faire tu appliques
la macro en D

D ) DeleteOldItemsWB
Et tu retrouves la liste des pays d'origine ...




"CAIRIS" a écrit dans le message de news:

Merci pour la diffusion de ce code que j'essaie désespérement de mettre en
place mais je ne maîtrise pas du tout le VBA et ai du mal à l'adapter à mon
classeur.
J'ai réussi à faire fonctionner la 1ère partie du code, non par pour la
"CommandText" mais pour la "Connection" (car c'est le chemin d'accès à ma
base de données source que j'ai modifié) mais je n'arrive pas à utiliser la
2ème partie.

Ci joint les 2 textes (le TCD() fonctionne mais pas le MajTCD() :

Sub TCD()
Dim PC As PivotCache
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
ActiveWorkbook.Worksheets("source").Range("B3") = .Connection
End With
End Sub

Sub MajTCD()
Dim PC As PivotCache
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
.CommandText = ActiveWorkbook.Worksheets("source").Range("B3")
.Refresh
End With
End Sub

Merci d 'avance pour votre assistance
--
Catherine


"michdenis" wrote:

Tu dois utiliser la propriété "CommandText" de l'objet PivotCache
pour avoir accès au texte de la requête sous-jacent à ton pivottable.

Si tu veux afficher la requête dans une cellule, tu peux utiliser ce type
de code :

'------------------------
Sub test()

Dim PC As PivotCache
'Tu peux remplacer l'index 1 par son nom
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
ActiveWorkbook.Worksheets("feuil3").Range("A1") = .CommandText
End With
End Sub
'------------------------

Si tu modifies le texte de la requête affiché dans la cellule, tu peux
utiliser le code suivant pour modifier la requête :

With PC
.CommandText = ActiveWorkbook.Worksheets("feuil3").Range("A1")
.Refresh
End With

Et tu sauvegardes ton fichier



"LMPF" a écrit dans le message de news:

Bonjour,
J'ai créé un TCD à partir d'une base de données Access avec une requête sur
des champs au moment de la création à l'aide de l'assistant.
Comment modifier cette requête ?
Je ne parviens pas à retourner dans l'assistant ni dans Microsoft Query
contrairement à l'importation de données externes qui permet très facilement
de modifier la requête.
Merci de l'attention que vous porterez à cette question






Avatar
CAIRIS
Merci beaucoup pour le fichier d'exemple.
Ce n'est pas tout à fait ce que je cherche à faire (i.e. ma requête ne
change pas, seul le chemin d'accès à ma base change)...mais avec l'exemple
que tu m'as donné, je vais essayer de modifier les parametres....Si je suis
vraiment encore plus niaise que niaise, je me permettrai de te recontacter.
--
Catherine


"michdenis" wrote:

ATTENTION :

Le TDC est déjà créé dans la feuille. Pour pouvoir
exécuter à nouveau la procédure Création_TDC
tu DOIS auparavant SUPPRIMER toutes les
lignes où apparaissent le tableau TDC avec la commande
du menu édition / supprimer




"michdenis" a écrit dans le message de news:

Je t'ai fait un petit fichier exemple avec minuscule TDC.

Tu télécharges ce fichier sur ton disque dur.

http://cjoint.com/?jBpUTDba4s

Pour la requête, j'ai utilisé la base de données Access "Comptoir.xls"
que tu as sur le CD de Microsoft Office et je l'ai mis dans ce
répertoire "C:ATravail" - Chemin que tu peux reproduire
sur ton PC, si tu ne veux pas avoir à adapter les procédures.

Le module 1 contient 4 procédures ....
A ) Création_TDC : le code peut être généré par l'enregistreur macro.
Je l'ai seulement modifié pour le rendre plus lisible (espérons pour toi !)

B ) Modifier_Requete_PivotCache
- Modification une première fois de la requête
En fait la seule chose qui est modifié à la requête est la condition "Where"
requête originale : "WHERE (Clients.Pays>'S%''')"
nouvelle requête : "WHERE (Clients.Pays>'H%''')"

Après l'avoir exécuté, observe dans la feuille de calcul, la liste des pays
affiché a été modifié...pour tenir compte de la nouvelle requête

C ) Retour_A_La_Requete_Initiale :
Cette procédure ne fait qu'appliquer la requête initiale.
Si tu observes dans la feuille de calcul, la liste des pays
disponibles dans le TDC est demeuré la même qu'en B
ET CE , à cause des éléments fantômes que le TDC ne
sait pas se débarrasser ... pour ce faire tu appliques
la macro en D

D ) DeleteOldItemsWB
Et tu retrouves la liste des pays d'origine ...




"CAIRIS" a écrit dans le message de news:

Merci pour la diffusion de ce code que j'essaie désespérement de mettre en
place mais je ne maîtrise pas du tout le VBA et ai du mal à l'adapter à mon
classeur.
J'ai réussi à faire fonctionner la 1ère partie du code, non par pour la
"CommandText" mais pour la "Connection" (car c'est le chemin d'accès à ma
base de données source que j'ai modifié) mais je n'arrive pas à utiliser la
2ème partie.

Ci joint les 2 textes (le TCD() fonctionne mais pas le MajTCD() :

Sub TCD()
Dim PC As PivotCache
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
ActiveWorkbook.Worksheets("source").Range("B3") = .Connection
End With
End Sub

Sub MajTCD()
Dim PC As PivotCache
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
.CommandText = ActiveWorkbook.Worksheets("source").Range("B3")
.Refresh
End With
End Sub

Merci d 'avance pour votre assistance
--
Catherine


"michdenis" wrote:

Tu dois utiliser la propriété "CommandText" de l'objet PivotCache
pour avoir accès au texte de la requête sous-jacent à ton pivottable.

Si tu veux afficher la requête dans une cellule, tu peux utiliser ce type
de code :

'------------------------
Sub test()

Dim PC As PivotCache
'Tu peux remplacer l'index 1 par son nom
Set PC = ActiveWorkbook.PivotCaches(1)
With PC
ActiveWorkbook.Worksheets("feuil3").Range("A1") = .CommandText
End With
End Sub
'------------------------

Si tu modifies le texte de la requête affiché dans la cellule, tu peux
utiliser le code suivant pour modifier la requête :

With PC
.CommandText = ActiveWorkbook.Worksheets("feuil3").Range("A1")
.Refresh
End With

Et tu sauvegardes ton fichier



"LMPF" a écrit dans le message de news:

Bonjour,
J'ai créé un TCD à partir d'une base de données Access avec une requête sur
des champs au moment de la création à l'aide de l'assistant.
Comment modifier cette requête ?
Je ne parviens pas à retourner dans l'assistant ni dans Microsoft Query
contrairement à l'importation de données externes qui permet très facilement
de modifier la requête.
Merci de l'attention que vous porterez à cette question