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 :
qui me copie très bien chaque feuille à la suite l'une de l'autre, dans la 1ere feuille, graphique compris.
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
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 :
mais, cette fois ci mon code ne fonctionne plus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ActiveSheet.PasteSpecial Format:="Picture (Enhanced Metafile)", Link:=False, DisplayAsIcon:=False
j'obtiens l'erreur suivante :
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
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 !
Partager