Copier selection depuis une autre feuil, coller dans Word
Résolu
benjamin67VBA
Messages postés
10
Statut
Membre
-
cs_Le Pivert Messages postés 8437 Statut Contributeur -
cs_Le Pivert Messages postés 8437 Statut Contributeur -
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 - Accueil - Informatique
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 ?