Ecrire dans un fichier word

Signaler
Messages postés
62
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
20 juin 2009
-
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
-
bonjour à tous
j'ai une fonction qui permet d'inprimer le contenu d'un MSFlexGrid dans un fichier word
voila le code de mo, bouton imprimer:

Private Sub imprim_Click()
    'Early object binding
    Dim oWord As Word.Application
    'Dim oDoc As Word.Document
    Dim oRange As Word.Range
    'Uncomment below for late object binding
    'Dim oWord As Object
    'Dim oDoc As Object
    'Dim oRange As Object
    Dim row As Integer
    Dim col As Integer
    Dim i As Integer
    Dim n As Integer
    Dim sTemp As String
    Dim arr() As String
     
    ReDim arr(liste.Rows - 1, liste.Cols - 1)
     
    'Créer une instance de word
   Set oWord = CreateObject("Word.Application")
    oWord.Documents.Open App.Path & "\document\devis.doc"
    oWord.ShowMe
   
    'rendre le document word visible
    oWord.Visible = True
   
    'Ouivrir un nouveau document
    'Set oDoc = oWord.Documents.Add
    oWord.Selection.TypeText "Date :" + date_devis.Text
    oWord.Selection.TypeParagraph
    oWord.Selection.TypeText (" MIT Sarl Nouakchott,Mauritanie ")
    oWord.Selection.TypeParagraph
    oWord.Selection.TypeText "DEVIS N°: " + num_devis
    oWord.Selection.TypeParagraph
    oWord.Selection.TypeText "CLIENT: " + client.Text
    oWord.Selection.TypeParagraph
    oWord.Selection.TypeParagraph
    oWord.Selection.TypeParagraph
   
    For row = 0 To liste.Rows - 1
        n = 0
        For col = 0 To liste.Cols - 1
            arr(i, n) = liste.TextMatrix(row, col)
            n = n + 1
        Next
        i = i + 1
    Next
   
    'ENregistrer sur un tableau
    For i = LBound(arr, 1) To UBound(arr, 1)
        For n = LBound(arr, 2) To UBound(arr, 2)
            sTemp = sTemp & arr(i, n)
            If n = UBound(arr, 2) Then
               sTemp = sTemp & vbCrLf
            Else
               sTemp = sTemp & vbTab
            End If
        Next
    Next
   
    'Avoir l'emplacelent sur le document
    Set oRange = oWord.Selection.Bookmarks("\EndOfDoc").Range

   
    oRange.Text = sTemp
   
    'Convertire le format et le texte
    oRange.ConvertToTable 'vbTab, Format:=wdTableFormatColorful2
   
    Set oRange = Nothing
   
    oWord.Selection.TypeParagraph
    oWord.Selection.TypeParagraph
    oWord.Selection.TypeParagraph

    oWord.Selection.TypeText "Bonjour le monde"
   
End Sub
le probleme est que le texte Bonjour le monde ne sera pas ecrit en bas de mon tableau mais plutot dans la 1ere case du tableau en haut
Est ce qlq' un a une idée de ce probleme?

3 réponses

Messages postés
1
Date d'inscription
mardi 4 mai 2010
Statut
Membre
Dernière intervention
5 mai 2010

j'ai le même problème que toi, as tu réussis à placer le curseur à la fin de ton fichier word?
Peux tu m'aider?
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
128
Bonjour,
Le problème se situe au niveau de la sélection du texte. J'ai essayé ce code dans Word en ayant sélectionné la fin de la dernière ligne
manuellement et cela marche:

Selection.TypeParagraph
Selection.TypeBackspace
Selection.TypeParagraph
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Selection.TypeText Text:="bonjour"

Donc essayer cela:

oWord.Selection.TypeParagraph
oWord.Selection.TypeParagraph
oWord.Selection.TypeParagraph
oWord.Selection.TypeBackspace
oWord.Selection.TypeParagraph
oWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
oWord.Selection.TypeText "Bonjour le monde"

mais je ne garanti pas que cela fonctionne vu que la sélection n'est pas manuelle!!
@+
Messages postés
7648
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 janvier 2022
128
Sélectionner et écrire dans le bas de la page du document depuis excel:

Sub selection()

Dim oWord As Word.Application
'Créer une instance de word
Set oWord = CreateObject("Word.Application")
oWord.Documents.Open "chemin du fichier.doc"
oWord.ShowMe
'rendre le document word visible
oWord.Visible = True
'sélection
oWord.Selection.EndOf Unit:=wdStory, Extend:=wdMove 'sélectionner le bas de page
oWord.ActiveWindow.ActivePane.VerticalPercentScrolled = 9
oWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
oWord.Selection.TypeText "Bonjour le monde"

End Sub

@+ Le Pivert