[VB.NET -> VBA]Exporter deux tableaux dans word à partir de VBA 2008

Signaler
-
 tamtatouchte -
Bonjour,
j'ai une question concernant l'export des résultats d'une application VBA 2008 sur un document word, mon export se compose de deux tableaux,j'ai réussit à crée un tableau mais lorsque j'écris le code pour créer un deuxième tableau, et que j'exporte, le deuxième tableau se met dans la première cellule de 1 tableau, est ce que vous pouvez m'aider.
Merci d'avance,

Voici la Sub pour écrire:
Sub EcriDansWord()

Dim WordObj As Object
On Error Resume Next
WordObj = CreateObject("Word.Application.8")
WordObj.Visible = True
WordObj.Documents.Add()

With WordObj.Selection
.Font.Size = 10 'taille police
.Font.Name = "Arial" 'police
.TypeText(Text:="bla blaa") 'pour écrire
.TypeParagraph() 'saut de ligne
.Font.Bold = True 'gras
.TypeText(Text:="bla blaa ")
.TypeParagraph() 'revenir à la ligne
.TypeText(Text:="bla blaa ")
.Font.Bold = False 'non gras

.Tables.Add(Range:=WordObj.Selection.Range, NumRows:=2, NumColumns:=3)
If .Style <> "Grille du tableau" Then
.Style = "Grille du tableau"
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = False
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = False
.ApplyStyleRowBands = True
.ApplyStyleColumnBands = False
End If

.TypeParagraph() 'saut de ligne
.Font.Bold = True 'gras
.TypeText(Text:="bla blaa")
.Font.Bold = False 'non gras

.Tables.Add(Range:=WordObj.Selection.Range, NumRows:=2, NumColumns:=3)
If .Style <> "Grille du tableau" Then
.Style = "Grille du tableau"
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = False
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = False
.ApplyStyleRowBands = True
.ApplyStyleColumnBands = False
End If

End With

Merci d'avance,

7 réponses

Bonjour tamtatouchte.

Je ne suis pas sûr de pouvoir vous aider, parce que j'ai Office 2010, et non pas Office 2008. Cependant, j'aimerais voir votre code d'exportation.

Cordialement.


Étant illettré, je signe d'une croix : ×

Merci Zermelo,

le code est au dessus, la commande principale que j'utilise pour créer les tableaux est:

.Tables.Add(Range:=WordObj.Selection.Range, NumRows:=2, NumColumns:=3)

dans le code je m'en sert 2 fois , et le deuxième tableau se crée dans la 1ère cellule de 1er tableau.

Cordialement,
J'ai besoin d'un éclaircissement. Vous écrivez :
mais lorsque j'écris le code pour créer un deuxième tableau, et que j'exporte,

ce qui semble vouloir dire que après avoir écrit le code construisant le deuxième tableau, vous effectuez une action indiquée par cette partie de votre texte
et que j'exporte

Ce dont j'ai besoin, c'est de savoir en quoi consiste exactement cette action. À moins que vous n'entendiez par là l'appel de la méthode
EcriDansWord

ce qui du point de vue de l'expression écrite me laisserais pantois. Mais j'en ai vu d'autres.

Cordialement quand même.

Étant illettré, je signe d'une croix : ×

Ce que j'entend par exporter c'est faire appel à la sub EcriDansWord() dans une sub button_click()
dans mon application, j’effectue certains calculs, et j'ai envie de les exporter dans des tableaux dans Word, et pour le moment je sais faire qu'un seul tableau, j'espère que j'ai bien expliquer cette fois-ci.

cordialement,
Bon.Il est maintenant acquit que exporter consiste à appeler la méthode EcriDansWord, ce qui n'était pas expressément dit dans votre demande. Cela étant, je souhaite maintenant que vous donniez le code complet de cette méthode.


Étant illettré, je signe d'une croix : ×

Bonjour,

le code est au dessus, la commande principale que j'utilise pour créer les tableaux est:

.Tables.Add(Range:=WordObj.Selection.Range, NumRows:=2, NumColumns:=3)


C'est parce que la Selection (le point d'insertion) est dans la première cellule du premier tableau. Il faut que tu amènes le point d'insertion à l'extérieur du tableau. Crée un tableau manuellement, et place le point d'insertion dans la première cellule.

Ensuite enregistre une macro dans Word pour sortir le point d'insertion du tableau et créer un second tableau. Ensuite tu pourras utiliser la macro enregistrée pour modifier ta macro originale.

Bonjour cmarcotte,

J'avais dèjà exploité cette piste mais j'avais pas reussis à solver le problème,car la constante wdline (celle que Word utilise pour ce déplacer) n'était pas reconnue, maintenant que tu ma relancé sur cette idée j'ai déclaré wdline comme constante de valeur 5 (ce que j'ai trouvé dans un autre site)et ça marche,

merci à toi cmarcotte,