Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1172 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA - Word] Update des propriétés

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA - Word] Update des propriétés

n°526619
urd-sama
waste of space
Posté le 30-09-2003 à 09:36:51  profilanswer
 

bonjour :hello:
Je vous explique le topo. J'insère dans mon document word des propriétés (exemple: Author). Il me mets la valeur de ce champ.
J'insère ce meme champ dans l'en-tete et le pied de page. Jusque là parfait. Je change la valeur de mon champ.
 
Je fais une petit macro avec pour code:
ActiveDocument.Fields.Update
(équivalent à clique droit - mettre à jour les champs).
 
Il me mets à jour les champs dans le document en lui-meme, mais pas dans l'en-tête et le pied de page. Existe-t-il une commande pour mettre à jour tous les champs du document en entier? ou doit-on magouiller pour faire le tour de toutes les "parties"?
 
merci pour votre aide :hello:

mood
Publicité
Posté le 30-09-2003 à 09:36:51  profilanswer
 

n°526655
drasche
Posté le 30-09-2003 à 10:27:35  profilanswer
 

quand tu imprimes, il le met à jour ce champ ou bien c'est pas à jour dans tous les cas?
 
quand on pense qu'il y a déjà un beau bug qui traîne dans la mise à jour des numéros de page :D style t'as un document avant fusion de deux pages, puis plus qu'une après fusion, ben il imprime "1/2" sachant que 2 représente le total de pages (foireux donc dans ce cas ci).

n°526657
urd-sama
waste of space
Posté le 30-09-2003 à 10:29:29  profilanswer
 

quand tu imprimes (ou même l'aperçu), il met effectivement à jour, ce qui nous a fait penser qu'il y avait une commande spécifique et non pas une magouille à réaliser

n°526672
drasche
Posté le 30-09-2003 à 10:42:20  profilanswer
 

j'ai enregistré une macro pour voir mais j'obtiens Selection.Fields.Update [:benou] (et bizarrement, il n'est pas possible de switcher entre le document et les header/footer pendant l'enregistrement d'une macro).

n°526677
urd-sama
waste of space
Posté le 30-09-2003 à 10:44:46  profilanswer
 

hum... c'est un cas gouttu alors :/

n°526721
walli
Posté le 30-09-2003 à 11:09:14  profilanswer
 

:hello:
Qu'est ce que tu appelles 'mettre a jour' ?
 
(oui, suis pas bien reveillee..)


---------------
NP :
n°526747
urd-sama
waste of space
Posté le 30-09-2003 à 11:18:45  profilanswer
 

et bien si par exemple j'insère le champ "author" dans le document.
il me met la valeur.
si ensuite je change sa valeur, c'est toujours l'ancienne qui est sur le document.
c'est + clair?

n°526751
walli
Posté le 30-09-2003 à 11:19:41  profilanswer
 

t'as pas essayé de gerer ça avec des signets ?


---------------
NP :
n°526755
urd-sama
waste of space
Posté le 30-09-2003 à 11:21:51  profilanswer
 

j'ai jamais utilisé, ca sert à quoi?

n°526760
walli
Posté le 30-09-2003 à 11:24:01  profilanswer
 

Tu places ton signet sur ton doc word.
tu le nommes, et ensuite, tu fais un bout de code qui va insérer une valeur là ou tu as placé ton signet.
et ca fonctionne aussi pour les pieds de pages, entetes de pages !


---------------
NP :
mood
Publicité
Posté le 30-09-2003 à 11:24:01  profilanswer
 

n°526765
urd-sama
waste of space
Posté le 30-09-2003 à 11:25:46  profilanswer
 

ah ouais ca pourrait être la soluce, le problème c'est que je sais pas si on peut utiliser autre chose que les propriétés (utilisation par plusieurs personnes et applic).
je regarde avec mon collègue cet aprèm :)

n°526784
walli
Posté le 30-09-2003 à 11:35:50  profilanswer
 

tu me dis si tu veux le bout de code !


---------------
NP :
n°526796
urd-sama
waste of space
Posté le 30-09-2003 à 11:40:34  profilanswer
 

ah ben si tu as sous la main file toujours ;)

n°526804
walli
Posté le 30-09-2003 à 11:43:07  profilanswer
 

vais chercher...
 
ca donne un truc comme ça :  
 

Code :
  1. Private Function SetSignet(varSignet As String, valSignet As String) As String
  2.    
  3.     On Error GoTo erreurSetSignet
  4.     'On se positionne sur le signet
  5.     Set objRange = objWord.ActiveDocument.GoTo(What:=wdGoToBookmark, Name:=varSignet)
  6.     'On insère la valeur du signet
  7.     objRange.InsertBefore valSignet
  8.     SetSignet = "0"
  9.     Exit Function
  10. erreurSetSignet:
  11.     SetSignet = "-1"
  12.     erreurMsg = "(SetSignet)Problème au niveau du signet " & varSignet
  13. End Function ' Fin SetSignet


 
et après si par exemple tu as appellé dans ton doc word un signet 'author' et que tu veux lui attribuer la valeur 'Urd Sama' :
 

Code :
  1. SetSignet varSignet:="author", valSignet:="Urd Sama"


Message édité par walli le 30-09-2003 à 11:50:07

---------------
NP :
n°526815
urd-sama
waste of space
Posté le 30-09-2003 à 11:48:29  profilanswer
 

merci :)

n°1153403
Eric B
Posté le 19-07-2005 à 10:43:43  profilanswer
 

Page de 2 ans référencée dans les 1eres réponses de Google. Impressionnant! Suffisant pour justifier ce mega-up!
 
Je viens tout juste d'avoir le meme pb: le ActiveDocument.Fields.Update qui ne met pas à jour les entetes et pied de page.
 
J'ai trouvé la réponse complète sur http://www.dotnet247.com/247refere [...] 06189.aspx
Celle ci a l'avantage de mettre tout à jour, sans besoin de prédéfinir des signets
 

Code :
  1. Public Sub UpdateFieldsInHeaders()
  2. Dim Story As Variant
  3. Dim rngNext As Word.Range
  4. ' Iterate through all story types
  5. For Each Story In ActiveDocument.StoryRanges
  6. ' Only Update fields in a header
  7. If Story.StoryType = wdPrimaryHeaderStory Or _
  8. Story.StoryType = wdFirstPageHeaderStory Or _
  9. Story.StoryType = wdEvenPagesHeaderStory Then
  10. ' Update fields in this header
  11. Story.Fields.Update
  12. ' There may be linked headers so Update them as well
  13. Set rngNext = Story.NextStoryRange
  14. Do Until rngNext Is Nothing
  15. ' Update fields in this header
  16. rngNext.Fields.Update
  17. ' Link to next story (if any)
  18. Set rngNext = rngNext.NextStoryRange
  19. Loop
  20. End If
  21. Next
  22. End Sub
  23. Public Sub updateFieldsInFooters()
  24. Dim Story As Variant
  25. Dim rngNext As Word.Range
  26. ' Iterate through all story types
  27. For Each Story In ActiveDocument.StoryRanges
  28. ' Only update fields in a footer
  29. If Story.StoryType = wdPrimaryFooterStory Or _
  30. Story.StoryType = wdFirstPageFooterStory Or _
  31. Story.StoryType = wdEvenPagesFooterStory Then
  32. ' Update fields in this footer
  33. Story.Fields.Update
  34. ' There may be linked footers so update them as well
  35. Set rngNext = Story.NextStoryRange
  36. Do Until rngNext Is Nothing
  37. ' Update fields in this footer
  38. rngNext.Fields.Update
  39. ' Link to next story (if any)
  40. Set rngNext = rngNext.NextStoryRange
  41. Loop
  42. End If
  43. Next
  44. End Sub

n°1216118
olivierhel​iot
Posté le 06-10-2005 à 07:42:49  profilanswer
 

J'ai eu le même problème... mais je n'ai pas trouvé la même solution ! La mienne est plus simple mais doit avoir des limitation (s'il y a plusieurs entete / pied de pages par exemple)
 
[cpp]' Met à jour les champs dans le corps du document
Selection.WholeStory
Selection.Fields.Update
 
' Passe dans le bas de page
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Selection.WholeStory
Selection.Fields.Update
 
' Passe dans l'entete
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.WholeStory
Selection.Fields.Update
 
[/spoiler]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA - Word] Update des propriétés

 

Sujets relatifs
[VBA] [DEBUTANT] Inclure la réf Microsoft Word x.x Object LibraryProblème de formule en VBA Excel
[VBA] Rapatriement d'une requête ! [Resolu]Update "incrémentiel"
C++ Builder - VBAFonction like de php en VBA ??
update spécial, variable dynamique et mysqlupdate spécial, comment y arriver
[VB] Modifier les propriétés d'un document word depuis appli vb 
Plus de sujets relatifs à : [VBA - Word] Update des propriétés


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR