Copie d'onglet & références des formules

Bonjour,

je voudrais copier 2 onglets dans un nouveau classeur.

        ThisWorkbook.Worksheets("Results").Copy 'Before:=WkbExport.Sheets(1)  'je crée le classeur cible par export d'un onglet
        Set WkbExport = ActiveWorkbook                                         'ca ne sert probablement à rien
        WkbSource.Sheets(AdditionalTab).Copy After:=WkbExport.Sheets(1)        'je copie le deuxième onglet dans le classeur cible.

(sans rire, je n'ai pas changé les noms pour vous )

(par contre, j'ai ajouté les commentaires)

Mon problème, c'est que je souhaiterais que les formules (et le tableau croisé dynamique) de l'onglet AdditionalTab soient copiés strictement, et plus exactement que les noms des références des formules (et la plage de donnée du TCD) soient recopiés lettre pour lettre, sans faire de changement pour pointer sur le classeur source.

Il y a une petite option dans la méthode copy pour faire ca ?

J'ai testé - sur les conseils de mon ami Google - d'ajouter un truc du genre :

        With Sheets(AdditionalTab)
            .Range("A1:S99").Formula = WkbSource.Sheets(AdditionalTab).Range("A1:S99").Formula
        End With

Mais si cela semble bien fonctionner pour les formules, le tableau croisé dynamique fait de la résistance : il reste lié au classeur source. (le bougre)

Bon, j'ai essayé en écrivant directement le tableau croisé dynamique avec des formules, du coup, ca marche bien. Mais je crois qu'ils sont attachés à leurs tableaux croisés...

Bonjour

Je n'ai pas de solution actuellement et peut-être que je n'en aurai pas après

Mais pour tester un fichier serait souhaitable

Bonjour et bonne année,

Peux-tu joindre un fichier et préciser ta demande?

Ce que je comprends :

1 - Créer un classeur comportant 2 feuilles

2 - Une des feuilles comporte un TCD et on doit rapatrier les données source de ce TCD dans ce nouveau classeur.

Cdlt.

Hmm, du coup, j'ai créé un classeur

Le but, c'est que la copie soit faite de telle sorte le TCD créé dans le nouveau classeur pointe sur Feuil1!$A$1:$B$5 au lieu de [Classeur1.xlsm]Feuil1!$A$1:$B$5

Si ca se trouve, l'astuce consiste à dupliquer le workbook entièrement, et supprimer l'onglet Feuil3

Merci à vous

6classeur1.xlsm (18.24 Ko)

Bonsoir

Je te propose cette macro

La partie TCD est issue de l'enregistreur

A tester

Sub Export()
Dim Chemin As String, Fichier As String

  Chemin = ThisWorkbook.Path & "\"
  Fichier = "Sauvegarde.xlsx"
  Sheets(Array("Feuil1", "Feuil2")).Copy
  Application.DisplayAlerts = False     ' Supprime l'éventuel fichier identique sans avertissement
  With ActiveWorkbook
    .Sheets("Feuil2").PivotTables("Tableau croisé dynamique1").ChangePivotCache _
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Chemin & "[" & Fichier & "]Feuil1!R1C1:R5C2", _
        Version:=xlPivotTableVersion14)
    .SaveAs Filename:=ThisWorkbook.Path & "\Sauvegarde.xlsx", FileFormat:=xlOpenXMLWorkbook
    .Close
  End With

End Sub

Bonjour et bonne année,

Une autre proposition sur le même principe.

Cdlt.

Option Explicit

Public Sub Export()
Dim wb As Workbook
Dim sPath As String, sFilename As String, sSrc As String

    Set wb = ThisWorkbook
    sPath = wb.Path & Application.PathSeparator
    sFilename = sPath & "Sauvegarde.xlsx"

    sSrc = wb.Worksheets("Feuil1").Cells(1).CurrentRegion.Address
    sSrc = "Feuil1!" & sSrc

    wb.Worksheets(Array("Feuil1", "Feuil2")).Copy
    With ActiveWorkbook
        .Worksheets("Feuil2").PivotTables(1).ChangePivotCache _
                ActiveWorkbook.PivotCaches.Create(xlDatabase, sSrc, 4)
        .SaveAs Filename:=sFilename, FileFormat:=xlOpenXMLWorkbook
        .Close
    End With

    Set wb = Nothing

End Sub

Je vous remercie pour vos propositions, et je suppose qu'elles signifient que ce que je souhaite faire n'est pas possible ?

Je ne souhaite pas créer un TCD en macro, je n'aurais pas posé la question

Je souhaite que la copie reprenne correctement les références.

Je ne peux pas créer le TCD en macro, car je ne souhaite pas définir à priori le contenu de l'onglet. L'outil est amené à vivre dans les mains de personnes qui ne vont pas faire de macro, mais qui vont souhaiter modifier l'onglet. (retirer le TCD, le remettre, le faire différemment, que sais-je)

Bonjour

Attention : Les macros ne créent pas de TCD mais elles modifient seulement l'emplacement des données sources

Mais c'est toi qui décide

Ah, oui, effectivement, on fait référence à un tableau sans le nommer, donc je pourrais exécuter un bout de code pour un éventuel TCD qui serait là (ou pas).

C'est pas beau, mais ca marcherait

Je teste cela, merci !

Rechercher des sujets similaires à "copie onglet references formules"