IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Changer la source de donnée d'un tableau dynamique croisé en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Points : 46
    Points
    46
    Par défaut Changer la source de donnée d'un tableau dynamique croisé en VBA
    Bonjour,

    J'ai un fichier excel avec une feuille nommée donnée1 et un tableau dynamique croisé(feuille tableau). J'ai fait un macro qui duplique donnée1 dans donnée2.
    Je veux maintenant que que mon tableau dynamique croisé pointe sur donnée2 au lieu de donnée1.

    Des idées s'il vous plait, je suis preneuse.

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    cette action est détectée par l'enregistreur de macro

    je t'invite à faire ton petit enregistrement, et si tu as des difficultés pour adapter, montre nous le code

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Points : 46
    Points
    46
    Par défaut
    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Public Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim v
    Dim valeur
    Dim recup
    Dim donnee As Sheet1
    Dim Pvt As PivotTable
    v = ActiveCell.Value
    Worksheets("Sheet1").Cells.ClearContents
    Sheets("données").Columns.Copy
    Sheets("Sheet1").Columns.PasteSpecial Paste:=xlPasteValues
    For Each C In Worksheets("Sheet1").Range("G2:Q161")
    If Not IsEmpty(C.Value) Then
    recup = C.Value
    C.Value = v * recup
    End If
    Next C
    Set Pvt = Worksheets("Feuil2").PivotTables("Tableau croisé dynamique1")
    Pvt.RefreshTable
    End Sub
    données est ma feuille de source, j'ai copié données dans Sheet1 et j'ai modifié la valeur des cellules, je veux faire un rafraichissement de mon tableau dynamique mais il faut qu'il pointe d'abord sur Sheet1

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    je ne vois nul part la modification du cache (la source des données)
    qu'as donné l'enregistreur de macro exactement?

    je me demande aussi pourquoi tu as utilisé l'évènement selection_change pour réaliser ça
    à chaque fois que tu vas changer de cellule, ton TCD va modifier sa source de données ?

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Points : 46
    Points
    46
    Par défaut
    J'ai utilisé selectionChange parce qu'à chaque fois que je clique sur une cellule de ma feuille rates j’exécute le macro. C'était ça ma question comment faire le changement de cache?

  6. #6
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    je veux bien répondre à ta question, mais tu ne réponds pas à la mienne ?

    tant pis , voici pour toi, je te laisse adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub toto()
    Dim Pvt As PivotTable
    Dim MaPlage As Range
     
    Set MaPlage = Range("A1", "A1000") ' adapte
    Set Pvt = ActiveSheet.PivotTables(1)
    Pvt.ChangePivotCache _
    ActiveWorkbook.PivotCaches.Create(xlDatabase, _
                                      MaPlage, _
                                      Version:=4) ' 3 = 2007, 4 = 2010
    End Sub

  7. #7
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 413
    Points : 16 255
    Points
    16 255
    Par défaut
    Bonjour

    Citation Envoyé par lytog Voir le message
    J'ai utilisé selectionChange parce qu'à chaque fois que je clique sur une cellule de ma feuille rates j’exécute le macro. C'était ça ma question comment faire le changement de cache?
    Je sens déjà l'odeur du gaz s'échappant de l'usine... A chaque clic on copie 16000 colonnes puis on régénère un cache de TCD...

    Il y a probablement un processus plus optimisé... mais pour te donner des pistes il faudrait que tu données plus d'infos sur le besoin opérationnel.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour le club des DCD (non non pas décédés, justes Développeurs Croisés Dynamiques)

    Voir également le post http://www.developpez.net/forums/d15...xcel-plantage/
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    Désolé je n'ai pas été clair.
    Je m'explique, j'ai un classeur avec 4 feuilles une feuille données(feuille qui contient ma source de données), une feuille rates qui contient le taux de change d'une devise à une autre, une feuille Feuil2 mon tableau dynamique croisé qui est actuellement connecté sur données, une feuille vide Sheet1.
    Je veux qu'à fois que je sélectionne une valeur de la feuille rates,
    je vide la feuille Sheet1
    je copie la feuille données dans Sheet1
    je fais le produit de la valeur sélectionnée avec une plage de valeurs de Sheet1
    Jusqu’à la ça marche.Donc je copie ma feuille données dans Sheet1 et je modifie Sheet1.
    Maintenant je veux changer la source de données de mon tableau dynamique au lieu de données je veux que sa soit Sheet1.
    Je dois faire ce changement avant le refresh du tableau dynamique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set Pvt = Worksheets("Feuil2").PivotTables("Tableau croisé dynamique1")
    'Changer la source du TCD pour qu'il soit Sheet1
    Pvt.RefreshTable

  10. #10
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je t'ai montré un code qui modifie la source de données d'un TCD

    qu'est ce qui ne convient pas avec cette méthode ?

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Points : 46
    Points
    46
    Par défaut
    Je suis entrain d'adapter votre méthode, je voulais juste être clair comme vous m'aviez dit que je n'ai pas répondu à votre question.

  12. #12
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    tu avais juste à utiliser l'enregistreur de macro pour obtenir un début de code qu'on aurait adapté, et intégré dans ton code qu'on aurait optimisé

    mais ça s'est passé différemment malgré mon rappel, donc je t'ai donné une réponse mais n'irait pas plus loin, ce n'est pas très grave.

  13. #13
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub toto()
    Dim Pvt As PivotTable
    Dim MaPlage As Range
     
    Set MaPlage = Range("A1", "A1000") ' adapte
    Set Pvt = ActiveSheet.PivotTables(1)
    Pvt.ChangePivotCache _
    ActiveWorkbook.PivotCaches.Create(xlDatabase, _
                                      MaPlage, _
                                      Version:=4) ' 3 = 2007, 4 = 2010
    End Sub
    Merci Joe mon problème est résolu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pvt.ChangePivotCache ActiveWorkbook.PivotCaches.Create(xlDatabase, Worksheets("Sheet1").UsedRange, Version:=4)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/05/2015, 18h34
  2. [XL-2007] Changer la source de données d'un graphique croisé dynamique
    Par Tibou(c) dans le forum Excel
    Réponses: 3
    Dernier message: 15/07/2014, 09h58
  3. retrouver la source des données d'un Tableau Croisé Dynamique
    Par rpatruno dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2008, 09h57
  4. Réponses: 1
    Dernier message: 06/12/2007, 17h23
  5. Changer la source de données d'une Connexion
    Par Harry dans le forum WinDev
    Réponses: 1
    Dernier message: 09/08/2007, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo