Partage
  • Partager sur Facebook
  • Partager sur Twitter

VBA Excel TCD inter fichier

Sujet résolu
    15 mai 2018 à 11:13:29

    Bonjour tout le monde!

    Je souhaite créer un TCD dans un fichier B à partir de données se trouvant dans un fichier A. Le problème c'est que quand dans la source du tableau ou la destination du tableau je rentre un chemin du style "nomDeFichier/nomDeFeuille/cellule" ça ne fonctionne pas alors qu'un chemin du style "nomDeFeuille/cellule" fonctionne mais du coup je ne peux pas créer le tableau dans un autre fichier ou récupérer des données venant d'un autre fichier.

    J'ai vu sur internet quelques solution que je n'ai pas bien compris c'est pour cela que je crée un nouveau post.

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
    Musique .......!
      15 mai 2018 à 11:30:10

      Salut,

      Je vois pas où est le problème, lors de l'insertion du TCD, clique sur la petite icône de sélection de plage pour les données à analyser et sélectionne la plage que tu veux dans le fichier que tu veux.

      • Partager sur Facebook
      • Partager sur Twitter
        15 mai 2018 à 11:53:54

        En fait je dois faire une macro et la source / destination sont des variables, en procédant comme tu le dis je fais une macro qui ne fonctionne que pour une plage de donnée, de plus le code générer par la macro enregistré ainsi ne contient pas de source claire,
        • Partager sur Facebook
        • Partager sur Twitter
        Musique .......!
          15 mai 2018 à 13:19:09

          Quel est ton code ?

          Ca a l'air de se faire plutôt bien en définissant tes 2 classeurs et les utilisant là où il faut (les range de source et de destination).

          • Partager sur Facebook
          • Partager sur Twitter
            15 mai 2018 à 13:41:44

            Workbooks("classeur2.xlsm").PivotCaches.Add(SourceType:=xlDatabase, _
                SourceData:="[classeur1.xlsx]feuil1!A:B").CreatePivotTable _
                tabledestination:="[classeur2.xlsm]feuil1!B2", _
                tablename:="TCD1"
                

            Voici le code, il est dans un module du classeur2,

            Quand je souhaite exécuter le code je reçois un message: "Argument ou appel de procédure incorrect

            • Partager sur Facebook
            • Partager sur Twitter
            Musique .......!
              15 mai 2018 à 17:13:51

              Crée des objets Workbook qui te serviront à référencer tes plages directement plutôt qu'en passant par une string comme c'est fait là (pour sourcedata et tabledestination).

              -
              Edité par Stormweaker 15 mai 2018 à 17:14:16

              • Partager sur Facebook
              • Partager sur Twitter
                16 mai 2018 à 9:08:43

                Super merci j'arrive maintenant à créer les TCD cependant je tombe sur un nouveau problème,

                Lors de la création d'un premier TCD tout fonctionne correctement mais lors de la création du 2eme je reçois une erreur d'exécution 1004: "Erreur définie par l'application ou par l'objet"

                J'ai en fait 2 "sub" pour créer 2 tableaux différents sur la même feuille. Le vrai problème c'est de créer plus d'un tableau sur la même feuille, si je commence par le 2eme tableau il se crée mais le premier ne se créera pas et si je n'en crée qu'un par feuille alors tout fonctionne sauf qu'il me les faudrait sur la même feuille :/

                • Partager sur Facebook
                • Partager sur Twitter
                Musique .......!
                  16 mai 2018 à 9:22:07

                  Le deuxième est placé sur le premier peut être ?

                  Sinon montre le code.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 mai 2018 à 9:54:15

                    Sub tcdA() 'Premier TCD
                        src = "[classeur1.xlsx]Feuil1!A:B" 'Données sources
                        dest = "[classeur2.xlsm]Feuil1!R2C2"
                        
                        Workbooks("classeur2.xlsm").PivotCaches.Create(SourceType:=xlDatabase, _
                            SourceData:=src, Version:= _
                            xlPivotTableVersion12).CreatePivotTable _
                            TableDestination:=dest, _
                            TableName:="Tableau croisé dynamique1", _
                            DefaultVersion:=xlPivotTableVersion12
                    End Sub
                    
                    
                    Sub tcdB() 'Second TCD
                    
                        src = "[classeur1.xlsx]Feuil1!C:D"
                        dest = "[classeur2.xlsm]Feuil1!R10C10"
                        
                        Workbooks("classeur2.xlsm").PivotCaches.Create(SourceType:=xlDatabase, _
                            SourceData:=src, Version:= _
                            xlPivotTableVersion12).CreatePivotTable _
                            TableDestination:=dest, _
                            TableName:="Tableau croisé dynamique1", _
                            DefaultVersion:=xlPivotTableVersion12
                    End Sub

                    Non le deuxième ne se crée vraiment pas

                    ========================

                    En fait c'est bon, problème tout bête mais les deux tableaux avaient le même nom :/

                    -
                    Edité par Emilien W 16 mai 2018 à 10:55:29

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Musique .......!

                    VBA Excel TCD inter fichier

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown