Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/09/2007, 15h01   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 21
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 21
Points : 2
Points : 2
Par défaut Mise a jour TOC

Bonjour
Désolé pour ma question qui va peut etre paraitre stupide mais je suis totalement novice en VB.

J'ai un document Word crée par un autre outil (DOORS). Lors de la création de ce document, il y a la possibilité d'exécuter automatiquement une MACRO word.

J'aimerais donc que cette macro mette à jour automatiquement:
- la table des matières générale
- la table des figures
- la table des tables
- etc, etc (j'ai plusieurs tables)

c'est évidement trivial à faire sur le document word lui meme, mais l'enregistrement de la macro ne marche pas car le code n'indique pas le remplacement des anciennes tables par les nouvelles.

J'ai cherché sur le forum sans trouver de pb similaire. J'ai essayé de programmer moi meme la macro, mais je manque de connaissances VB.

ah oui encore une chose : lors de la mise a jour de la table, y a-t-il possibilité si la table est vide (table des figures par exemple avec aucune figure dans le document) d'avoir un texte style "Aucune entrée" plutot que le sympathique "Error bookmark not found" de word ??

Merci
loupgarou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 15h08   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Bonjour et bienvenue sur les forums office de DVP.

Pour la mise à jour des champs, utilise ceci

Code :
ActiveDocument.Fields.Update
Pour les tables vides, il faut tester toutes les entrées de champ et vérifier à quoi elles correspondent .....
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 15h43   #3
Invité de passage
 
Inscription : septembre 2007
Messages : 21
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 21
Points : 2
Points : 2
La commande que tu me donnes mets bien à jour les champs dans le document, mais la Table des matières n'est pas mis à jour....

en fait je cherche la commande qui est passée quand on clique sur "Update entire table" dans la fenetre ou se presentent les 2 choix
  • "Update all pages only"
  • "Update entire table",
une fois qu'on a mis a jour tous les champs du document.
(dsl mon word est configuré en anglais)

La commande que tu m'as donné est celle qui a été enregistré quand j'ai enregistré ma manip comme macro
loupgarou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 17h43   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
J'avais essayé avant de te la donner sur un document avec une TOC.

Je vais approfondir.

Les Soft en anglais ne me dérangent pas tant que je ne dois pas traduire.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 19h13   #5
Invité de passage
 
Inscription : septembre 2007
Messages : 21
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 21
Points : 2
Points : 2
J'ai trouvé une solution qui me permet d'aller positionner mes tables en suivant des bookmarks prédéfinis dans mon template

Code :
1
2
3
4
5
6
7
8
9
10
    With ActiveDocument
         Selection.GoTo What:=wdGoToBookmark, Name:="TableOfFigures"
       .TablesOfFigures.Add Range:=Selection.Range, Caption:="", _
            IncludeLabel:=True, RightAlignPageNumbers:=True, UseHeadingStyles:= _
            False, UpperHeadingLevel:=1, LowerHeadingLevel:=6, _
            IncludePageNumbers:=True, AddedStyles:="Figure Caption", _
            UseHyperlinks:=True, HidePageNumbersInWeb:=True
        .TablesOfFigures(1).TabLeader = wdTabLeaderDots
        .TablesOfFigures.Format = wdIndexIndent
    End With
Il me reste cependant 2 questions non élucidées jusque là

1) dans le cas où la table existe déjà, il me faudrait rajouter qq chose comme :
Code :
        .TablesOfFigures(1).Delete
aprés mon with. Or cela va poser un problème si la Table n'existe pas...donc : COMMENT TESTER si la table existe déjà sur le bookmark ...j'ai essayé avec
Code :
        MyCheck = IsEmpty(Selection)
mais c'est pas super concluant....si qq'un une idée

2) je ne sais toujours pas comment tester le résultat de ma table pour savoir si il y a ds entrées ou pas....bon je n'ai qu'un aprés midi de VBA derrière moi, je ne désespère pas de trouver, mais si un bon samaritain avait pitié de mes heures de sommeil ce serait super sympa...

a+
Jean
loupgarou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h20.


 
 
 
 
Partenaires

Hébergement Web