Doc Word piloté depuis Excel

Bonjour,

Je me casse la tête en vain depuis plusieurs jours. Je n'ai plus qu'à espérer en vous . Rien trouvé sur la toile. Voici mon Pb avec Office famille Excel2016 : Une macro Excel appelle plusieurs fois (avec l'argument Cpt) la macro "Rapport" dont le code est joint. Cette dernière est censée piloter un document Word et y écrire à chaque appel . J'ai remplacé le travail en le symbolisant par la simple écriture d'un "bravo" indexé. Avec Cpt = 1 ça fonctionne bien : bravo1. Avec Cpt = 2 ça coince : erreur 432 nom fichier ou classe introuvable /automation. (Il n'est pas impératif que le doc1 soit enregistré chaque fois mais seulement au bout de Cpt = 5 par exemple). j'ai pensé à une instance unique de Word pour utiliser seulement CreateObject sans particulariser le code 1° tour, mais j'ai pas le niveau pour comprendre quoi faire avec seulement l'aide MS.

Sub Rapport()
Dim AppWD As Word.Application
Dim docwd As Word.Document
'1° appel
If Cpt = 1 Then
    Set AppWD = CreateObject("Word.Application")
    AppWD.Visible = True
    Set docwd = AppWD.Documents.Add
    GoTo Ecrire
End If
'Autres appels
Set AppWD = GetObject("D:\Doc1.docx", "Word.Application")
AppWD.Visible = True
Ecrire:
AppWD.Selection.TypeParagraph
AppWD.Selection.TypeText Text:="bravo" & Cpt
AppWD.Selection.TypeParagraph
docwd.SaveAs "D:\Doc1.docx"
'sortie
AppWD.Documents("D:\Doc1.docx").Close
AppWD.Quit
Set AppWD = Nothing
Set docwd = Nothing
End Sub

Bonjour Cyber Topaze

Pour appeler un procédure avec argument, il faut que celle-ci soit configurer comme tel
Voici une possibilité

Sub Rapport(Cpt As Integer)
  Dim AppWd As Object    'Word.Application
  Dim DocWd As Object    'Word.Document
  Dim sPath As String, sFic As String
  ' Définir le chemin d'accès et le nom du fichier souhaité
  sPath = ThisWorkbook.Path & "\"
  sFic = "Essai.docx"
  ' Créer une instance Word
  Set AppWd = CreateObject("Word.Application")
  AppWd.Visible = True
  '1° appel
  If Cpt = 1 Then
    Set DocWd = AppWd.Documents.Add
    DocWd.SaveAs2 Filename:=sPath & sFic
  Else
    Set DocWd = AppWd.Documents.Open(sPath & sFic)
  End If
  AppWd.Selection.TypeParagraph
  AppWd.Selection.TypeText Text:="bravo" & Cpt
  AppWd.Selection.TypeParagraph
  DocWd.Save
  ' Fermer le document en l'enregistrant
  DocWd.Close Savechanges:=True
  ' Quitter Word
  AppWd.Quit
  Set AppWd = Nothing
  Set DocWd = Nothing
End Sub

A+

Bonjour Bruno M45

Merci pour ce retour on ne peut plus rapide (Tu te lèves tôt ! )
Et doublement merci pour le contenu: ça tourne impeccable ! Je suis très content. Et dire que j'ai cherché si longtemps.

Pour tester mon code séparément du projet, je trouvais plus simple de supprimer l'argument en rajoutant une première ligne Rpt = 1 puis Rpt = 2
j'essaye de mettre ce problème en résolu.

Chapeau l'expert !

Rechercher des sujets similaires à "doc word pilote"