Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VB Word automation - fusionner 2 cellules d'une table

3 réponses
Avatar
Didier
Bonjour

mon problème est résumé dans le titre.
j'ai un document Word avec plusieurs tables.
comment puis je faire pour fusionner à partir de VB (pas VBA)
les cellules de
table x (x = n° d'ordre de la table)
ligne i (i = n° de la ligne dans la table)
colonne j,k (j = colonne de départ, k=colonne d'arrivée)

A priori il s'agit d'utiliser Selection et Range mais je n'y comprends rien.

Merci d'avance
Didier

3 réponses

Avatar
Anacoluthe
Bonjour !

'Didier' nous a écrit ...
mon problème est résumé dans le titre.
j'ai un document Word avec plusieurs tables.
comment puis je faire pour fusionner à partir de VB (pas VBA)
les cellules de
table x (x = n° d'ordre de la table)
ligne i (i = n° de la ligne dans la table)
colonne j,k (j = colonne de départ, k=colonne d'arrivée)

A priori il s'agit d'utiliser Selection et Range mais je n'y comprends
rien.


En VBA vous n'avez pas besoin d'utiliser Selection
Un Range est simplement une partie continue d'un document
Selection n'est qu'un Range particulier : celui sélectionné.

Ainsi le contenu de la cellule ligne 2, colonne 3 du 2ème tableau est:
ActiveDocument.Tables(2).Cell(2,3).Range
vous n'êtes pas obligé de le sélectionner
ActiveDocument.Tables(2).Cell(2,3).Select

Mais pour fusionner des cellules vous n'avez même pas besoin
d'utiliser le Range des cellules : la méthode Merge s'applique
sur les objets Cell directement.

Pour fusionner dans le 2ème tableau les cellules (2,3) à (3,4)
il vous suffit d'écrire :
With ActiveDocument.Tables(2)
.Cell(2, 3).Merge .Cell(3, 4)
End With

Est-ce plus clair ?

Anacoluthe
« Tout est difficile avant d'être simple. »
- Thomas FULLER

Avatar
Didier
Bonjour

Merci de cette réponse rapide et précise.

Petite question subsidiaire

la fusion des cellules a eu pour effet indésirable de centrer le texte
Comment faire pour empecher cela ( de préférence ) ou pour cadrer le
texte à gauche après fusion ( si impossible d'empécher le centrage )

Didier

ps: Ou puis je trouver des explications et exemples clairs me permettant
de piloter Word ?



Pour fusionner dans le 2ème tableau les cellules (2,3) à (3,4)
il vous suffit d'écrire :
With ActiveDocument.Tables(2)
.Cell(2, 3).Merge .Cell(3, 4)
End With

Est-ce plus clair ?

Anacoluthe
« Tout est difficile avant d'être simple. »
- Thomas FULLER


Avatar
Anacoluthe
Bonjour !

'Didier' nous a écrit ...
Petite question subsidiaire
la fusion des cellules a eu pour effet indésirable de centrer le texte
Comment faire pour empecher cela ( de préférence ) ou pour cadrer le
texte à gauche après fusion ( si impossible d'empécher le centrage )


Ah ?? En principe la fusion de cellules ne centre rien de plus dans Word
(C'est dans Excel qu'il y a un bouton 'Fusionner et centrer')

Pour aligner à gauche le contenu de la cellule (2,3)
on en revient au Range :
.Cell(2,3).Range.ParagraphFormat.Alignment = wdAlignParagraphLeft

ps: Ou puis je trouver des explications et exemples clairs me permettant
de piloter Word ?


Il n'y a rien de particulier à savoir pour l'Automation de Word !

Tout le modèle objet Word est décrit et commenté dans l'Aide.

Quand on fait une macro VBA dans Word on utilise implicitement
le modèle objet Word. Quand on est en Automation de Word, c'est
exactement la même syntaxe sauf qu'il faut être explicite
sur l'application Word instanciée.

Je dirais qu'avant de se lancer dans une application pilotant Word
le mieux est de se familiariser /dans Word/ avec les objets du
modèle objet Word, leurs propriétés et leurs méthodes.

Anacoluthe
« Tout est difficile avant d'être simple. »
- Thomas FULLER