Partager via

VBA Modifier un document Word au départ d'Excel

Anonyme
2022-07-27T05:52:02+00:00

Bonjour le forum,

J'ai besoin d'un coup de main pour résoudre le problème suivant :

Une procédure Excel lit un document Word. Celui-ci se compose de paragraphes. Un style est affecté à chaque paragraphe. Seul le style "Heading 2" est à prendre en considération. Ces paragraphes commencent tous par une date en jj-mm-aaaa. La procédure Excel extrait cette date et la convertit en jour (jjjj). Jusque là, tout fonctionne. Le problème : Je ne parviens pas à insérer le jour calculé à côté de la date dans le document Word.

Exemple :

Dans le document Word :

Bruxelles (Heading 1)

27-07-2022 réunion de groupe (Heading 2)

01-08-2022 stage (Heading 2)

01-09-2022 Débrief (Heading 2)

Excel extrait la date (27-07-2022) et la convertit en jour (mercredi)

Résultat à obtenir :

Bruxelles

27-07-2022 (mercredi) réunion de groupe

01-08-2022 (lundi) stage

01-09-2022 (jeudi) Débrief

Je ne trouve pas les instructions VBA Word pour positionner le curseur après la date et insérer le jour calculé. Un membre du forum pourrait-il me donner quelques indications pour résoudre ce problème ?

Ci-dessous, mon code :

Sub R_W_WordDoc()

'Housekeeping

Dim WordApp As Object

Dim WordDoc As Object

Dim i As Long

Dim datum As String

Dim jour As String

Dim TTV As String

'Init

Set WordApp = CreateObject("Word.Application")

WordApp.Visible = True

Set WordDoc = WordApp.Documents.Open("C:\Users\User\Documents\tst insert day.docx ")

'Treatment

For i = 1 To WordDoc.Paragraphs.Count

If WordDoc.Paragraphs(i).Style = "Heading 2" Then 

datum = Left(WordDoc.Paragraphs(i), 10) 

jour= dvdw(datum) 

TTV = "(" & jour& ")" 

 ?????

End If 

Next

'Leave

WordApp.Quit

Set WordDoc = Nothing

Set WordApp = Nothing

End Sub

D'avance, merci

Microsoft 365 et Office | Word | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

  1. Hecatonchire 53,540 Points de réputation Modérateur bénévole
    2022-07-27T07:55:53+00:00

    Bonjour

    A adapter

    Sub test()
    Set WordDoc = ActiveDocument
    For i = 1 To WordDoc.Paragraphs.Count
    If WordDoc.Paragraphs(i).Style = "Titre 2" Then
    datum = Left(WordDoc.Paragraphs(i), 10)
    jour = Format(datum, "dddd")
    TTV = "(" & jour & ") " ' Ajout d'un espace après la parenthèse WordDoc.Paragraphs(i).Range.Words(5).InsertAfter TTV
    End If
    Next
    End Sub

    Cette réponse a-t-elle été utile ?

    2 personnes ont trouvé cette réponse utile.
    0 commentaires Aucun commentaire

3 réponses supplémentaires

  1. Anonyme
    2022-07-27T08:39:23+00:00

    Bonjour Hecatonchire,

    Un seul mot: merci.

    Cette instruction m'épargne plusieurs heures de travail fastidieux.

    Excellente journée

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2022-07-27T07:44:53+00:00

    Bonjour Ademola,

    Merci d'avoir répondu.

    La solution proposée suggère de remplacer un texte par un autre.

    Mon problème est de positionner le curseur et écrire du texte.

    Bonne journée

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2022-07-27T06:58:09+00:00

    Salut.

    Merci d’avoir posté dans la communauté

    Pour résoudre le problème en procédant comme suit :
    ➤ Accédez à l’onglet Développeur >>'option Visual Basic.
    Ensuite, l’assistant Références – VBAProject s’ouvrira.
    ➤ Activez l’option Bibliothèque d’objets Microsoft Word 16.0 et appuyez sur OK.
    ➤ Écrivez le code suivant
    Sub findandreplaceword1()
    Dim book1 en tant que Word.Application
    Dim sheet1 en tant que Word.Document
    Définir book1 = CreateObject(« word.application »)
    livre1. Visible = Vrai
    Définir la feuille1 = livre1. Documents.Open(« C:\Users\Mima\Downloads\Product.docm »)

    Avec feuille1. Contenu.Rechercher
    . Texte = par exemple « Apple »
    . Replacement.Text = « Cerise »
    . Wrap = wdFindContinue
    . Exécuter Replace:=wdReplaceAll
    Terminer par
    Fin Sub

    nous avons déclaré book1 en tant qu’objet Word.Application et sheet1 en tant qu’objet Word.Document, puis book1 est défini sur Word.Application et sheet1 sur le chemin d’accès du document que nous voulons ouvrir.
    En utilisant l’instruction WITH, nous allons essayer d’éviter la répétition de la saisie de la feuille de nom d’objet1. Content.Find et ici nous trouverons la chaîne de texte « Apple » et la remplacerons par la chaîne « Cherry ».
    . Wrap = wdFindContinue permet de poursuivre l’opération jusqu’à la fin du document Word, et . Execute Replace:=wdReplaceAll permet de remplacer toute la chaîne.

    J’espère que cela vous aidera. Tenez-nous au courant de l’état pour obtenir de l’aide.

    Cordialement,
    Ademola

    Cette réponse a été traduite automatiquement. Par conséquent, il peut y avoir des erreurs grammaticales ou des expressions étranges.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire