Recomposition d'une feuille en format image
Bonjour à tous,
Après tellement d'heures à essayer en vain , voici mon problème:
par une commande, je souhaite obtenir une image recomposée de différentes parties d'une feuille d'un classeur1 et la copier dans un classeur2 en vue de l'envoyer en pièce jointe par la suite.
Ci joint une partie du code qui fonctionne pour copier la sélection ("A1:Q4") dans le classeur2.
Mais ensuite, je n'arrive pas à copier de la même manière la sélection("A10:Q20") du classeur1 juste dessous la sélection("A1:Q4") du classeur2 copiée précédemment et ensuite enregistrer cette feuille ainsi recomposée .
Merci beaucoup pour votre aide.
Range("A1:Q4").Select
Selection.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
Workbooks.Add
ActiveSheet.Paste
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\......classeur2.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveWindow.Close
bonjour
pourquoi "recopier en dur" comme si tu avais des feuilles de papier et un crayon ?
sans Excel, tu vas dans le fichier source, tu copies une zone de cellules,
puis tu vas dans le fichier de destination à l'endroit que tu souhaites, et tu fais "collage spécial avec liaison"
c'est fini !
maintenant toute modification de la source est répercutée dans la destination.
pas de VBA
merci JMD,
Mais l'opération que je souhaite faire n'est qu'une partie de ce que fait mon command button.
Je souhaite qu'elle soit exécutée au sein des pas VBA...
Je n' arrive pas à lui faire copier la deuxième sélection (A10:Q20)du classeur1 vers (A30:Q40) du classeur 2 par exemple.Je suis bloqué par la syntaxe au moment de selectionner la cellule A30 du classeur 2 pour lui dire de copier là...
Range("A1:Q4").Select
Selection.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
Workbooks.Add
ActiveSheet.Paste
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\...classeur2.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveWindow.Close
Windows("classeur1.xls").Activate
Range("A10:Q20").Select
' jusque là ça marche
' maintenant je veux qu'il copie "A10:Q20" du classeur "feuille mvt22" en "A10" du classeur "classeur2"
Peux -tu m'écrire cela??
Bonjour, Salut jmd !
Mettons les choses au point tout de suite !
un code efficace c'est... pas de Select, Selection ou Activate inutiles, des expressions qualifiées, laisser les objets apparents de côté (Window) au profit des composants sur lesquels on travaille (Workbook, Worksheet...), éviter si possible (et ça l'est le plus souvent) les copier-coller, trop lents...
Et encore pas mal de choses, mais en résumé, on ne fait pas comme en manuel dans Excel et on obtient alors un code qui ne ressemble plus en rien à du code enregistré !
Ce n'est pas ton cas. Tu ne cites que des fragments de code mais ta procédure paraît en outre quelque peu ésotérique avec tes CopyPicture dont je ne vois guère la nécessité.
Si tu dis que tu veux réorganiser des données ailleurs, rien de plus simple si on se contente de faire exactement ce qu'on dit vouloir faire et rien de plus !
Classeur2.FeuilleX.PlageA1:Q4.Value = Classeur1.FeuilleY.PlageA1:Q4.Value
Classeur2.FeuilleX.PlageA5:Q15.Value = Classeur1.FeuilleY.PlageA10:Q20.ValueVoilà le principe (qu'il faut mettre en syntaxe VBA bien sûr). On se contente de dire : PlageCible = PlageSource C'est magique et ça suffit, pas de copier pas de coller et c'est plus rapide.
On peut agrémenter cela selon contexte, avec des instructions With, des variables Range, des Tableaux...
Cordialement.
Merci Mferrand, et Jmd
j' ai pu résoudre mon problème grâce à vos éclairages !!!!
A bientot