Macro Excel, insérer document dans un nouveau doc Word
Re bonjour à tous,
Je suis en train de créer une macro vba qui créée un document word dans lequel doivent s'insérer des documents word au nom dynamique.
Voici une partie du code que j'ai écrit
With appWord.ActiveDocument.Paragraphs(1)
.Range.Font.Size = 14
.Format.Alignment = wdAlignParagraphCenter
.Range.Font.Bold = True
.SpaceAfter = 10
.Range.Text = "Voici mon document Word" & vbCrLf
End With
For i = 1 To 33 'Données récupérées dans le tableur Excel
If Cells(i, 4).Value = 1 Then 'vérifier une condition, si elle est validée, il faut insérer un fichier au nom dynamique
Selection.EndOf Unit:=wdStory, Extend:=wdMove
Selection.Collapse Direction:=wdCollapseEnd
'Selection.InsertFile Filename:=Chemin
End If
NextJ'ai une erreur qui s'affiche : propriété ou méthode non gérée par cet objet.
C'est la partie Selection qui créée une erreur.
J'aimerais bien pouvoir insérer le fichier au curseur, en l'ayant bien mis à la fin.
Je me demande si ce n'est pas un problème de passage entre Excel et Word. Dans la boucle For, le programme est dans Excel alors que dans le If, je veux qu'il soit dans Word.
Avez-vous une idée à me soumettre ?
Je vous remercie d'avance pour votre aide
Sub rapportAuto()
Dim AF As String
Dim NumPC, NbMalfa As Integer
Dim Check As Boolean
Dim Chemin As String
Dim NomFichier As String
Dim TypeRapport As String
Dim DocWord As Word.Document
Dim appWord As Word.Application
Set appWord = New Word.Application
appWord.Visible = True
Set DocWord = appWord.Documents.Add
NomFichier = "tps.1" 'normalement c'est un nom dynamique mais pour démarrer je mets un fichier unique
TypeRapport = Range("H1").Value 'Partie du code inutile à commenter ici, c'est juste pour récupérer une info qui change le chemin d'accès du fichier à insérer
If TypeRapport = "Assistance" Then
Chemin = Range("M1").Value
ElseIf TypeRapport = "Expertise" Then
Chemin = Range("M2").Value
Else
MsgBox ("il y a une erreur en H1, veuillez indiquer le type de rapport à générer")
End If
AF = 25
With appWord.ActiveDocument.Paragraphs(1)
.Range.Font.Size = 14
.Format.Alignment = wdAlignParagraphCenter
.Range.Font.Bold = True
.SpaceAfter = 10
.Range.Text = "Voici le doc word créé" & vbCrLf
End With
For i = 1 To 33
If Cells(i, 4).Value = 1 Then
' c'est ici que j'essaye mainte et mainte chose
With appWord.ActiveDocument.Paragraphs.Last
.Range.Select
' .Selection.Cut
End With
With Selection
.Paste
.EndOf Unit:=wdStory, Extend:=wdMove
Selection.Collapse Direction:=wdCollapseEnd
Selection.InsertFile Filename:=Chemin
End With
' End With
NbMalfa = NbMalfa + 1 'inutile ici, ce sera traité plus tard
End If
Next
End SubJ'ai trouvé ma réponse
docWord.GoTo what:=wdGoToSection, which:=wdGoToFirst
docWord.Characters.Last.Select
docWord.ActiveWindow.Selection.InsertBreak Type:=wdPageBreak
docWord.ActiveWindow.Selection.InsertFile Filename:=Chemin, ConfirmConversions:=False, link:=FalseBonjour JHendrix, BrunoM45,
Super, j'ai pas besoin de chercher. Tu as plus d'une corde à...
ta guitare bien sûr.
Et comme cela peut servir à d'autres. Je te donne un vote