Utilisation des blocs de construction

Introduits dans Word 2007, les blocs de construction sont similaires aux insertions automatiques utilisées dans les versions précédentes. Cependant, avec les blocs de construction, vous pouvez organiser les entrées de façon à définir leur mode d'utilisation. Grâce aux blocs de construction personnalisés, les utilisateurs peuvent facilement insérer du contenu élaboré n'importe où dans un document à l'aide d'une liste déroulante mise en forme. Associés aux contrôles de contenu, les blocs de construction vous aideront à développer très rapidement et facilement des solutions puissantes.

Le modèle d'objet des blocs de construction comprend trois nouveaux objets et quatre nouvelles collections. Vous pouvez ainsi créer une structure organisationnelle conforme à vos besoins et modifier la structure d'une solution spécifique. Les nouveaux objets et collections sont répertoriés dans le tableau suivant.

Nom Description
BuildingBlock Entrée correspondant à un bloc de construction spécifique.
BuildingBlocks Collection d'entrées de blocs de construction de même type et de même catégorie dans un modèle.
BuildingBlockEntries Collection de tous les blocs de construction d'un modèle.
BuildingBlockType Type de bloc de construction.
BuildingBlockTypes Collection de types de blocs de construction.
Category Catégorie de bloc de construction.
Categories Collection de catégories de blocs de construction.

Présentation des blocs de construction

Les blocs de construction sont organisés par type et par catégorie. Les types de blocs de construction sont composés d’un nombre limité de constantes WdBuildingBlockTypes . Bien qu’il y ait un nombre limité de ces constantes, ce nombre n’est pas faible. Il existe 35 constantes WdBuildingBlockTypes différentes. Ces types vous aident à définir et à organiser vos blocs de construction et, bien que vous ne puissiez pas créer de types de blocs de construction supplémentaires, vous pouvez créer un nombre illimité de catégories pour chaque type.

Les catégories sont composées d’un nombre illimité de chaînes que vous pouvez définir pour organiser vos blocs de construction personnalisés. Les blocs de construction sont stockés dans des modèles. Par défaut, les modèles inclus dans Word ont des catégories de blocs de construction comme « Général » et « Intégré ». Toutefois, vous n’êtes pas limité aux catégories incluses dans ces modèles. Une catégorie peut être n’importe quelle chaîne que vous définissez. Les types et les catégories sont expliqués plus loin dans cette rubrique.

La possibilité de classer les blocs de construction par types et par catégories offre une très grande flexibilité. Par exemple, vous pouvez avoir un bloc de construction nommé « Title » qui a un type wdTypeBibliography et une catégorie « Book Titles » et un autre bloc de construction nommé « Title » qui a un type wdTypeBibliography et une catégorie « Movie Titles », puis vous pouvez avoir un autre bloc de construction nommé « Title » qui a un type wdTypeCustomHeaders et une catégorie de « Titres de livre », etc. Vous pouvez ensuite appeler un autre bloc de construction « Titre » et lui associer le type wdTypeCustomHeaders et la catégorie « Titres de livres », etc. Grâce à l’exceptionnelle flexibilité des blocs de construction, vous pouvez créer des solutions personnalisées sans écrire de code.

Toutefois, les blocs de construction sont également programmables. Vous pouvez créer des blocs de construction, supprimer des blocs de construction et gérer des blocs de construction par programmation. Vous pouvez également observer quand les utilisateurs insèrent de nouveaux blocs de construction dans un document à l’aide de l’événement BuildingBlockInsert . De plus, vous pouvez utiliser des blocs de construction avec des contrôles de contenu pour vous donner encore plus de contrôle sur les blocs de construction que les utilisateurs peuvent insérer dans leurs documents. Par exemple, vous pouvez utiliser un contrôle de contenu de bloc de construction pour filtrer les types de blocs de construction qu’un utilisateur voit, ce qui signifie que l’utilisateur ne peut pas insérer un bloc de construction dans un document qui n’est pas autorisé à un emplacement spécifique du document. Il existe plusieurs exemples dans les sections suivantes qui vous montrent comment utiliser les objets de bloc de construction pour travailler avec des blocs de construction par programmation.

Tâches simples

Les sections suivantes donnent des exemples simples d'utilisation des objets de blocs de construction pour réaliser des tâches spécifiques. Vous trouverez des exemples de code supplémentaires dans les rubriques sur les objets et dans de nombreuses rubriques sur les membres.

Création d’un bloc de construction personnalisé

La création d’un bloc de construction personnalisé est aussi simple que l’utilisation de la méthode Add pour la collection BuildingBlockEntries . Vous pouvez aussi utiliser la méthode Add sur la collection BuildingBlocks; néanmoins, cette méthode risque de générer une erreur d'exécution si aucun bloc de construction n'a encore été défini pour le type ou la catégorie spécifiés. Comme expliqué dans le tableau répertoriant les objets, la collection BuildingBlocks est une collection de blocs de construction dotés d'un type et d'une catégorie spécifiques. La collection BuildingBlocksEntries contient tous les blocs de construction utilisés dans un modèle. Par conséquent, pour ajouter de nouveaux blocs de construction par programmation, il est préférable d'utiliser la méthode Add sur la collection BuildingBlockEntries.

L'exemple de code suivant montre comment réduire la sélection active, créer une plage et définir le texte de cette plage, puis ajouter la sélection en tant que bloc de construction à la collection d'entrées de blocs de construction dans le modèle joint au document actif.

