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 01/06/2007, 17h34   #1
Membre régulier
 
Inscription : avril 2007
Messages : 335
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 335
Points : 73
Points : 73
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 :
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 :
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.
Tintou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2007, 10h19   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2007, 10h47   #3
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 351
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 351
Points : 29 264
Points : 29 264
http://heureuxoli.developpez.com/office/word/tablemat/
Sans VBA mais avec d'autres styles.
__________________
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 04/06/2007, 08h14   #4
Membre régulier
 
Inscription : avril 2007
Messages : 335
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 335
Points : 73
Points : 73
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.
Tintou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 11h04   #5
Membre régulier
 
Inscription : avril 2007
Messages : 335
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 335
Points : 73
Points : 73
Comme ça, ça marche :
Code :
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
Tintou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h22.


 
 
 
 
Partenaires

Hébergement Web