Problème de localisation pour coller un élément dans Word
Bonjour à tous,
Je souhaite, depuis VBA sur Excel coller un "tableau" dans dans Word.
Dans le fichier suivant :
1/ localisation dans excel des éléments à copier,
2/ copie les éléments à copier,
3/ demande de choix du fichier Word
4/ recherche du terme (avec le style "Titre table")
5/ si le terme est présent, coller le contenu du presse-papier. Et c'est là que le problème arrive : ça le colle à la première ligne.... Et non pas à l'endroit du terme rechercher (ça devrait le coller au moment du "ICI_Test_IDU_Labels" en bleu (le seul qui a le style "Titre table")
Savez-vous pourquoi et si oui, comme régler ce problème ?
Merci,
Sébastien
Bonjour,
Il serait plus simple d'utiliser des signets. Il est préférable de mettre votre code dans un module standard plutôt que dans un module d'onglet.
Nb : Les signets n'acceptent pas le caractère - (touche 6).
Sub CopierVersWord()
Dim LastRow As Long, LastCol As Long, I As Long
Dim Rng As Range
Dim SearchTerm As String, FichierNom As String
Dim SelectedFile As Variant
Dim Ws As Worksheet
Dim WordApp As Word.Application 'Object
Dim WordDoc As Word.Document 'Object
Set Ws = Sheets("Labels")
With Ws
LastRow = .Cells(Ws.Rows.Count, "A").End(xlUp).Row
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
Set Rng = .Range("A2", .Cells(LastRow, LastCol))
End With
' Supprimer les 5 derniers caractères
FichierNom = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5)
' Créer le terme "zone à copier" composé de "CI" + "_" + nom du fichier + "_" + nom de l'onglet
SearchTerm = "ICI_" & FichierNom & "_" & Ws.Name ' Attention, pas de caractère - dans le nom des signets.
' Demander à l'utilisateur de sélectionner un fichier Word (*.docx)
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Sélectionnez un fichier Word (*.docx)"
.Filters.Clear
.Filters.Add "Fichiers Word", "*.docx"
If .Show = -1 Then
SelectedFile = .SelectedItems(1)
Else
GoTo Fin
End If
End With
' Créer une instance de l'application Word
Set WordApp = CreateObject("Word.Application")
With WordApp
.Visible = True
Set WordDoc = .Documents.Open(SelectedFile) ' Ouvrir le document Word sélectionné
End With
With WordDoc
If .Bookmarks.Exists(SearchTerm) = True Then
.Bookmarks(SearchTerm).Range.Select
With WordApp.Selection
.EndKey unit:=5, Extend:=0
.MoveDown unit:=5, Count:=2, Extend:=1
Rng.Copy
.Paste
End With
Else
Msgbox "Le terme " & SearchTerm & " n'a pas été trouvé dans le document " & SelectedFile & ".", vbExclamation
End If
End With
' Fermer le document Word (vous pouvez également enregistrer si nécessaire)
' WordDoc.Close savechanges:=True
' WordApp.Quit
GoTo Fin
Fin:
Set Ws = Nothing
Set WordDoc = Nothing: Set WordApp = Nothing
End Sub
Salut Eric,
Je te remercie pour la réponse. Je vois cette histoire de signet et reviens vers toi.
Merci encore,
Seb78
C'est exactement ce qu'il me fallait !
Je n'ai vraiment pas pensé à me servir des signets...
Merci beaucoup,
Sébastien