copier/coller sélection + objets en vba dans nouveau classeur

JerCaz

XLDnaute Occasionnel
Bonjour le forum,

je viens solliciter votre aide face à un petit problème que je n'arrive pas à résoudre...
J'ai réalisé une application sous excel 2002, et une macro permettant d'exporter dans un nouveau fichier excel le contenu des cellules A1 à Z40 par copier/coller, en VBA.
Seulement, j'ai dans cette sélection 2 objets (une image et un trait), que je n'arrive pas à inclure à mon "copier/coller" en VBA...

J'ai cherché la réponse à mon problème dans les archives du forum, j'ai vu la demande de "bobnath" sur son "copier/coller en vba" mais qui ne m'aide pas.

Utilisant une connexion ultra bridée sur mon lieu professionnel (là où j'ai créé mon fichier...), je ne peux pas vous joindre un extrait de ce fichier par "ci-joint".
Je vous joint donc directement mon bout de code, espérant que ça vous sera utile et suffisant...

Code:
Range("A1:Z40").Select      'sélection de la zone à copier
    Selection.Copy              'on copie dans le presse papier
    Workbooks.Add               'créaton d'un nouveau fichier xls
    Range("A1").Select
    ActiveSheet.Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False                   'collage spécial des valeurs
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False         'collage spécial des formats
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False         'collage spécial des largeurs de colonnes
    ActiveSheet.Name = "Tableau"                    'on renomme l'onglet du tableau du nouveau fichier

Je voudrais inclure dans ma sélection à copier les objets suivants:
- "Line 6"
- "Picture 2"
Je connais les noms de ces objets car j'ai utilisé l'outil de création de macros... mais quand je veux inclure cette sélection à mon code ci-dessus, j'obtiens un message d'erreur... D'ailleurs, voici le code qu'il me propose:
Code:
ActiveSheet.Shapes("Line 6").Select
    ActiveSheet.Shapes.Range(Array("Line 6", "Picture 2")).Select
    Selection.Copy

J'ai donc essayé d'inclure ce bout de code en dessous de "Range("A1:Z40").Select".
Et là, c'est le drame... voici mon message d'erreur:
Erreur d'exécution '1004'
La méthode PasteSpecial de la classe Range a échoué

Or, j'utilise un collage spécial car je veux conserver la mise en forme avec les formats de cellules, et les valeurs, mais pas de liens...

Je me tourne donc vers des pros qui sauront m'aider à débrouiller cette énigme...
Vous remerciant par avance de l'aide que vous pourrez m'apporter...

Cordialement,

JerCaz
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : copier/coller sélection + objets en vba dans nouveau classeur

bonjour

ce n'est qu'une erreur 1004 ! ce n'est pas impossible à résoudre !

essais d'abord en copiant séparément les deux !

ActiveSheet.Shapes("Line 6").Select: Selection.Copy
. . .suite du code

puis pour le deuxième
ActiveSheet.Shapes("Picture 2").Select: Selection.Copy
. . .suite du code
 
Dernière édition:

JerCaz

XLDnaute Occasionnel
Re : copier/coller sélection + objets en vba dans nouveau classeur

Bonjour Roland M, et merci d'avoir pris en compte ma "détresse"...

J'ai donc essayé de faire comme tu proposes, à savoir copier séparément les 2, mais j'ai toujours ce fameux code '1004'...

Ce qui donne:
Code:
    Range("A1:Z40").Select      'sélection de la zone à copier
    Selection.Copy              'on copie dans le presse papier
    ActiveSheet.Shapes("Line 6").Select
    Selection.Copy
    ActiveSheet.Shapes("Picture 2").Select
    Selection.Copy
    Workbooks.Add               'créaton d'un nouveau fichier xls
    Range("A1").Select
    ActiveSheet.Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False                   'collage spécial des valeurs
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False         'collage spécial des formats
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False         'collage spécial des largeurs de colonnes
    ActiveSheet.Name = "Tableau"                    'on renomme l'onglet du tableau du nouveau fichier

Le débogueur me pointe en surbrillance dans le code VBA cette partie:
Code:
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False                   'collage spécial des valeurs

J'imagine que l'erreur vient probablement du fait que je rempli 3 fois le presse papier sans le vider, mais ma grosse difficulté c'est que je dois aller vider son contenu dans le nouveau fichier... et je ne sais pas jongler en VBA entre les 2 fichiers (à savoir l'original, et la copie...)

Pourtant, j'essaie de m'instruire... je me suis offert "Programmation VBA pour Excel Pour Les Nuls"... Mais je crains que mon niveau de compétences en VBA soit vraiment désespéré... et peut-être même désespérant vu par vos yeux...

Enfin, bref, encore une fois merci beaucoup d'avoir pris du temps pour essayer de m'aider...
 

JerCaz

XLDnaute Occasionnel
Re : copier/coller sélection + objets en vba dans nouveau classeur

Bonjour,

question très certainement idiote, mais qui pourrait m'aider à résoudre mon problème...

Peut-on remplir "trois fois" le presse papier avant d'aller vider son contenu dans un autre fichier excel?

J'ai essayé de faire comme cela:

Code:
    Range("A1:Z40").Select  
    ActiveSheet.Shapes("Line 6").Select
    ActiveSheet.Shapes("Picture 2").Select
    Selection.Copy
    Workbooks.Add              
    Range("A1").Select
    ActiveSheet.Activate
    Selection.Paste
(...)

mais ça ne fonctionne pas (je dois avouer que j'en étais quasiment sûr), mais ne sachant pas trop comment faire...

D'avance merci pour votre aide....
 

Discussions similaires

Réponses
2
Affichages
122
Réponses
5
Affichages
121

Statistiques des forums

Discussions
312 215
Messages
2 086 320
Membres
103 178
dernier inscrit
BERSEB50