Copier selection depuis une autre feuil, coller dans Word

Résolu/Fermé
benjamin67VBA Messages postés 8 Date d'inscription mardi 30 juin 2015 Statut Membre Dernière intervention 21 avril 2017 - 25 juil. 2016 à 18:26
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 29 juil. 2016 à 16:27
Bonjour,

J'ai un peu parcouru les topics, mais je n'ai pas trouvé de réponse à ma question :
Vous le remarquerez, je suis pas une brute en VBA
Je crée un tableau Excel de saisie de données pour les exporter dans une trame word.

Tout marche bien sauf pour importer mes tableaux excel dans le document word, notamment si le tableau vient d'un autre onglet que celui ou j'ai lancé la maccro avec mon bouton activeX.

Je sais pas si j'ai codé au mauvais endroit ( module ? objet ? )

Voilà le code, qui marche si je ne fait pas référence à une autre feuil, et dans ce cas là, qui ne marche pas :


Private Sub CommandButton1_Click()

 Dim Cible As Object
 Dim chemin As String, fichier As String
  

    Sheets("Feuil2").Range(Cells(1, 1), Cells(6, 9)).CopyPicture Appearance:=xlPrinter
' j'ai essayé avec sheets.activate, sheets.select, with sheets etc.. Rien n'y fait 
'J'ai aussi éssayé de créer un Sub dans la feuil 2 et de call dans ce sub, mais le call ne fonctionne pas

    'A terme le range selectionné sera variable 

    chemin = ActiveWorkbook.Path
    fichier = "ESSAI.docx"
    
    ' lancement de Word
    ' gestion de l'erreur "activeX" d'après archives MPFE Laurent Longre
    On Error Resume Next
        Set Cible = CreateObject(class:="Word.Application")
    On Error GoTo 0
    If Cible Is Nothing Then
        Set Cible = New Word.Application
    End If
    
    With Cible
        
        Documents.Open Filename:=chemin & "\" & fichier
        .Visible = True
        .Selection.Goto What:=wdGoToBookmark, Name:="S1"
        .Selection.Paste
              
        
  End With
  
  Set Cible = Nothing
  
  ActiveWorkbook.Application.Visible = True
  

 End Sub



j'en profite aussi rapidement : Lorsque que j'execute le code sans référence vers la feuil2, ça fonctionne très bien, mais si je le relance (Word fermé) ca ne fonctionne plus. Je dois alors fermer et excel et le reouvrir pour ue cela fonctionne à nouveau, bizarre. Y-a t-il un truc ?

Je vous remercie d'avance pour vos réponses !




Voilà, merci d'avance pour vos réponses !
A voir également:

6 réponses

thev Messages postés 1884 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 17 novembre 2024 691
26 juil. 2016 à 15:55
Bonjour,

Pour que ça fonctionne, il suffit d'activer la feuille choisie.
ci-dessous code simplifié

Private Sub CommandButton1_Click()

Dim Cible As New Word.Application
Dim plage As Range
Dim chemin As String, fichier As String

With Sheets("Feuil2")
.Activate
.Range(Cells(1, "A"), Cells(6, "I")).CopyPicture Appearance:=xlPrinter
End With

' ouverture du fichier Word
chemin = ActiveWorkbook.Path
fichier = "ESSAI.docx"
With Cible
Documents.Open Filename:=chemin & "\" & fichier
.Visible = True
.Selection.Goto What:=wdGoToBookmark, Name:="S1"
.Selection.Paste
End With

End Sub


--
 
0
benjamin67VBA Messages postés 8 Date d'inscription mardi 30 juin 2015 Statut Membre Dernière intervention 21 avril 2017
26 juil. 2016 à 17:19
Merci pour ta réponse, mais ca ne fonctionne pas,

J'ai une erreur 1004, erreur définir par l'application ou par l'objet sur le .range(cells... dans le With

J'ai essayé d'adapter avec une fonction with mais ça ne fonctionne pas

