Copier selection depuis une autre feuil, coller dans Word
Résolu
benjamin67VBA
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
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 :
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 !
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:
- Copier selection depuis une autre feuil, coller dans Word
- Word 2013 - Télécharger - Traitement de texte
- Supprimer une page dans word - Guide
- Tableau word - Guide
- Historique copier coller - Guide
- Copier coller pdf - Guide
6 réponses
Bonjour,
Pour que ça fonctionne, il suffit d'activer la feuille choisie.
ci-dessous code simplifié
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
Pas d'idée spéciale car cela fonctionne sur ma version Excel 2013. Sans l'activate, j'ai effectivement une erreur 1004.
Bonjour,
comme ceci:
@+ Le Pivert
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
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 !!!!
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 !!!!
Voilà un exemple à dezipper qui fonctionne chez moi:
http://www.cjoint.com/c/FGDjCr87VGQ
http://www.cjoint.com/c/FGDjCr87VGQ
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 :
J'y vais un peu à tâtons, pour modifier ce que tu m'as donné, je suis pas vraiment familiarisé avec ces fonctions
Une idée ?
Merci
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Et voila cela en complément:
https://www.developpez.net/forums/d61897/logiciels/microsoft-office/word/vba-word/reference-microsoft-word/#post417934
Là, il y a tous les cas de figure!
https://www.developpez.net/forums/d61897/logiciels/microsoft-office/word/vba-word/reference-microsoft-word/#post417934
Là, il y a tous les cas de figure!
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 ?