Explications :
lorsque on essaie d'insérer par macro dans un document Word 2007 un bloc de construction (page de garde, table des matières, Header, Footer, etc.) le fameux message d'erreur 5941 "le membre de la collection requis n'existe pas" risque de survenir si l'on ne prend pas la précaution de charger la bibliothèque des blocs de construction word qui se trouve dans le document "Building Blocks.dotx"...
ce document se trouve dans le dossier :
"C:\documents and settings\
[userid]\application data\microsoft\document building blocks\[code pays]\Building Blocks.dotx"


et il faut tenir compte du fait qu'il n'est pas attaché au document word systématiquement, il l'est seulement lorsque l'on ouvre manuellement le menu word du ruban "insertion/QuicPart"...

par macro il faut le charger comme le fait la procédure TestBuildingBlocks() ci-dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub TestBuildingBlocks()
Dim docModele As Template
 
    Templates.LoadBuildingBlocks ' chargement du template building blocks
    ' recherche du bon template
    For Each docModele In Templates
        If docModele.Name = "Building Blocks.dotx" Then
            ' si trouvé insertion du bloc table des matières
            Templates(docModele.FullName).BuildingBlockEntries("Table automatique 1"). _
            Insert Where:=Selection.Range, RichText:=True
            Exit For
        End If
    Next
End Sub
pour être complet, le :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Insert Where:=Selection.Range
suppose que l'on se trouve dans le document word à l'endroit précis à insérer le bloc de construction... à noter dans le code plus haut la différence entre "Name" (nom simple de fichier "toto.doc") et "Fullname" (chemin complet C:\documents and settings\[userid]\application data\...)

enfin, le code plus haut suppose que l'on n'ait qu'un seul fichier modèle "Building Blocks.dotx" dans tous les répertoires de template... sinon seul le premier trouvé sera utilisé par la macro...

voilà, j'espère avoir été assez clair et bonne programmation !!

zigo34