Utilisation des objets Range

Dans Visual Basic, une tâche courante consiste à spécifier une zone dans un document, puis à effectuer une opération sur cette zone, comme insérer du texte ou appliquer une mise en forme. Admettons, par exemple, que vous vouliez écrire une macro destinée à rechercher un mot ou une expression dans une partie d'un document. La partie du document peut être représentée par un objet Range. Une fois l'objet Range identifié, les méthodes et propriétés de l'objet Range peuvent être appliquées pour modifier le contenu de la plage.

Un objet Range fait référence à une zone contiguë d'un document. Chaque objet Range est défini par la position de son caractère de début et celle de son caractère de fin. De la même manière que les signets sont utilisés dans un document, les objets Range sont utilisés dans les procédures Visual Basic pour identifier des parties données d'un document. Un objet Range peut être aussi petit que le point d'insertion ou aussi grand que le document tout entier. Toutefois, contrairement à un signet, un objet Range n'existe que pendant la durée de l'exécution de la procédure qui l'a défini.

Les propriétés Start, End et StoryType identifient de manière unique un objet Range. Les propriétés Start et End renvoient ou définissent les positions des caractères de début et de fin de l'objet Range. La position de caractère a la valeur zéro au début du document, un après le premier caractère, et ainsi de suite. Il existe plusieurs types d’article représentés par les constantes WdStoryType de la propriété StoryType.

Notes

Les objets Range sont indépendants de la sélection. Ainsi, vous pouvez définir et modifier une plage sans modifier la sélection en cours. Vous pouvez aussi définir plusieurs plages dans un document, mais il ne peut y avoir qu'une sélection par volet de document.

Utilisation de la méthode Range

Utilisez la méthode Range de l’objet Document pour créer un objet Range qui se trouve dans l’article principal et qui possède un point de départ et un point de terminaison donnés. L'exemple ci-dessous montre comment créer un objet Range qui commence au début du premier caractère et s'étend jusqu'au dixième caractère.

Sub SetNewRange() 
 Dim rngDoc As Range 
 Set rngDoc = ActiveDocument.Range(Start:=0, End:=10) 
End Sub

Vous pouvez voir que l'objet Range est créé lorsque vous appliquez une propriété ou une méthode à l'objet Range. L'exemple ci-dessous montre comment mettre en gras les 10 premiers caractères du document actif.

Sub SetBoldRange() 
 Dim rngDoc As Range 
 Set rngDoc = ActiveDocument.Range(Start:=0, End:=10) 
 rngDoc.Bold = True 
End Sub

Lorsque vous devez référencer un objet Range plusieurs fois, vous pouvez utiliser l’instruction Set pour définir une variable qui est égale à l’objet Range. Cependant, si vous ne devez effectuer qu'une seule opération sur un objet Range, il n'est pas nécessaire de stocker ce dernier dans une variable. Vous pouvez obtenir le même résultat en utilisant une seule instruction qui identifie la plage et modifie la propriété Bold.

Sub BoldRange() 
 ActiveDocument.Range(Start:=0, End:=10).Bold = True 
End Sub

Tout comme un signet, une plage peut correspondre à un groupe de caractères ou juste marquer un emplacement dans un document. Dans l'exemple ci-dessous, l'objet Range dispose des mêmes points de début et de fin. La plage ne comprend pas de texte. Cet exemple montre comment insérer du texte au début du document actif.

Sub InsertTextBeforeRange() 
 Dim rngDoc As Range 
 Set rngDoc = ActiveDocument.Range(Start:=0, End:=0) 
 rngDoc.InsertBefore "Hello " 
End Sub

Vous pouvez définir le début et les points de terminaison d’une plage à l’aide des numéros de position des caractères, comme illustré ci-dessus, ou utiliser les propriétés Début et Fin avec des objets tels que les objets Selection, Bookmark ou Range. L'exemple qui suit montre comment créer un objet Range commençant au début du deuxième paragraphe et finissant après le troisième paragraphe.

Sub NewRange() 
 Dim doc As Document 
 Dim rngDoc As Range 
 
 Set doc = ActiveDocument 
 Set rngDoc = doc.Range(Start:=doc.Paragraphs(2).Range.Start, _ 
 End:=doc.Paragraphs(3).Range.End) 
End Sub

Pour plus d’informations et d’exemples, voir la méthode Range.

Utilisation de la propriété Range

La propriété Range apparaît sur plusieurs objets, tels que Paragraph, Bookmark et Cell, et est utilisée pour renvoyer un objet Range. L'exemple suivant montre comment renvoyer un objet Range qui fait référence au premier paragraphe du document actif.

Sub SetParagraphRange() 
 Dim rngParagraph As Range 
 Set rngParagraph = ActiveDocument.Paragraphs(1).Range 
End Sub

Une fois que vous avez un objet Range, vous pouvez utiliser n’importe quelle propriété ou méthode pour modifier l’objet Range. The following example selects the second paragraph in the active document and then centers the selection.

Sub FormatRange() 
 ActiveDocument.Paragraphs(2).Range.Select 
 Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter 
End Sub

Si vous devez appliquer de nombreuses propriétés ou méthodes au même objet Range, vous pouvez utiliser la structure With…End With. L'exemple ci-dessous montre comment mettre en forme le texte du premier paragraphe du document actif.

Sub FormatFirstParagraph() 
 Dim rngParagraph As Range 
 Set rngParagraph = ActiveDocument.Paragraphs(1).Range 
 With rngParagraph 
 .Bold = True 
 .ParagraphFormat.Alignment = wdAlignParagraphCenter 
 With .Font 
 .Name = "Stencil" 
 .Size = 15 
 End With 
 End With 
End Sub

Pour plus d’informations et d’exemples, voir la rubrique sur la propriété Range.

Redéfinition d'un objet Range

Utilisez la méthode SetRange pour redéfinir un objet Range existant. L'exemple suivant montre comment définir en tant que plage la sélection en cours. La méthode SetRange permet ensuite de redéfinir la plage de telle sorte qu'elle désigne la sélection en cours augmentée des dix caractères qui la suivent.

Sub ExpandRange() 
 Dim rngParagraph As Range 
 Set rngParagraph = Selection.Range 
 rngParagraph.SetRange Start:=rngParagraph.Start, _ 
 End:=rngParagraph.End + 10 
End Sub

Pour plus d’informations et d’exemples, voir la méthode Range pour le document.

Notes

Lors du débogage de vos macros, vous pouvez utiliser la méthode Select pour vous assurer qu’un objet Range fait référence à la plage de texte correcte. Par exemple, les instructions ci-dessous sélectionnent un objet Range qui fait référence aux deuxième et troisième paragraphes du document actif, puis mettent en forme la police de la sélection.

Sub SelectRange() 
 Dim rngParagraph As Range 
 
 Set rngParagraph = ActiveDocument.Paragraphs(2).Range 
 
 rngParagraph.SetRange Start:=rngParagraph.Start, _ 
 End:=ActiveDocument.Paragraphs(3).Range.End 
 rngParagraph.Select 
 
 Selection.Font.Italic = True 
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.