IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Points : 79
    Points
    79
    Par défaut 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 :

    Nom : Capture_3.JPG
Affichages : 631
Taille : 67,7 Ko

    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 :

    Nom : Capture_2.JPG
Affichages : 584
Taille : 99,9 Ko

  2. #2
    Invité
    Invité(e)
    Par défaut
    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

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Points : 79
    Points
    79
    Par défaut
    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 :

    Nom : Capture_4.JPG
Affichages : 639
Taille : 44,7 Ko

    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
    Invité
    Invité(e)
    Par défaut
    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.
    Pièce jointe 534406


    Sinon, si vous pouvez déverser votre texte directement dans la cellule de votre tableau (selon votre vidage d'écran).

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Points : 79
    Points
    79
    Par défaut
    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
    Invité
    Invité(e)
    Par défaut
    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 :

    Pièce jointe 534471



    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

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Points : 79
    Points
    79
    Par défaut
    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.

Discussions similaires

  1. [Open XML API] : insérer une image dans Word
    Par pcayrol dans le forum C#
    Réponses: 2
    Dernier message: 07/10/2008, 09h52
  2. VB6 et remplissage champs dans Word
    Par dominux80 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/09/2008, 04h48
  3. [VSTO] Comment insérer du texte dans Word ?
    Par le_sonic dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/04/2008, 20h07
  4. COmment calculer le cosinus d'un champs dans word ?
    Par ced57 dans le forum VBA Word
    Réponses: 5
    Dernier message: 22/12/2007, 20h16
  5. [VBA-E]Insérer des autotext dans Word à partir d'excel
    Par noordman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/04/2006, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo