[VBA Word] Refresh du sommaire [OK]

Refresh du sommaire [OK] [VBA Word] - VB/VBA/VBS - Programmation

Marsh Posté le 12-03-2004 à 12:47:57    

Bonjour,
J'ai actuellement un petit problème avec un VBA sous Word.
Je possède un formulaire qui va entre autre permettre à l'utilisateur de choisir une langue. Puis je fais un traitement et supprime les sections inutiles d'après ce choix.
Mon problème se situe après que le document soit généré. En dernier lieu j'effectue un refresh de tous les document, selon ce code:

Code :
  1. Public Sub pFrmSubDocRefresh()
  2.    Dim pFrmVarStoryRange As Range
  3.  
  4.    For Each pFrmVarStoryRange In ActiveDocument.StoryRanges
  5.        pFrmVarStoryRange.Fields.Update
  6.        Do While Not (pFrmVarStoryRange.NextStoryRange Is Nothing)
  7.            Set pFrmVarStoryRange = pFrmVarStoryRange.NextStoryRange
  8.            pFrmVarStoryRange.Fields.Update
  9.        Loop
  10.    Next pFrmVarStoryRange
  11.  
  12.    Set pFrmVarStoryRange = Nothing
  13. End Sub


le problème est que je possède un index généré automatiquement dans mon document. Cet index n'est pas refreshé avec ce script, et me fait une erreur sur les numéro de pages. Si je le fais manuellement, pas de problème.
 
qqun aurait une idée pour trouver la solution du problème? merci d'avance :hello:


Message édité par urd-sama le 02-04-2004 à 11:20:31
Reply

Marsh Posté le 12-03-2004 à 12:47:57   

Reply

Marsh Posté le 02-04-2004 à 09:33:17    

up, je suis toujours coincée avec ce problème :(
l'erreur généré dans le sommaire/index est "Erreur ! Signet non défini."

Reply

Marsh Posté le 02-04-2004 à 10:21:29    

bon, j'ai trouvé ceci:
ActiveDocument.TablesOfContents(1).UpdatePageNumbers
mais ca n'a pas l'air de fonctionner

Reply

Marsh Posté le 02-04-2004 à 11:19:55    

et bien on a finalement trouvé une solution:

Code :
  1. Public Sub pFrmSubDocRefresh()
  2.    Dim pFrmVarStoryRange As Range
  3.    Dim pFrmVarTablesOfContents As TableOfContents
  4.  
  5.    'Update the entire document
  6.    For Each pFrmVarStoryRange In ActiveDocument.StoryRanges
  7.        pFrmVarStoryRange.Fields.Update
  8.        Do While Not (pFrmVarStoryRange.NextStoryRange Is Nothing)
  9.            Set pFrmVarStoryRange = pFrmVarStoryRange.NextStoryRange
  10.            pFrmVarStoryRange.Fields.Update
  11.        Loop
  12.    Next pFrmVarStoryRange
  13.    Set pFrmVarStoryRange = Nothing
  14.  
  15.    'Update all the Tables of Contents
  16.    For Each pFrmVarTablesOfContents In ActiveDocument.TablesOfContents
  17.        pFrmVarTablesOfContents.Update
  18.    Next pFrmVarTablesOfContents
  19.    Set pFrmVarTablesOfContents = Nothing
  20. End Sub


si ca peut aider qqun :hello:

Reply

Marsh Posté le 10-05-2004 à 08:41:51    

j'ai un autre problème et je continue sur ce topic vu que c'est toujours sur le même document.
en résumé je créé 5 sections différentes, chacun représentant une langue. ces 5 langues ont leur propre en-tête et pied de page traduits. à l'ouverture, l'utilisateur choisit une langue, puis le document est généré en supprimant les sections en trop.
 
le problème c'est que les sections ne suivent pas. par exemple j'ai allemand-francais-anglais. je choisis allemand. le corps du texte est bien en allemand mais les en-tetes et pied de page sont toujours en anglais (quelle que soit la langue). en gros je suppose que par défaut il me prend le dernier.
 
qqun aurait une idée? meme une simple idée car là je suis vraiment coincée, je désespère!

Reply

Marsh Posté le 10-05-2004 à 13:16:02    

okay, je vois l'idée!
en fait j'avais déjà fait ca en créant mon document manuellement, je vais donc essayer avec la génération de le faire dans le code.
 
j'ai donc commencé mon bout de code:

Code :
  1. For Each mySection In ActiveDocument.Sections
  2.       mySection.Headers
  3.    Next


le problème c'est que je vois pas trop comment utiliser la propriété LinkToPrevious. je vais encore chercher

Reply

Marsh Posté le 13-05-2004 à 11:23:44    

okay merci beaucoup je vais regarder ca :jap:

Reply

Marsh Posté le 14-05-2004 à 14:13:19    

bon j'ai jeté un oeil à tout ca, j'ai trouvé l'origine de mon bug.
en fait en supprimant des range et non pas des sections, les footers et headers n'étaient pas supprimés ([:kiki])
 
j'ai donc revu mon code pour supprimer les sections et non des ranges. ce qui est finalement très culcul à faire:
 

Code :
  1. ActiveDocument.Sections(5).Range.Delete
  2.       ActiveDocument.Sections(3).Range.Delete
  3.       ActiveDocument.Sections(2).Range.Delete
  4.       ActiveDocument.Sections(1).Range.Delete


 
j'ai encore un petit problème de section vide en trop à enlever mais ca devrait aller maintenant
merci pour votre aide :jap:


Message édité par urd-sama le 14-05-2004 à 14:13:37
Reply

Marsh Posté le 26-07-2004 à 23:33:37    

taiste


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed