Modifier champs dans Word par VBA

Bonjour le forum,

Eh bien voilà... je ne pensais pas que ça irait si vite, mais déjà ma première question après une matinée de reprise

J'avais crée des documents modèles sous Word, avec des champs persos DOCPROPERTY.

Ceci pour que dans les entêtes, et les formules bateaux de présentation du projet, les secrétaires n'aient pas à retaper les informations qui ressortent toutes les 3 lignes (nom du client, N° de devis...) (en en oubliant au passage, et en faisant quelques fautes de frappe ben sûr )

Mais voilà en mon absence ils ont "oublié" comment modifier un champ à la création d'un nouveau devis (quand c'est un peu fastidieux, la mémoire est moins bonne...)

Donc je me suis dit : qu'à cela ne tienne, maintenant que je sais faire des macros, je vais leur faire un bouton et une inputbox ou un userform, comme ça y'aura plus de soucis...

Mais je n'arrive pas à trouver la syntaxe qui va bien pour modifier un champ existant, et l'enregistreur de macro ne réagit pas

Comme ça marche pareil avec Excel, je me dis que peut-être quelqu'un ici connaîtra la réponse

Merci d'avance, Sylvain

hello

suggestion :

tu sembles avoir de meilleures compétences en Excel qu'en Word (VBA y compris)

imagine faire les devis sur Excel.

quitte à y insérer un objet Word s'il y a de longs textes.

Merci jmd pour la suggestion,

Mais ça ne m'emballe pas trop, vu que c'est juste des descriptifs technique avec un prix à la fin (pas de formules).

Donc la mise en page, les en-têtes, sont bien plus agréables sur Word. (à mon goût...)

A force de chercher sur le net, j'ai trouvé hier des bouts de syntaxe qu'il faut que je teste, je pense pouvoir arriver à en faire quelque chose

Comme ma priorité reste quand même la conception, je ne fais ça qu'en pointillé, ça n'avance pas trop...

Je communiquerai mon code dés que j'aurai réussi, ce qui ne saurait tarder je suis optimiste 8)

Re,

Je sais que j'y arriverais 8)

J'ai fini par trouver le mot qui me manquait pour un champ perso :

CustomDocumentProperties

Pour les propriétés intégrées (titre, auteur,...), c'est

BuiltinDocumentProperties

Avec quelques essais pour trouver la syntaxe adéquate (ça ne déclenche as de saisie semi-automatique ), j'ai pu établir un code qui modifie la valeur du champ par la réponse à une inputbox. Au passage j'y ai ajouté de quoi mettre à jour les champs dans tout le document : puisque j'étais tombé dessus en cherchant le reste, autant en profiter

Voilà ce que ça donne pour un champ perso "N°Devis", qui a déjà été crée dans le modèle avant de lancer la macro.

Sub MajChamps()
Dim Story As Variant
Dim rngNext As Word.Range

'==================================
' modification champ "N°Devis"
'==================================

ActiveDocument.CustomDocumentProperties("N°Devis") = InputBox _
    ("Indiquez ici le numéro de devis", N°Devis)

'==================================
' mise à jour champs dans feuilles
'==================================

Selection.WholeStory
Selection.Fields.Update
Application.Browser.Previous

'==================================
' mise à jour champs dans en-têtes
'==================================

' Iterate through all story types
For Each Story In ActiveDocument.StoryRanges

' Only Update fields in a header
If Story.StoryType = wdPrimaryHeaderStory Or _
Story.StoryType = wdFirstPageHeaderStory Or _
Story.StoryType = wdEvenPagesHeaderStory Then

' Update fields in this header
Story.Fields.Update

' There may be linked headers so Update them as well
Set rngNext = Story.NextStoryRange
Do Until rngNext Is Nothing
' Update fields in this header
rngNext.Fields.Update

' Link to next story (if any)
Set rngNext = rngNext.NextStoryRange
Loop
End If
Next

'==================================
' mise à jour champs dans pieds de pages
'==================================

' Iterate through all story types
For Each Story In ActiveDocument.StoryRanges

' Only update fields in a footer
If Story.StoryType = wdPrimaryFooterStory Or _
Story.StoryType = wdFirstPageFooterStory Or _
Story.StoryType = wdEvenPagesFooterStory Then

' Update fields in this footer
Story.Fields.Update

' There may be linked footers so update them as well
Set rngNext = Story.NextStoryRange
Do Until rngNext Is Nothing

' Update fields in this footer
rngNext.Fields.Update

' Link to next story (if any)
Set rngNext = rngNext.NextStoryRange
Loop
End If
Next

End Sub
Rechercher des sujets similaires à "modifier champs word vba"