Mary écrit une macro qui divisera une table. Travailler sur la table active n’est pas vraiment un problème, mais elle souhaite copier la première ligne de la table active, puis diviser la table et enfin coller la ligne copiée dans la première ligne de la nouvelle table créée par le fractionnement. Pour ce faire correctement, elle souhaite déterminer les numéros d’index utilisés par Word pour référencer les deux tables de la collection Tables. Mary veut savoir comment elle peut découvrir le numéro d’index de la table active (avant le fractionnement) afin qu’elle puisse simplement incrémenter ce nombre pour connaître le nouveau numéro d’index de la table créée après le fractionnement.

Le modèle d’objet de Word repose sur l’organisation d’objets individuels en collections auxquelles il est possible d’accéder par programme. Cela vaut non seulement pour les tableaux, mais aussi pour les paragraphes, les graphiques et une foule d’autres objets.

Vous pouvez facilement trouver le nombre d’objets dans une collection à l’aide de la propriété Count. Par exemple, vous pouvez utiliser ce qui suit pour découvrir le nombre de tables dans un document, car il renvoie le nombre d’objets dans la collection Tables:

iNumTables = ActiveDocument.Tables.Count

Trouver quelle table est la table actuelle est un peu plus délicat, mais cela peut être fait. Le moyen le plus simple consiste à ajouter un signet à la table actuelle, puis à examiner toutes les tables du document pour voir quelle table contient ce signet. Une fois que vous avez découvert cela, vous savez quelle table est la table actuelle et vous pouvez supprimer le signet. La macro suivante met en œuvre ces étapes:

Sub FindTableNumber()

Dim J As Integer     Dim iTableNum As Integer     Dim oTbl As Table

Selection.Bookmarks.Add ("TempBM")

For J = 1 To ActiveDocument.Tables.Count         Set oTbl = ActiveDocument.Tables(J)

oTbl.Select         If Selection.Bookmarks.Exists("TempBM") Then             iTableNum = J             Exit For         End If     Next J     ActiveDocument.Bookmarks("TempBM").Select     ActiveDocument.Bookmarks("TempBM").Delete     MsgBox "The current table is table " & iTableNum End Sub

Pour utiliser la macro, assurez-vous simplement que le point d’insertion se trouve dans le tableau souhaité. La macro peut être facilement adaptée à un contexte plus large, tel que celui où la table est divisée et autrement manipulée.

Il existe cependant une autre façon de gérer par programme l’action sous-jacente que Mary souhaite réaliser: une méthode qui ne nécessite pas l’utilisation de numéros d’index pour la collection Tables. Vous pouvez copier la première ligne du tableau, puis diviser le tableau en utilisant une commande similaire à la suivante:

Selection.Tables(1).Split(5)

Cette commande divise le tableau à la ligne 5; vous pouvez facilement modifier le point de fractionnement en modifiant la ligne à laquelle il est fractionné. Ensuite, vous pouvez déplacer le point d’insertion au début de la table suivante (celle nouvellement créée) en utilisant la commande suivante:

Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext

Cette commande saute au début du tableau suivant et vous pouvez ensuite coller la ligne d’en-tête que vous avez copiée précédemment.

Si vous êtes intéressé par une discussion plus détaillée sur la façon de gérer les tables par programmation, vous pouvez trouver un excellent article ici:

http://msdn2.microsoft.com/en-us/library/aa537149(office.11).aspx

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites WordTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / wordribbon-WordTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

WordTips est votre source pour une formation Microsoft Word rentable.

(Microsoft Word est le logiciel de traitement de texte le plus populaire au monde.) Cette astuce (505) s’applique à Microsoft Word 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban de Word (Word 2007 et plus tard) ici:

link: / wordribbon-Index_Number_for_the_Active_Table [Numéro d’index de la table active].