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

VBA Word Discussion :

Problème lors de la création d'une table des matières par macro


Sujet :

VBA Word

  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut Problème lors de la création d'une table des matières par macro
    Bonjour,

    Lors d'une opération de publipostage, à la fin je souhaite réaliser une table des matières grâce au code ci-dessous. Le problème est qu'à l'exécution, j'ai une erreur m'indiquant que Selection.Range n'a pas été attribué. Pourtant il me semble que c'est bien ce que j'ai fait avec la première ligne du code non ?

    Doc est le nom du document word que je "remplis".
    Pour info il est ouvert en "read only".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Doc.Bookmarks("tableofcontent").Select
     
            Doc.TablesOfContents.add Range:=Selection.Range, RightAlignPageNumbers:= _
               True, UseHeadingStyles:=True, UpperHeadingLevel:=3, _
                LowerHeadingLevel:=3, IncludePageNumbers:=True, AddedStyles:="", _
                UseHyperlinks:=True, HidePageNumbersInWeb:=True, UseOutlineLevels:= _
                True
            Doc.TablesOfContents(1).TabLeader = wdTabLeaderSpaces
          Doc.TablesOfContents.Format = wdTOCTemplate
    J'ai aussi essayé d'effectuer ce code après le publipostage en utilisant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ActiveDocument.Bookmarks("tableofcontent").Select
     With ActiveDocument
     
            .TablesOfContents.add Range:=Selection.Range, RightAlignPageNumbers:= _
               True, UseHeadingStyles:=True, UpperHeadingLevel:=3, _
                LowerHeadingLevel:=3, IncludePageNumbers:=True, AddedStyles:="", _
                UseHyperlinks:=True, HidePageNumbersInWeb:=True, UseOutlineLevels:= _
                True
            .TablesOfContents(1).TabLeader = wdTabLeaderSpaces
            .TablesOfContents.Format = wdTOCTemplate
    End With
    Et là on me dit que ce n'est pas possible car aucun document n'est ouvert.

    Si vous avez des réponses, merci d'avance.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Une table des matières est établie selon les styles utilisés dans le document. As-tu des styles Titre1, Titre2... dans ton document ?
    A+

  3. #3
    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
    http://heureuxoli.developpez.com/office/word/tablemat/
    Sans VBA mais avec d'autres styles.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    Pour ce qui est de mes titres, j'ai fait un test en écrivant la macro directement dans word et là ça marche sans problème. C'est quand j'essai de l'effectuer depuis access que ça coince.

    Sinon, en ce qui concerne la réponse d'Heureux oli, je souhaiterais l'effectuer en VBA.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Points : 112
    Points
    112
    Par défaut
    Comme ça, ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim toc As TableOfContents
            Dim r as range
            Set r = Doc.Bookmarks("tableofcontent").Range
     
            Set toc = Doc.TablesOfContents.add(r, RightAlignPageNumbers:= _
               True, UseHeadingStyles:=True, UpperHeadingLevel:=3, _
                LowerHeadingLevel:=3, IncludePageNumbers:=True, AddedStyles:="", _
                UseHyperlinks:=True, HidePageNumbersInWeb:=True, UseOutlineLevels:= _
                True)
     
            toc.TabLeader = wdTabLeaderSpaces
            toc.Range.Font.Size = 20
            Doc.TablesOfContents.Format = wdTOCTemplate

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT 1.0] Création d'une table des matières, il manque des éléments !
    Par PouetteMan dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 08/11/2011, 10h46
  2. Problème lors de la création d'une table
    Par xoum89 dans le forum SQL
    Réponses: 8
    Dernier message: 20/04/2009, 22h29
  3. [XI R2 SP2 Deski] Création d'une table des matières
    Par alain.nico dans le forum Deski
    Réponses: 7
    Dernier message: 28/12/2007, 09h31
  4. Réponses: 8
    Dernier message: 06/06/2007, 17h03
  5. [VBA-word] Table des matières par macro
    Par EvaristeGaloisBis dans le forum VBA Word
    Réponses: 2
    Dernier message: 15/05/2007, 16h02

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