Une idée ?
0
thev Messages postés 1884 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 17 novembre 2024 691
26 juil. 2016 à 18:03
Pas d'idée spéciale car cela fonctionne sur ma version Excel 2013. Sans l'activate, j'ai effectivement une erreur 1004.
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
Modifié par cs_Le Pivert le 26/07/2016 à 18:34
Bonjour,

comme ceci:

Private Sub copie_word()
Dim chemin As String, fichier As String
 'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
  Sheets("Feuil2").Activate
 Sheets("Feuil2").Range(Cells(1, 1), Cells(6, 9)).CopyPicture Appearance:=xlPrinter
 'A terme le range selectionné sera variable
  chemin = ActiveWorkbook.Path
  fichier = "ESSAI.docx"
  'ouvre session word
    Set WordApp = New Word.Application
     'ouvre du document Word
    Set WordDoc = WordApp.Documents.Open(chemin & "\" & fichier)
    WordApp.Visible = True
   WordApp.Selection.Goto What:=wdGoToBookmark, Name:="S1"
    WordApp.Selection.Paste
      'Ferme le document word en sauvegardant les modifications
    WordDoc.Close True
    'ferme la session Word
    WordApp.Quit
   ActiveWorkbook.Application.Visible = True
  End Sub


@+ Le Pivert
0
benjamin67VBA Messages postés 8 Date d'inscription mardi 30 juin 2015 Statut Membre Dernière intervention 21 avril 2017
Modifié par benjamin67VBA le 29/07/2016 à 11:11
Bonjour,

Merci pour votre réponse, mais ça ne marche toujours pas : même erreur 1004 sur le range

J'ai également essayé sur un nouveau doc excel, j'ai une erreur de compilation

Cela peut-il venir d'un paramètre à activer/desactiver ? à ce que contient le range ?
Si ça peut jouer : je travaille sur Windows server 2012, avec excel 2013

Merci

MAJ : EN fait le code de base marche : quand je code dans module, et pas dans feuill1 !!!!
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
29 juil. 2016 à 11:29
Voilà un exemple à dezipper qui fonctionne chez moi:


http://www.cjoint.com/c/FGDjCr87VGQ
0
benjamin67VBA Messages postés 8 Date d'inscription mardi 30 juin 2015 Statut Membre Dernière intervention 21 avril 2017
29 juil. 2016 à 11:52
Merci pour ta réponse, j'ai trouvé la solution : je devais coder dans un module, pas dans ma feuill1

J'ai maintenant un problème de compatibilité avec ce nouveau code et le code auquel je vais le rattacher :


je codais initialement de la manière suivante :

Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordApp = CreateObject("word.application")    'ouvre une session Word
    
If Cells(17, 2).Value = "CHS" Then

    
    WordApp.Visible = True
    Set WordDoc = WordApp.Documents.Open("\\xxxx\CHS.docx")  'ouvre le document Word
    

    MsgBox "Le document est prêt"
    
    WordDoc.Bookmarks("S1").Range.Text = Cells(5, 2).Value
    WordDoc.Bookmarks("S2").Range.Text = Cells(5, 2).Value
    WordDoc.Bookmarks("S3").Range.Text = Cells(5, 2).Value
    WordDoc.Bookmarks("S20").Range.Text = Cells(5, 2).Value

    WordDoc.Bookmarks("S4").Range.Text = Cells(8, 2).Value 'CP
    WordDoc.Bookmarks("S5").Range.Text = Cells(8, 2).Value

etc etc etc etc 





J'y vais un peu à tâtons, pour modifier ce que tu m'as donné, je suis pas vraiment familiarisé avec ces fonctions

Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Set WordDoc = WordApp.Documents.Open(chemin & "\" & fichier)
    WordApp.Visible = True
    WordApp.Selection.Goto What:=wdGoToBookmark, Name:="S1"
    WordApp.Selection.Paste




Une idée ?

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
29 juil. 2016 à 13:41
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
29 juil. 2016 à 16:27
0