Sub AddCustomBuildingBlock() 
 
 Dim objTemplate As Template 
 Dim objBB As BuildingBlock 
 Dim objRange As Range 
 
 ' Set the template to store the building block 
 Set objTemplate = ActiveDocument.AttachedTemplate 
 
 ' Collapse the range, set the range, and add the text 
 Selection.Collapse 
 Set objRange = Selection.Range 
 objRange.Text = "Building blocks for the technically challenged" 
 
 ' Add the building block to the template 
 Set objBB = objTemplate.BuildingBlockEntries.Add( _ 
 Name:="Title", _ 
 Type:=wdTypeCustomHeaders, _ 
 Category:="Book Titles", _ 
 Range:=objRange) 
 
End Sub

Ajout d’une nouvelle catégorie

Comme mentionné précédemment, vous pouvez ajouter un nombre de catégories illimité. Cependant, il n'existe pas de méthode Add pour la collection Categories. Par conséquent, pour ajouter une nouvelle catégorie à la collection, vous devez ajouter un nouveau bloc de construction. Par exemple, dans l'exemple de code précédent, si la catégorie « BookTitles » (Titres de livre) n'existe pas lorsque vous exécutez le code, Word l'ajoute à la collection Categories.

Accès à un bloc de construction existant

À un moment donné, vous souhaiterez accéder à l’un des blocs de construction dont vous disposez, qu’il s’agisse d’un bloc de construction personnalisé ou de l’un des blocs de construction intégrés. Vous pourriez utiliser la collection BuildingBlockEntries, mais comme il peut exister plusieurs blocs de construction portant le même nom, il vous faudrait d'abord identifier le type et la catégorie du bloc recherché pour savoir duquel il s'agit. Il est donc préférable d'utiliser la collection BuildingBlocks pour accéder à des blocs de construction existants.

L'exemple de code suivant montre comment accéder au bloc de construction que vous avez ajouté dans l'exemple de code précédent.

Sub GetExistingBuildingBlock() 
 
 Dim objTemplate As Template 
 Dim objBB As BuildingBlock 
 
 ' Set the template where the building block is stored 
 Set objTemplate = ActiveDocument.AttachedTemplate 
 
 ' Access the building block through the type and category 
 Set objBB = objTemplate.BuildingBlockTypes(wdTypeCustomHeaders) _ 
 .Categories("Book Titles").BuildingBlocks("Title") 
 
End Sub

Insertion d’un bloc de construction dans un document

Une fois que vous avez accédé à un bloc de construction, utilisez la méthode Insert de l’objet BuildingBlock pour l’insérer dans un document. L’exemple de code suivant complète l’exemple de code précédent en ajoutant une ligne pour insérer le bloc de construction au point d’insertion (ou en remplacement du texte sélectionné le cas échéant) dans le document actif.

Remarque

Lorsque vous insérez un bloc de construction à l’aide du Ruban, Word détermine automatiquement certains éléments de ce bloc, notamment l’endroit où il sera inséré ; en revanche, si vous l’insérez via le modèle d’objet, cette décision prédéfinie ne se produit pas automatiquement. Par exemple, lorsque vous insérez un bloc de construction d’en-tête à partir du ruban, Word détermine automatiquement le remplacement de l’en-tête existant. Si vous insérez ce même bloc à l'aide du modèle d'objet, vous devez spécifier explicitement à quel endroit insérer le texte qu'il contient.

Sub InsertExistingBuildingBlock() 
 
 Dim objTemplate As Template 
 Dim objBB As BuildingBlock 
 
 ' Set the template where the building block is stored 
 Set objTemplate = ActiveDocument.AttachedTemplate 
 
 ' Access the building block through the type and category 
 Set objBB = objTemplate.BuildingBlockTypes(wdTypeCustomHeaders) _ 
 .Categories("Book Titles").BuildingBlocks("Title") 
 
 ' Insert the building block into the document replacing any selected text 
 objBB.Insert Selection.Range 
 
End Sub

Filtrage d’une liste de blocs de construction dans un contrôle de contenu

Si vous associez des contrôles de contenu à des blocs de construction, vous pouvez filtrer les blocs auxquels l'utilisateur pourra accéder. Pour cela, vous devez utiliser un contrôle de contenu et un événement. Lorsqu'un utilisateur entre dans un contrôle de contenu, cela déclenche l'événement ContentControlOnEnter de l'objet Document. Cet événement a un paramètre correspondant au contrôle de contenu actif. Vous pouvez déterminer s'il s'agit d'un contrôle de contenu de bloc de construction. Si c'est le cas, les propriétés BuildingBlockType et BuildingBlockCategory vous permettent d'identifier le type et la catégorie à utiliser pour filtrer la liste des blocs de construction disponibles pour le contrôle de contenu. Vous pouvez ainsi spécifier les blocs de construction devant apparaître dans la liste déroulante de l'en-tête du contrôle de contenu.

Pour l'exemple de code suivant, il doit y avoir au moins un contrôle de contenu dans le document. S’il s’agit d’un contrôle de contenu de bloc de construction, la liste des blocs de construction apparaissant dans l’en-tête du contrôle de contenu affiche uniquement les blocs ajoutés à l’aide de la sous-routine AddCustomBuildingBlock présentée plus haut dans cette rubrique. Pour plus d’informations sur les contrôles de contenu, voir Utilisation des contrôles de contenu.

Private Sub Document_ContentControlOnEnter(ByVal ContentControl As ContentControl) 
 Dim objCC As ContentControl 
 
 Set objCC = ContentControl 
 
 If objCC.Type = wdContentControlBuildingBlockGallery Then 
 objCC.BuildingBlockType = wdTypeCustomHeaders 
 objCC.BuildingBlockCategory = "Book Titles" 
 End If 
End Sub

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.