Copie d'un objet dans un classeur et le coller dans un autre

Bonjour,

J'ai objet qui se trouve dans un classeur et je souhaite le coller dans la cellule active d'un autre classeur (qui n'est jamais le même car un classeur par jour de travail).

J'ai réussi à le faire avec ce code mais je souhaiterais savoir s'il est possible de le faire sans sans passer par l'activation du classeur où se trouve mon objet et la copie de l'objet.

Merci d'avance.

Sub Signature_bis()
'
' Signature_bis Macro
'
Dim monclasseur As String
monclasseur = ActiveWorkbook.Name

Windows("PERSONAL.XLSB").Activate
ActiveSheet.Shapes.Range(Array("Picture 1")).Select
Selection.Copy

Workbooks(monclasseur).Activate
ActiveSheet.Paste

End Sub

Bonjour Nonogeant

Tu peux essayer comme ça

Sub Signature_bis()
  Dim monclasseur As String
  ' Signature_bis Macro
  Workbooks("PERSONAL.XLSB").Sheets(1).Shapes.Range(Array("Picture 1")).Copy
  ThisWorkbook.ActiveSheet.Paste
End Sub

@+

Bonjour,

merci pour ta réponse.

je viens d'essayer mais j'ai un message d'erreur :

image image

PS : j'ai collé ton code et mis le mien en commentaire.

@+

Bonsoir Nonogeant,

Sans fichier anonymisé, il ne sera pas possible de t'aider plus en avant.

@+

Bonsoir,

je suis nouveau sur ce forum (sur les forums en général) : tu peux être plus précis stp car je ne comprend pas le sens de ta remarque..

Merci d’avance.

Re,

Je demandais d'avoir ton fichier sans donnée personnelle, mais laisse tomber

Essaye ceci

Sub Signature_bis()
  Dim monclasseur As String
  ' Signature_bis Macro
  Workbooks("PERSONAL.XLSB").Sheets(1).Shapes("Picture 1").Copy
  ActiveWorkbook.ActiveSheet.Paste
End Sub

Ca devrait mieux fonctionner, je l'espère

@+

Bonjour,

En utilisant ton code, si je ne me trompe pas, la variable monclasseur ne sert à rien : ça fonctionne mais l'objet 1 est collé dans la cellule active de la feuille 1 de PERSONNAL.XLSB.

En complétant ton code : même conséquence que ci-dessus ???

Pour info, le classeur PERSONNAL.XLSB s'active quand l'objet est copié (c'est ça que je voulais éviter).

Sub Signature_bis()

   ' Signature_bis Macro

    Dim monclasseur As String
    monclasseur = ActiveWorkbook.Name
    Workbooks("PERSONAL.XLSB").Sheets(1).Shapes("Picture 1").Copy
    Workbooks(monclasseur).Activate
    ThisWorkbook.ActiveSheet.Paste

End Sub

@+

Re,

Essaye avec Application.ScreenUpdating alors

Sub Signature_bis()
  ' Signature_bis Macro
   Dim monclasseur As String
   Application.ScreenUpdating = False
   monclasseur = ActiveWorkbook.Name
   Workbooks("PERSONAL.XLSB").Sheets(1).Shapes("Picture 1").Copy
   Workbooks(monclasseur).Activate
   ActiveWorkbook.ActiveSheet.Paste
   Application.ScreenUpdating = True
End Sub

@+

Bonjour,

idem : ça fonctionne mais l'objet 1 est collé dans la cellule active de la feuille 1 de PERSONNAL.XLSB.

Et si au lieu d'enregistrer le classeur actif dans la variable monclasseur, j'enregistrais le chemin complet de la cellule active et ?

Re,

L'erreur est là

ThisWorkbook.ActiveSheet.Paste

Il faut remplacer par

ActiveWorkbook.ActiveSheet.Paste

@+

ça marche : un grand merci pour ta patience.

Une dernière petit question : tu aurais la ligne de commande pour enregistrer dans ma variable le chemin complet de la cellule active ?

Merci d'avance.

@+

Re,

Tu peux avoir le chemin complet d'un fichier, mais pas d'une cellule

Sinon, c'est :

MonChemin =  ActiveWorkbook.Path

@+

ah ok.

Donc pour revenir à la cellule qui était active avant de lancer ma macro :

- j'enregistre la cellule active dans une variable et le classeur actif dans une autre

- je reviens sur la cellule en rappelant mes 2 variables ?

Re,

Je ne comprends pas tout, mais avec

Application.ActiveCell.Select

Ca devrait le faire, pas besoin d'une usine à gaz

@+

C'est le pb quand on maîtrise pas le langage : on fait compliqué

Encore merci et certainement à bientôt

@+

Re,

N'oublies pas d'indiquer sujet résolu en cliquant sur le "V" en haut à droite du bandeau, mais c'est fait

Salut,

c'est noté pour la prochaine fois.

@+

Rechercher des sujets similaires à "copie objet classeur coller"