Ecrire dans un fichier word

Medgueye Messages postés 62 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 20 juin 2009 - 2 janv. 2008 à 11:58
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 6 mai 2010 à 08:14
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

tibaww Messages postés 1 Date d'inscription mardi 4 mai 2010 Statut Membre Dernière intervention 5 mai 2010
5 mai 2010 à 01:26
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?
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
5 mai 2010 à 11:00
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!!
@+
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
6 mai 2010 à 08:14
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
Rejoignez-nous