Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Word Discussion :

Insérer un champ dans Word


Sujet :

Word

  1. #1
    Membre régulier
    Insérer un champ dans Word
    Bonjour,

    J'ai réalisé une macro qui me permet de transférer des informations contenues dans un fichier EXCEL vers un fichier Word.

    Voici une capture d'écran du fichier EXCEL :



    Je voudrais rajouter dans mon document Word (ci-dessous) un champ se nommant "A_Summary" et qui serait relié au fichier EXCEL (cellule I2). Mon champ serait situé en lieu et place du texte "Test en cours".

    Quelle procédure précise dois-je suivre pour arriver à ce résultat ?

    En vous remerciant par avance.

    Cdlt.
    Jérôme.


    Voici une capture d'écran de mon fichier word :


  2. #2
    Expert éminent sénior
    Citation Envoyé par licpegpon Voir le message

    Bonjour,

    A adapter. Le principe est de coller dans Word à partir d'un signet de position.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     Sub EssaiWord()
     
    Dim AireTableau As Range
    Dim MonChemin As String
     
    Dim aWord As Object
    Dim dWord As Object
     
         With Sheets("Données")
              Set AireTableau = .Range("H12:R21")
              MonChemin = .Range("CheminComplet")
         End With
     
         Set aWord = CreateObject("Word.Application")
         With aWord
     
              .Visible = True
              Set dWord = .Documents.Open(MonChemin)
              AireTableau.Copy
              'Cherche Signet1 dans le rapport-modèle
              .Selection.Goto What:=-1, Name:="Signet1"
              DoEvents
              'Colle le Tableau dans le signet
              .Selection.PasteSpecial , Link:=False  ' True si liaison souhaitée
     
              DoEvents
     
              dWord.Close savechanges:=True
     
        End With
     
         Set dWord = Nothing
     
         aWord.Quit
         Set aWord = Nothing
     
         MsgBox "Export vers Word terminé !", vbInformation
     
    End Sub
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  3. #3
    Membre régulier
    Bonjour Eric,

    En fait je dois utiliser le template docm de mon client sans rajouter de signet. Je peux par contre rajouter des champs dans le document word. C'est ce que je cherche à faire mais je n'y arrive pas. Une fois que les champs auront été rajouté dans mon fichier word alors j'éxécuterai une macro contenue dans une feuille EXCEL. Celle-ci transfère des données contenues dans le fichier EXCEL vers le fichier word via les champs.

    J'ai vu sur internet que pour insérer des champs il fallait passer par "Insertion / Quickpart / Champ".

    On se retrouve alors dans le menu suivant :



    C'est à partir de là que je ne sais plus comment faire ? Je suppose qu'il faut préalablement positionner le curseur dans le fichier word à l'endroit où l'on veut insérer le champ ? Et après ??

    Cdlt.
    Jérôme.

  4. #4
    Expert éminent sénior
    Citation Envoyé par licpegpon Voir le message

    Vous auriez le droit de mettre un champ et pas un signet ???

    Si vous voulez insérer du texte, vous pouvez le faire avec un contrôle ContentControl (AA dans le vidage d'écran ci-dessous) mais c'est totalement inutile.



    Sinon, si vous pouvez déverser votre texte directement dans la cellule de votre tableau (selon votre vidage d'écran).
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  5. #5
    Membre régulier
    Bonjour,

    Je précise : je ne suis absolument pas développeur.

    En fait j'ai deux problèmes :

    1- Insérer des champs dans un document word --> Je ne sais pas faire ... Je voudrais simplement insérer des champs dans mon template word à des endroits précis. Pour cela j'ai essayé de passer via "Insertion / Quickpart / champ". Lorsque la fenêtre apparait, je cale ...

    2- Corriger la macro EXCEL que j'ai réalisé en récupérant des bouts de codes par ci et par là. Le pb c'est que la macro ne met pas à jour les champs situés dans l'entête du document.

    Voici l'état actuel de ma macro EXCEL (après plusieurs modifications, corrections, ...), bref je tourne en rond :


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Sub publipostage()
    '
    Dim A_Doc_Title As String
    Dim A_Doc_Origin As String
    Dim A_Doc_Reference As String
    Dim A_Doc_Issue As String
    Dim A_Doc_Date As String
    Dim A_AC_Applicability As String
    Dim A_Customer As String
    Dim A_ATA_Applicability As String
    Dim A_Authoring_Name1 As String
    Dim A_Authoring_Function1 As String
    Dim A_Approval_Name1 As String
    Dim A_Approval_Function1 As String
    Dim A_Authorization_Name1 As String
    Dim A_Authorization_Function1 As String
    '
    'Activation du fichier "AD_CVD.xlsm", on se place dans l'onglet "Feuil1"
    '
    Windows("AD_CVD.xlsm").Activate
    Sheets("Feuil1").Activate
    '
    A_Doc_Title = Range("B2").Value
    A_Doc_Origin = Range("C2").Value
    A_Doc_Reference = Range("D2").Value
    A_Doc_Issue = Range("E2").Value
    A_Doc_Date = Range("F2").Value
    A_AC_Applicability = Range("G2").Value
    A_Customer = Range("H2").Value
    A_ATA_Applicability = Range("I2").Value
    A_Authoring_Name1 = Range("J2").Value
    A_Authoring_Function1 = Range("K2").Value
    A_Approval_Name1 = Range("L2").Value
    A_Approval_Function1 = Range("M2").Value
    A_Authorization_Name1 = Range("N2").Value
    A_Authorization_Function1 = Range("O2").Value
    '
    ' Ouverture de Word
    '
    Set WordApp = CreateObject("Word.application")
    WordApp.Visible = True
    '
    '
    ' Ouverture du document "AB Template.docm" avec Word
    '
    Set WordDoc = WordApp.Documents.Add(Template:="C:\Users\DF485624\Desktop\TEST\AB Template.docm", Newtemplate:=False, DocumentType:=0)
    '
    '
    ' Modification champ
    '
    WordApp.ActiveDocument.CustomDocumentProperties("A_Doc_Title") = A_Doc_Title
    WordApp.ActiveDocument.CustomDocumentProperties("A_Doc_Origin") = A_Doc_Origin
    WordApp.ActiveDocument.CustomDocumentProperties("A_Doc_Reference") = A_Doc_Reference
    WordApp.ActiveDocument.CustomDocumentProperties("A_Doc_Issue") = A_Doc_Issue
    WordApp.ActiveDocument.CustomDocumentProperties("A_Doc_Date") = A_Doc_Date
    WordApp.ActiveDocument.CustomDocumentProperties("A_AC_Applicability") = A_AC_Applicability
    WordApp.ActiveDocument.CustomDocumentProperties("A_Customer") = A_Customer
    WordApp.ActiveDocument.CustomDocumentProperties("A_ATA_Applicability") = A_ATA_Applicability
    WordApp.ActiveDocument.CustomDocumentProperties("A_Authoring_Name1") = A_Authoring_Name1
    WordApp.ActiveDocument.CustomDocumentProperties("A_Authoring_Function1") = A_Authoring_Function1
    WordApp.ActiveDocument.CustomDocumentProperties("A_Approval_Name1") = A_Approval_Name1
    WordApp.ActiveDocument.CustomDocumentProperties("A_Approval_Function1") = A_Approval_Function1
    WordApp.ActiveDocument.CustomDocumentProperties("A_Authorization_Name1") = A_Authorization_Name1
    WordApp.ActiveDocument.CustomDocumentProperties("A_Authorization_Function1") = A_Authorization_Function1
    '
    '
    ' => mise à jour champs dans feuilles
                    WordApp.Selection.WholeStory
                    WordApp.Selection.Fields.Update
                    WordApp.Application.Browser.Previous
    '
    '
    End Sub



    Mes points de blocages, interrogations sont les suivantes :

    1- Dans la première version de ma macro j'avais mis en tout début de programme l'expression "Option explicit". Cela générait systématiquement une erreur (erreur de compilation, variable "WordApp" non définie). Pour éviter ce message j'ai tout simplement supprimé "Option explicit" mais je ne trouve cela pas très satisfaisant. Il faudrait que je déclare WordApp, mais comment ? As ... ?

    2- Lorsque j'exécute le code et que le fichier Word s'ouvre, celui-ci se nomme "document1.docx" ? Est-ce normal ? Je pensais qu'il devait s'appeler "AB Template.docm" puisque je lui demande d’ouvrir le fichier "AB Template.docm" ?

    3- J'ai dû rajouter des lignes pour que les champs se mettent à jour (à la fin du code). Pouvez-vous m'expliquer ces 3 lignes de codes, surtout la dernière ? Que font-elles ?

    4- Que dois-je faire pour que les champs situés en entête (et en pied de page) se mettent à jour ? Pour l'instant seuls les champs situés dans le corps du document se mettent à jour.

    5- Comment dois-je modifier mon code pour que je puisse sélectionner le fichier Word via un explorateur de fichier ?

    6- Dans Set WordDoc = WordApp.Documents.Add(Template:="C:\Users\DF485624\Desktop\TEST\AB Template.docm", Newtemplate:=False, DocumentType:=0) à quoi correspondent les deux dernières instructions (Newtemplate et DocumentType) ?

    Si vous avez des éléments de réponses à ces 6 questions je suis preneur car je tourne en rond et j'ai le sentiment que je ne suis pas loin de la solution.

    Merci encore et merci de votre patience.


    Cdlt.
    Jérôme.

  6. #6
    Expert éminent sénior
    Citation Envoyé par licpegpon Voir le message

    Bonjour,



    1- Dans la première version de ma macro j'avais mis en tout début de programme l'expression "Option explicit". Cela générait systématiquement une erreur (erreur de compilation, variable "WordApp" non définie). Pour éviter ce message j'ai tout simplement supprimé "Option explicit" mais je ne trouve cela pas très satisfaisant. Il faudrait que je déclare WordApp, mais comment ? As ... ?
    Option Explicit vous oblige à déclarer vos variables. C'est bien comme cela qu'il faut faire. WordApp est le nom donné à une variable objet pour créer une instance de Word. Regardez ce lien
    ajout-macro-d-saut-page-saut-section


    2- Lorsque j'exécute le code et que le fichier Word s'ouvre, celui-ci se nomme "document1.docx" ? Est-ce normal ? Je pensais qu'il devait s'appeler "AB Template.docm" puisque je lui demande d’ouvrir le fichier "AB Template.docm" ?
    C'est normal, lorsqu'on crée un fichier à partir d'un modèle, le fichier crée est en attente d'un nouveau nom et doit être sauvé avec une commande SaveAs.



    3- J'ai dû rajouter des lignes pour que les champs se mettent à jour (à la fin du code). Pouvez-vous m'expliquer ces 3 lignes de codes, surtout la dernière ? Que font-elles ?
    WordApp.Selection.WholeStory
    WordApp.Selection.Fields.Update
    WordApp.Application.Browser.Previous

    Je suis loin de tout connaître, et lorsque je ne connais pas je vais dans l'aide en ligne et je tape le nom de la commande dans la case recherche "Browser.Previous", Word et j'obtiens ça :






    4- Que dois-je faire pour que les champs situés en entête (et en pied de page) se mettent à jour ? Pour l'instant seuls les champs situés dans le corps du document se mettent à jour.
    Entête et Pied de page sont des attributs d'une section. Il faut donc passer par la partie section de votre document. Voir cette discussion : Remplacer-texte-pieds-page-d-document-word/



    5- Comment dois-je modifier mon code pour que je puisse sélectionner le fichier Word via un explorateur de fichier ?
    Regardez cet exemple qui reste à adapter : Word-vba-concatener-fichiers-dat-sauvegarde-rtf-partir-document-word-docm



    6- Dans Set WordDoc = WordApp.Documents.Add(Template:="C:\Users\DF485624\Desktop\TEST\AB Template.docm", Newtemplate:=False, DocumentType:=0) à quoi correspondent les deux dernières instructions (Newtemplate et DocumentType) ?
    Voir l'aide en ligne Word : Documents.Add", Word
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  7. #7
    Membre régulier
    Bonjour Eric,

    Un très grand merci pour tous ces retours. Un peu bousculé aujourd'hui j'y regarde ASAP. Merci encore.

    Cdlt.
    Jérôme.