Ajouter du text dans Nouveau doc Word a partir de VB

Signaler
Messages postés
116
Date d'inscription
mercredi 5 juin 2002
Statut
Membre
Dernière intervention
17 septembre 2008
-
Messages postés
44
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
23 mars 2006
-
Bonjour,

J'ai des probleme avec les tabeaux dans word avec le code suivant:

    Dim wrdApp As New Word.Application
    Dim wrdDoc As New Word.Document
    Set wrdDoc = wrdApp.Documents.Add
    wrdDoc.Content.LanguageID = wdBelgianFrench
    wrdDoc.Content.NoProofing = False
    ' Tableau
    wrdDoc.Tables.Add Range:=Selection.Range, numrows:=1, NumColumns:=4
    wrdDoc.Tables(1).Cell(Row:=1, Column:=1).Range.InsertBefore Text:="1"
    wrdDoc.Tables(1).Cell(Row:=1, Column:=2).Range.InsertBefore Text:="2"
    wrdDoc.Tables(1).Cell(Row:=1, Column:=3).Range.InsertBefore Text:="3"
    wrdDoc.Tables(1).Cell(Row:=1, Column:=4).Range.InsertBefore Text:="4"
    wrdDoc.Tables(1).Borders.Enable = True
    wrdDoc.Content.Text = "suite"
    wrdDoc.Tables.Add Range:=Selection.Range, numrows:=1, NumColumns:=1
    wrdDoc.Tables(1).Borders.Enable = True
    ' Sauvegarde Word
    wrdDoc.SaveAs FileName:="d:\temp.doc"
    wrdDoc.Close
    wrdApp.Quit
    Set wrdDoc = Nothing
    Set wrdApp = Nothing

Le premier tableau disparait, je fait des bétises ?

Merci
Olivier

6 réponses

Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
12
j'ai pas testé ton code, mais tu fais :
wrdDoc.Tables.Add Range:=Selection.Range, numrows:=1, NumColumns:=1

alors que Selection correspond a ton 1er tableau
il te faut faire un truc du style : (je connais pas la syntaxe exacte)

Wrd.words.last.select
selection.start= selection.start +selection.length

avant de créer le 2eme tableau

En esperant que ca puisse t'aider....
0
Messages postés
116
Date d'inscription
mercredi 5 juin 2002
Statut
Membre
Dernière intervention
17 septembre 2008

Merci pour ta réponse.

J'avaoue ne rien comprendre. J'au trouvé ici le code:
wrdDoc.Tables.Add Range:=Selection.Range, numrows:=1, NumColumns:=4

Mais biensûr je ne sais pas si c'est la bonne maniere. Dans le msdn il n'y a pas d'explication sur la creation d'un tableau.

Tu as peut-être a tu as un autre méthode.
Mon but est de faire un document word complet avec des tableaux, dons le contenu de ceux-ci, son remplit par des données qui vienent de VB.

Merci, De votre aide, si vous avez des exemples concret, je suis preneur.
0
Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
12
c'est la bonne maniere, enfin je crois
mais le probleme viens de selection.range; je m'explique

Dans word qd tu selection du texte et que tu tapes du texte, il replace la selection par le nouveau texte.
C'est exactement la meme chose avec tes tableau (enfin il me semble).
ton 1er tableau est selectionné et tu crée 1 2eme tableau => il remplace ton 1er tableau par le 2eme.

il faut donc que tu deplaces le curseur a la fin de ton document word avant la creation du 2eme tableau.
0
Messages postés
116
Date d'inscription
mercredi 5 juin 2002
Statut
Membre
Dernière intervention
17 septembre 2008

Tu as raison, j'ai ajouter:


Selection.MoveDown Unit:=wdLine, Count:=2
Selection.TypeParagraph
Selection.TypeText Text:="Suite"
wrdDoc.Tables.Add Range:=Selection.Range, numrows:=1, NumColumns:=1
wrdDoc.Tables(2).Borders.Enable = True


Comme cela fonctionne. Je commence a comprendre le principe

Merci
Olivier
0
Messages postés
44
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
23 mars 2006

bonjour
je crois quej'ai le meme problem
c'est que je sais pas comment proceder,mon prob c'est que j'ai deja un imprimée administratif e t je dois f un code qui m'aide a remplir ce formulaire a partir d'une interface vb6 sans avoir un decalage sur l'imprimée chaque information ds une place precise
j'ai pensé a utiliser word pour resoudre le prob mais j'arrive pas a trouver un code qui peux m'aider
ce que je veux c'est taper les info sur l'interface ,les enregistrer ds la base(facile), les visualiser sur un doc word puis les imprimer sur le formulaire par une imprimente matricielle (l'imprimer et deja tracer et chaque information doit etre afficher ds ca place consacré)
je suis un debutant en informatique et en vb6 ,j'accepte volantier toutes informations ou conseils
merci
0
Messages postés
44
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
23 mars 2006

bonjour
je crois quej'ai le meme problem
c'est que je sais pas comment proceder,mon prob c'est que j'ai deja un imprimée administratif e t je dois f un code qui m'aide a remplir ce formulaire a partir d'une interface vb6 sans avoir un decalage sur l'imprimée chaque information ds une place precise
j'ai pensé a utiliser word pour resoudre le prob mais j'arrive pas a trouver un code qui peux m'aider
ce que je veux c'est taper les info sur l'interface ,les enregistrer ds la base(facile), les visualiser sur un doc word puis les imprimer sur le formulaire par une imprimente matricielle (l'imprimer et deja tracer et chaque information doit etre afficher ds ca place consacré)
je suis un debutant en informatique et en vb6 ,j'accepte volantier toutes informations ou conseils
merci
0