Bonjour,
je dois vérifier que ceci est faisable techniquement :

J'ai 2 templates.
Je vais :
- prendre le résultat du template 1 et le copier dans une nouvelle feuille "toto"
- à la suite (dans "toto"), juste en dessous, copier le résultat du template 2 pour la france
- à la suite( dans "toto"), juste en dessous, copier le résultat du template 2 pour l'italie
- etc... je copie le template 2 n fois (dans "toto") (une boucle qui fait une instance du template pour n pays)

Je vais copier ces temlpates dans un nouveau fichier, une nouvelle feuille. Pour simplifier, j'ai basé mes tests sur la copie de n onglets dans le meme fichier Excel, sur le 1er onglet.
en me basant sur mes recherches sur le net, je suis arrivé à quelques essais :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Sub TestCopy() 
    For i = 2 To Worksheets.Count 
      Worksheets(i).Range("A1").CurrentRegion.Copy Destination:=ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 
    Next i 
End Sub
qui me copie très bien chaque feuille à la suite l'une de l'autre, dans la 1ere feuille, graphique compris.

Mais....
les graphiques copiés, pointent toujours vers la feuille data. Donc, si je la supprime, les graphiques n'afficheront plus du tout les bonnes choses.
Je veux pouvoir copier n fois les feuilles (avec graphiques), dans une nouvelle feuille, à la queue leu leu, que je pourrai transmettre à des utilisateurs telle quelle, sans d'onglet données. (je vais ouvrir un template, copier les graph, fermer le template, en ouvrir un nouveau, le copier, etc...)


donc, j'etais partie sur la piste suivante : Faire un Paste Special, avec la bonne option (sous forme d'objet Excel, pas de bitmap, car comme j'aurai 70 graphiques, cela ferait un fichier bien trop ennorme !). Donc j'ai trouvé ceci :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ActiveSheet.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False
mais, cette fois ci mon code ne fonctionne plus :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
Sub TestCopy2()
    For i = 2 To Worksheets.Count
    Worksheets(i).Activate
    Range("A1").CurrentRegion.Copy
 
    Worksheets(1).Activate
    ActiveSheet.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False
    Next i
End Sub
j'obtiens l'erreur suivante :

PasteSpecial method of Worksheet class failed

je pensais etre sur la bonne voie....
n'étant pas super doué en VBA, si qqun pouvait m'aider à comprendre où est le problème....

Merci !