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 :

Parcourir la table des matieres pour la modifier


Sujet :

Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 35
    Points : 20
    Points
    20
    Par défaut Parcourir la table des matieres pour la modifier
    Bonjour,


    J'ai une application qui génère des documents words à partir de plusieurs sources et qui, à la fin génère une table des matières dans ce document par automation.

    Ce document contient plusieurs chapitres, chaque chapitre étant lui même constitué de plusieurs sections. La numérotation des pages repart à 1 à chaque chapitre.

    La problématique est d'ajouter l'intitulé du chapitre dans le numéro de page dans la table des matières. Je sais que cette possibilité existe de façon standard dans word en ajoutant le num de chapitre dans le numéro de page, mais elle nécessite d'utiliser une numérotation que je n'ai pas dans mon doc .
    De plus la numérotation devrait être comme suit :
    d'abord chap HDG
    puis chap 0, chap 1, chap 2 jusqu'à chap n
    puis appendix0, appendix1 jusqu'à appendix n

    Je ne peux en aucun cas changer cela.

    Je veux donc obtenir une table des matières dans laquelle les pages seraient :
    HDG.1
    0.1
    1.1
    ....
    n.1
    ap.1
    ...
    ap.n

    On pensait donc générer la table des matières normalement (et donc obtenir 1 comme numéro de page à chaque chapitre) et ensuite parcourir chaque entrée de la table des matières pour la modifier de la façon suivante :
    si on est sur une entrée de niveau 1, alors on modifie le numéro de page (tout ça, toujours par automation).

    Or, je n'ai pas trouvé le moyen de parcourir chaque ligne de la table des matières, à part en parcourant les champs qui la composent.
    En gros chaque ligne de la table est constituée de deux champs : un champ hyperlien qui contient le titre du chapitre et un champ pageref qui contient la page. Je peux donc modifier le champ pageref en fonction de ce que contient le champ hyperlien mais le problème devant lequel je me trouve, c'est que de cette façon, je n'ai aucun moyen de savoir si je me trouve sur une entrée de niveau 1 ou non.

    Ca fait pas mal de temps que je me creuse la tete sur ce problème, si quelqu'un avait une idée quelconque sur le sujet...

    Merci beaucoup.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Je suppose que tu utilises les entrées normales de Word pour la génération de la table des matières.
    Dans ce cas, on peut toujours utiliser les informations mais les masquer.
    Si certains caractères sont blancs, ils ne sont pas affichés sur le document ni lors de l'impression mais peuvent être utilisés pour des références et dans ce cas, être affichés.

    Il te suffit d'utiliser dans ton titre les numéros de page et de les mettre en Blanc.

    Mais je cerne pas très bien comment se compose ton document.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 35
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoup pour ta réponse, mais je ne comprends pas bien ce que tu proposes.

    Qu'entends tu par les 'entrées normales' de Word?
    Ma table des matières est générées à partir de styles.

    Concernant la composition de mon doc :

    il y a un premier chapitre d'entête, appelé Heading, d'où le prefix HDG a inclure dans la TOC pour toutes les pages de ce chapitre

    Ensuite il y a x chapitres nommés chap 0 à chap n

    Puis un certain nombre d'appendices, numérotées app0 à appx

    La table des matieres que je veux obtenir ressemblerait à ça, en espérant que ça puisse t'aiguiller... :

    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
     
    Heading page	                                      HDG.1
            Heading sous chapitre 1	                   HDG.1
            Heading sous chapitre 2                    HDG.3
            Heading sous chapitre 3                    HDG.4
     
    Chapter 0                                               0.1
            sous chapitre 0.1	                      0.2
            sous chapitre 0.2	                      0.3
     
    Chapter 1                                               1.1
            sous chapitre 1.1
                 sous chapitre 1.1.1                      1.3
            sous chapitre 1.2	                      1.7
     
    Chapter 2 	                                        2.1
            sous chapitre 2.1                             2.1
            sous chapitre 2.2                             2.2
     
    Appendix 0                                             A0.1
             appendix 0.1                                 A0.1
             appendix 0.2                                 A0.4
     
    Appendix 1                                            A1.1
             appendix 1.1                                 A1.2

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Malheureusement, la table des matières n'est pas un objet où l'on peut parcourir lignes ou autres.

    Jette un oeil sur cet exemple,
    Fichiers attachés Fichiers attachés

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 35
    Points : 20
    Points
    20
    Par défaut
    Merci, je regarde des que je peux.

  6. #6
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut Parcourir une TdM
    Salut Stehga,

    En fait au moins jusqu'à Word 2003 (et j'en suis convaincu) avec Word 2007, on peut parcourir une TdM mais parce que Word la considère aussi comme du texte (presque) normal.

    Donc il est possible de parcourir la TdM, de modifier ligne par ligne mais cela dépende des précautions car la sélection de la 1ere ou de la dernière ligne d'une TdM la sélectionne entièrement mais il y a au moins 3 ou 4 ruses pour contourner le problème et truander sauvagement Word.

    Si ça t'intéresse, fais-le moi savoir et envoie alors ta TdM seulement. pendant ce temps, je vais cherche, je dois avoir une vieille macro dans un coin qui faisait justement un truc comme ça. Ca peut être une base.

    @+

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 35
    Points : 20
    Points
    20
    Par défaut
    Heureux-oli, merci pour ton exemple, mais c'est une solution que je ne peux pas utiliser, les documents sont susceptibles d'êtres modifiés par plusieurs personnes et ils pourraient trés bien aller bidouiller les titres et perdre l'info...

    Sepia, si je comprends bien, tu dis que sur word 2007 on peut parcourir la table des matières mais pas sur les versions précédentes? Mais qu'il y a moyen de contourner ce problème? Si tu as retrouvé ta macro, ça m'interresserait de la voir.

    Merci beaucoup

  8. #8
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut Parcourir une TdM
    Salut,

    Non, c'est l'inverse. Je sais que c'est OK jusqu'à Word 2003 et je le suppose que c'est toujours vrai pour Word 2007.

    Je n'ai pas retrouvé la macro mais je l'ai refaite. Le principe est de trouver la table des matières, de se positionner devant, et de ne pas sélectionner le 1er caractère (sinon tu sélectionnes toute la table). Je n'ai pas mis toutes les gardes/vérif (sinon il n'y a plus de jeu ma pauvre Lucette, comme le dirait une pub pour le loto), du style pour que ça marche il faut une TdM avec au moins 2 lignes mais sinon tu avais plus vite de la faire à la main et il ne faut pas que tes titres soient sur 2 lignes.

    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
    Sub PacourirMaTdM()
        '// On va en début de document
        Selection.HomeKey Unit:=wdStory
        
        '// On recherche la 1ere entrée de la TdM en fait la fin de la 1ere ligne de la TdM
        Selection.Find.ClearFormatting
        Selection.Find.Style = ActiveDocument.Styles("TM 1")
        With Selection.Find
            .Text = "^p"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute
        If Selection.Find.Found Then
            '// On se déplace devant la fin de la ligne
             Selection.MoveLeft Unit:=wdCharacter, Count:=1
            While InStr(Selection.Paragraphs(1).Style, "TM") = 1
                '// On se déplace du n° de la page
                Selection.MoveLeft Unit:=wdWord, Count:=1
                '// On ajoute le titre concerné - Là j'ai mis un texte fixe, à toi de remplacer
                Selection.TypeText Text:="MonTitreAjouter "
                
                '// On se redéplace devant la fin de la ligne puis son descend d'une ligne
                Selection.MoveRight Unit:=wdWord, Count:=1
                Selection.MoveDown Unit:=wdLine, Count:=1
            Wend
        Else
            MsgBox "Pas de TdM trouvée"
        End If
    End Sub
    @+

Discussions similaires

  1. Réponses: 14
    Dernier message: 24/10/2006, 06h51
  2. [Beamer] Table des matières de taille variable
    Par jacklafrip dans le forum Beamer
    Réponses: 1
    Dernier message: 25/08/2006, 11h44
  3. [MySQL] Table des matières en arborescence
    Par tomy29 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/01/2006, 14h24
  4. Afficher les titres de la table des matières
    Par Samanta dans le forum Mise en forme
    Réponses: 3
    Dernier message: 12/08/2005, 11h23
  5. Xsl Fo : Table des matieres
    Par serwol dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/06/2005, 09h46

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