Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Copier dans Excel et coller dans Word à l'emplacement du curseur

dadoo99

XLDnaute Nouveau
Bonjour à toutes et tous,

J'ai cherché sur plusieurs forum, mais rien trouver de concluant.
Voici ce que je souhaite réaliser : Copier la sélection de cellules Excel et la coller sous forme d'image dans Word à l'emplacement actif du curseur.

J'arrive à tout faire sauf à positionner mon "collage" à l'endroit où se trouve le curseur.

Voici mon code :
VB:
Sub Copier_Colle_Image_Cellule_selectionnée()

    Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
    Set wdapp = GetObject(, "Word.Application")
    wdapp.activedocument.Range(0, 0).PasteSpecial Placement:=wdInLine
    wdapp.Activate


End Sub


Merci pour votre aide.
 
Solution
Hé oui Hervé, j'avais omis cette précision importante (sorry)

Juste incroyables !!!
Vous êtes juste incroyables
Merci à vous pour vos solutions.

Petit débriefing : sur mon ordi toutes fonctionnent sauf malheureusement celle de Staple1600
Ensuite, lorsque le curseur du document Word est dans un texte, la macro ajoute un retour. Le texte qui suit le curseur va donc à la ligne.

J'ai aussi reçu une réponse d'Eric Kergresse que j'avais contacté en privé et qui a trouvé lui aussi une solution qui fonctionne. Avec la sienne, lorsque le curseur est dans du texte, le texte qui suit ne va pas à la ligne. C'est exactement ce dont j'ai besoin. Je vais donc utiliser son code :

VB:
Sub Copier_Coller_Image_Cellule_selectionnée_Kergresse()...

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Je pense qu'il y a un peu d'irréalisme !! dans tes souhaits car il faudra m'expliquer comment peut on savoir ou est le curseur dans word ??? étant donné que c'est Excel qui ouvre Word et le dirige ( c'est le principe Master/slave) donc il n'y a pas de curseur actif défini
Il faudra passer par les signets , ou définir ta zone Range( )
Sinon avant de chercher compliqué , n'y a t-il pas une solution plus simple à reconcevoir ??
 

dadoo99

XLDnaute Nouveau
Salut Hervé,
Merci pour ta réponse. J'adore quand quelque chose paraît irréaliste et qu'au final, quelqu'un trouve une solution.

J'ai cherché d'autres idées et processus, mais ce que je décris, c'est ce dont j'ai besoin. J'ai bien des modèles dans lesquels je pourrais mettre des signets ou définir la zone Range, mais mes modèles ne sont qu'une base et il y a plein de modifications (que ce soit dans mes modèles Excel ou des dans mes modèles Word) en fonction du mandat que j'ai à réaliser. C'est pour cela que le processus que je décris est très flexible et idéal pour moi.

Important, je précise que l'idée derrière cela est que le fichier Word soit déjà ouvert et le curseur placé au bon endroit. Ainsi Excel doit "simplement" switcher sur Word et coller à l'endroit actif du curseur dans Word.

J'espère que cette précision rendra l'irréaliste réalisable
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
@dadoo99 : ah bon ? si on ne nous dit pas tout !!!!!
Si c'est réalisable pourquoi n'as tu pas de propositions qui fusent sur ce forum , réputé un des meilleurs et je sais de quoi je parle ! rare sont les sujets sans proposition/solution !!
Regarde un peu et tu verras que je ne suis pas le seul avec ma 1ere réaction !!
Important : Moi je fais ton opération direct avec un copier/coller puisque Tout est déjà prêt !!
citation : " Tout est possible ... tout est réalisable avec .. ? " ( pour des 'anciens' culture Pub ou sketch)
Bonne continuation ...........et réussite !
 

patricktoulon

XLDnaute Barbatruc
Bonsoir @dadoo99 @herve62

pour coller ou il y a le curseur tu a deux solution

methode 1 on capte la selection( même si il n'y a pas de texte sélectionne a partir du moment
ou le carret clignote (curseur)est placé dans le document il y a sélection (même vide)
parti de là c'est simple
VB:
ub Copier_Colle_Image_Cellule_selectionnéeV_1()
    Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
    Set wdapp = GetObject(, "Word.Application")
    If Not wdapp Is Nothing Then
        wdapp.Activate
        With wdapp.ActiveDocument.ActiveWindow.Panes(1).Selection
            .Paste
        End With
        CreateObject("wscript.shell").SendKeys "{ENTER}"
    End If

End Sub
après il y a la méthode à l'ancienne
on active la fenêtre et on sendkeys
VB:
Sub Copier_Colle_Image_Cellule_selectionnéeV_2()
    Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
    Set wdapp = GetObject(, "Word.Application")
    If Not wdapp Is Nothing Then
        wdapp.Activate
         CreateObject("wscript.shell").SendKeys "^v{ENTER}"
    End If

End Sub

dans le deux j’enserre une copie image d'une plage a l'endroit ou est le curseur et le reste passe en dessous
démo méthode 1



démo méthode 2


 

patricktoulon

XLDnaute Barbatruc
re
et vec celle ci tu n'a meme pas besoins d'activer la fenêtre word
VB:
Sub Copier_Colle_Image_Cellule_selectionnéeV_1()
    Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
    Set wdapp = GetObject(, "Word.Application")
    If Not wdapp Is Nothing Then
        wdapp.Activate
        With wdapp.ActiveDocument.ActiveWindow.Panes(1).Selection
            .Paste
            .InsertAfter vbNewLine
        .Range.Move 2, 1
        End With
         End If
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Une autre syntaxe possible
(test OK sur mon PC)
VB:
Sub XL_vers_Word()
'cocher la référence idoine
Dim wrdApp As Word.Application
'copie du contenu de A33
[A33] = "Staple": [A33].Copy
        
On Error Resume Next
Set wrdApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
End If
' coller dans Word
wrdApp.Application.Selection.PasteSpecial _
            Link:=False, _
            DataType:=wdPasteText, _
            Placement:=wdInLine, _
            DisplayAsIcon:=False
Set wrdApp = Nothing
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir patrickktoulon

Oui mais on peut s'amuser le cas échéant
wdPasteBitmap
wdPasteDeviceIndependentBitmap
wdPasteEnhancedMetafile
wdPasteHTML
wdPasteHyperlink
wdPasteMetafilePicture
wdPasteOLEObject
wdPasteRTF
wdPasteShape
wdPasteText
 

herve62

XLDnaute Barbatruc
Supporter XLD
Super !!!! Après 24h à zero réponse , j'ai sonné la charge et ça marche !!! > "vous avez dit Bizarre .. comme c'est Bizarre ?" ( devinez de qui est cette célèbre réflexion culte ??)
je vous laisse vous amuser ( salut Jean Michel )
Bon WE à tous
 

dadoo99

XLDnaute Nouveau
Hé oui Hervé, j'avais omis cette précision importante (sorry)

Juste incroyables !!!
Vous êtes juste incroyables
Merci à vous pour vos solutions.

Petit débriefing : sur mon ordi toutes fonctionnent sauf malheureusement celle de Staple1600
Ensuite, lorsque le curseur du document Word est dans un texte, la macro ajoute un retour. Le texte qui suit le curseur va donc à la ligne.

J'ai aussi reçu une réponse d'Eric Kergresse que j'avais contacté en privé et qui a trouvé lui aussi une solution qui fonctionne. Avec la sienne, lorsque le curseur est dans du texte, le texte qui suit ne va pas à la ligne. C'est exactement ce dont j'ai besoin. Je vais donc utiliser son code :

VB:
Sub Copier_Coller_Image_Cellule_selectionnée_Kergresse()
'Edité par Eric Kergresse. Merci à lui...
Dim Wdapp As Object

    Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture
    Set Wdapp = GetObject(, "Word.Application")
    With Wdapp.Selection
             .Paragraphs.Add
             .PasteSpecial Placement:=0
    End With
    Wdapp.Activate
    Set Wdapp = Nothing
 
End Sub

MERCI à tous
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

dadoo99
Comme indiqué dans mon code, il faut activer la référence à la librairie Word
Ou alors il faut modifier le code en déclarant
Dim Wdapp As Object

NB: J'avais testé avec Office 2013 sur mon PC
(avec un document Word et un classeur Excel ouverts, mais non enregistrés)
 

dadoo99

XLDnaute Nouveau
Salut Patrick,
Effectivement cela fonctionne aussi maintenant ! Merci !
Salut Staple,
Merci beaucoup pour cette précision. J'ai déclaré Dim Wdapp As Object et ça fonctionne aussi.

Vous êtes au top
Encore merci...
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…