[VBA] Changer les données sources d'un tableau croisé dynamique
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

[VBA] Changer les données sources d'un tableau croisé dynamique



  1. #1
    matthieu2

    [VBA] Changer les données sources d'un tableau croisé dynamique


    ------

    Bonjour,

    Dans un fichier Excel j'ai 5 onglets qui contiennent 1 pivot table (tableau croisé dynamique) chacun.

    Chaque pivot table va chercher les données dans un autre fichier.

    Mes pivot table doivent être misent à jour tous les mois. Le problème c'est que tous les mois, le fichier source change de nom (exemple pour décembre 2015: "Act vs forecast 12 2015.xlsx".

    Ainsi, avec une UserForm l'utilisateur va entrer le mois et l'année et le programme faire le reste.

    Je ne connais absolument pas la ligne de code permettant de changer la table source de la pivot... J'ai bien essayer de trouver des truc comme:
    Code:
    ActiveSheet.PivotTables("Tableau croisé dynamique13").ChangePivotCache _
            ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Data", Version:=xlPivotTableVersion12)
    Mais le chemin d'accès ainsi que l'onglet sont renseignés dans la variable "Data" de SourceData:="Data"?

    Quelqu'un sait-il comment faire?

    -----

  2. #2
    andre_teprom

    Re : [VBA] Changer les données sources d'un tableau croisé dynamique

    Voulez-vous dire que seul le nom de fichier change, mais pas le contenu?
    Par ailleurs, pour recalculer la table de pivot, il suffit d'utiliser la méthode ManualUpdate

  3. #3
    matthieu2

    Re : [VBA] Changer les données sources d'un tableau croisé dynamique

    Bonjour,

    Citation Envoyé par andre_teprom Voir le message
    Voulez-vous dire que seul le nom de fichier change, mais pas le contenu?
    Alors le nom du fichier change. Le nom de l'onglet reste le même. Les données sur l'onglet changent mais le "Range" reste le même.

    Citation Envoyé par andre_teprom Voir le message
    Par ailleurs, pour recalculer la table de pivot, il suffit d'utiliser la méthode ManualUpdate
    Je ne connais pas cette syntaxe (du tout). Il ne s'agit pas seulement de faire un Refresh mais bien de changer dans la source de la pivot.

    Voici la data source actuelle d'une de mes pivot:
    'G:\PLANNING\Actual vs forecast\2015\[Act vs forecast 12 2015.xlsx]sap data prod'!$A:$V

    Ce qui change la dedans c'est ce qui est en rouge
    'G:\PLANNING\Actual vs forecast\2015\[Act vs forecast 12 2015.xlsx]sap data prod'!$A:$V

    Voici le code que j'ai commencé à réaliser:
    Code:
    Private Sub CommandButton1_Click()
        Dim Mois As Integer
        Dim Année As Integer
        'Dim Adresse As String
        'Dim Fichier As String
        'Dim Chemin As String
        'Dim Plage As Range
        Dim Source As String
        
        If TextBox1.Value = "" Then
            MsgBox ("Tu as oublié de renseigner le numéro de mois !")
            TextBox1.SetFocus
            Exit Sub
        Else
            Mois = TextBox1.Value
        End If
            
        If TextBox2.Value = "" Then
            MsgBox ("Tu as oublié de renseigner l'année !")
            TextBox2.SetFocus
            Exit Sub
        Else
            Année = TextBox2.Value
        End If
        
        'Adresse = "G:\PLANNING\Actual vs forecast\" & Année
        'Fichier = "Act vs forecast " & Mois & " " & Année & ".xlsx"
        'Plage = "$A:$V"
        Source = "G:\PLANNING\Actual vs forecast\" & Année & "\[Act vs forecast " & Mois & " " & Année & ".xlsx]sap data prod'!$A:$V"
        
        Sheets("Suivi Herbicides").Select
        ActiveSheet.PivotTables("PivotTable1").ChangePivotCache _
            ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            Source)
        
    End Sub
    
    Private Sub CommandButton2_Click()
        Unload Me
    End Sub
    J'ai un bug sur la partie:
    Code:
    ActiveSheet.PivotTables("PivotTable1").ChangePivotCache _
            ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            Source)
    Message d'erreur:
    Run-time error '-2147024809 (80070057)':
    Cannot open PivotTable source file 'G:\PLANNING\Actual vs forecast\2015\[Act vs forecast 11 2015.xlsx]sap data prod"

  4. #4
    cherbe

    Re : [VBA] Changer les données sources d'un tableau croisé dynamique

    Bonjour
    Tu es sûr que les crochets ( [] ) qui entourent le nom du fichier sont nécessaires ?

  5. A voir en vidéo sur Futura
  6. #5
    matthieu2

    Re : [VBA] Changer les données sources d'un tableau croisé dynamique

    Bonjour Cherbe,

    Citation Envoyé par cherbe Voir le message
    Tu es sûr que les crochets ( [] ) qui entourent le nom du fichier sont nécessaires ?
    Non à vrai dire j'en sais rien mais lorsque je fais le changement manuellement: click sur la pivot => Options (PivotTable Tools) => Change Data Source. C'est avec cette syntaxe qu'Excel le note. J'applique donc la même syntaxe

  7. #6
    cherbe

    Re : [VBA] Changer les données sources d'un tableau croisé dynamique

    Citation Envoyé par matthieu2 Voir le message
    Message d'erreur:
    Run-time error '-2147024809 (80070057)':
    Cannot open PivotTable source file 'G:\PLANNING\Actual vs forecast\2015\[Act vs forecast 11 2015.xlsx]sap data prod"
    Les chemin, nom de fichier et nom d'onglet notés dans ce message d'erreur sont-ils rigoureusement exacts ?
    correspondent-ils bien à la réalité ?

  8. #7
    matthieu2

    Re : [VBA] Changer les données sources d'un tableau croisé dynamique

    Re,

    Citation Envoyé par cherbe Voir le message
    Les chemin, nom de fichier et nom d'onglet notés dans ce message d'erreur sont-ils rigoureusement exacts ?
    correspondent-ils bien à la réalité ?
    Wep à par que dans le message d'erreur le "Range" n'apparait pas.

    Voici le code correspondant au chemin:
    Code:
    Source = "G:\PLANNING\Actual vs forecast\" & Année & "\[Act vs forecast " & Mois & " " & Année & ".xlsx]sap data prod'!$A:$V"
    Qui contient également le Range de la table à prendre.

    Voici le chemin d'un fichier (exemple pour novembre 2015):
    G:\PLANNING\Actual vs forecast\2015\Act vs forecast 11 2015.xlsx

    J'ai remplacé le répertoire "2015" par la variable "Année" que l'utilisateur entre et dans le nom du fichier, j'ai remplacé le "11" et "2015" par la variable "Mois" et "Année". J'ai bien fais attention aux espaces.

  9. #8
    matthieu2

    Re : [VBA] Changer les données sources d'un tableau croisé dynamique

    Bonjour,

    J'ai trouvé l'erreur. Quand je change manuellement la source, il y a une cote (') au tout début que j'ai oublié dans:
    Code:
    Source = "'G:\PLANNING\Actual vs forecast\" & Année & "\[Act vs forecast " & Mois & " " & Année & ".xlsx]sap data prod'!$A:$V"
    Avec la cote cela fonctionne

    Merci à tous

Discussions similaires

  1. EXCEL - Croisé Dynamique (+macro?) et MàJ
    Par Vian dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 02/03/2015, 15h15
  2. Tableau croisé dynamique
    Par Hate64 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 22/06/2013, 22h22
  3. Excel 2002 : Tableau croisé dynamique
    Par invitee518b267 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 20/02/2012, 15h41
  4. Menu déroulant et graphique croisé dynamique (Excel 2007)
    Par invite05a67b21 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 12/07/2011, 14h38
  5. tableau croisé Macro
    Par invite64656c8a dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 10/03/2011, 16h22