Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 comment coller une plage dans un signet dans un fichier Word depuis excel

yesyes18

XLDnaute Nouveau
bonjour ,

ci dessous ma macro qui me permet de créer et d'ouvrir des fichier afin de les remplir :
VB:
'ouverture des doc contractuels

Sub ouvrirword()



Dim WordApp As Object
Dim WordDoc As Object

Set WordApp = CreateObject("word.Application")
 WordApp.Visible = True
  

fe_path = ActiveWorkbook.Path
MsgBox (fe_path)

car_path = InStr(1, fe_path, "PRODUITS\")
Source = Mid(fe_path, 1, car_path + Len("PRODUITS")) & "\collectif sur mesure\modeles_contractuels\"
'MsgBox (Mid(fe_path, 1, car_path + Len("PRODUITS")) & "\collectif sur mesure\modeles_contractuels\")


If Range("D358") = "Dispositions particulières" Then
Set WordDoc = WordApp.Documents.Open(Source & "Dispositions particulières - 20200204.docx")
 WordDoc.Bookmarks("num_contrat").Range.Text = Range("num_contrat")
 WordDoc.Bookmarks("raison_sociale").Range.Text = Range("raison_sociale")
 WordDoc.Bookmarks("nom_courtier").Range.Text = Range("nom_courtier")
 WordDoc.Bookmarks("adresse_courtier").Range.Text = Range("adresse_courtier")
 WordDoc.Bookmarks("raison_soc").Range.Text = Range("raison_sociale")
 WordDoc.Bookmarks("adresse_groupe_solo").Range.Text = Range("adresse_groupe") & " " & Range("cp") & " " & Range("commune")
 WordDoc.Bookmarks("num_siren_siret").Range.Text = Range("num_siren_siret_groupe_solo")
 WordDoc.Bookmarks("date_deffet").Range.Text = Range("date_deffet")
 If Range("representant") <> "" Then
 WordDoc.Bookmarks("representant").Range.Text = Range("representant")
 WordDoc.Bookmarks("qualite_representant").Range.Text = Range("qualite_representant")
 Else
 WordDoc.Bookmarks("pas_de_representant").Range.Text = Range("D3")
 
 End If
 
 If Range("college") = "Cadre" Then
 WordDoc.Bookmarks("college").Range.Text = Range("Dispositions_cadre")

 End If

 If Range("college") = "Non cadre" Then
 WordDoc.Bookmarks("college").Range.Text = Range("dispositions_non_cadre")
 End If
 
 If Range("college") = "ens. personnel" Then
 WordDoc.Bookmarks("college").Range.Text = Range("dispositions_ep")
 
 End If

If Range("str_base") <> "" Then
 
 
 Range("B2:C6").Select
 Selection.Copy
 WordApp.Selection.Goto what:=wdGoToBookmark, Name:=("cot_base")
 WordApp.Selection.PasteAndFormat (wdPasteDefault)
 'WordApp.Selection.ParagraphFormat.Alignement = wdAlignParagraphCenter
 Application.CutCopyMode = False
 
 
End If

End If

end sub


je rencontre un problème dans la ligne suivante :
WordApp.Selection.Goto what:=wdGoToBookmark, Name:=("cot_base")

j'ai un message d'erreur "le signet n'existe pas" sauf je l'ai bien créér sur word

auriez vous une autre méthode pour aller coller ma plage dans mon signet ?
ou bien me dire où elle est l'erreur dans mon code ?


merci d'avance
 

job75

XLDnaute Barbatruc
Bonjour yesyes18,

Sans fichier je n'essaie pas du tout de tester la macro.

Simplement il s'agit d'une macro Excel donc les constantes propres à Word ne peuvent pas être lues.

Donc remplacez wdGoToBookmark par sa valeur -1 et wdPasteDefault par 0.

A+
 

yesyes18

XLDnaute Nouveau
une autre question sur cette ligne
Range("B2:C6").Select

quand je remplace la plage par un nom exemple je renomme la plage B2;C6 "test" et quand je fais
Range("test").Select

il me copie rien dans ward
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…