Mise en page en Vb

djamat Messages postés 33 Statut Membre -  
djamat Messages postés 33 Statut Membre -
Bonjour à tous,

Comme à mon habitude, j'ai du mal à gérer la mise en page de mon fichier Excel via une macro Vba.

Je récupère bien mes données (via doc word) que je veux faire afficher mais je n'arrive pas à les contrôler (cad les utiliser à bon escient).

 With Sheets("Feuil1")
      'On nettoie les cellules de la feuille active du fichier
      .Cells.Clear
      'chemin fichier word en entrée choisis par l'user
      fichier = UserFormMacro.TxtOrigine
      
      'creation session Word
      Set WordApp = CreateObject("Word.Application")
      'pour que word reste masqué pendant l'opération
      WordApp.Visible = False
      'ouverture du fichier Word
      Set WordDoc = WordApp.Documents.Open(fichier)
      'on charge le texte dans la variable Doc
      Doc = WordDoc.Range
      'initialisation pointeur
      Deb = 1

      'chercher les textes balisés
      Do
         Deb = InStr(Deb, Doc, "[") + 1
         Fin = InStr(Deb, Doc, "]")
         If Deb = 1 Or Fin = 0 Then Exit Do
            Bal = Mid(Doc, Deb, Fin - Deb)
            Deb = Fin + 1
            Fin = InStr(Deb, Doc, "& Bal & "")
            If Fin > 0 Then
               Txt = Mid(Doc, Deb, Fin - Deb)



           End If
         
      Loop


la variable txt arrive à recuperer tous les champs voulu

Ci dessous 2 lien:
un .doc pour test
<a href="https://www.casimages.com/f.php?f=130523100336814512.doc" target="_blank">Lien vers mon fichier</a>

un .xls: pour le rendu final
<a href="https://www.casimages.com/f.php?f=130523100425663265.xls" target="_blank">Lien vers mon fichier</a>

Merci pour votre aide

POur la ligne: Fin = InStr(Deb, Doc, "& Bal & "") comprendre "{/" & Bal & "}" avec des [] au lieu de {}

3 réponses

  1. djamat Messages postés 33 Statut Membre 28
     
    il me reste plu que ceci a faire et je n'arrive pas à bien fusionner les cellules, please help
    0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Essaies ce code (en espérant que tu ne changes pas à nouveau d'avis !!!) :

    Sub test()
       
    ' Ajouter la référence à Microsoft Word XX.X Object Library
    
    Dim WordApp As New Word.Application
    Dim WordDoc As Word.Document
    Dim wsh As Worksheet
    Dim C As Range
    Dim Doc As String, Txt As String, Txt2 As String, Bal As String
    Dim Deb As Long, Fin As Long
    Const BalA As String = "title"
       
    Set wsh = Worksheets("Feuil4")
    With wsh
      .Cells.Clear
      'chemin fichier word en entrée choisis par l'user
      fichier = ThisWorkbook.Path & "\test.doc"
      'lire le fichier Word
      Set WordDoc = WordApp.Documents.Open(fichier)
      Doc = WordDoc.Range
      WordDoc.Close
      WordApp.Quit
      Set WordDoc = Nothing
      Set WordApp = Nothing
      'destination
      Set C = .Range("A2")
      'initialisation pointeur
      Deb = 1
      'chercher les textes balisés
      Do
        Deb = InStr(Deb, Doc, "[") + 1
        Fin = InStr(Deb, Doc, "]")
        If Deb = 1 Or Fin = 0 Then Exit Do
        Bal = Mid(Doc, Deb, Fin - Deb)
        Deb = Fin + 1
        Fin = InStr(Deb, Doc, "& Bal & "")
        If Fin > 0 Then
          Txt = Mid(Doc, Deb, Fin - Deb)
          'entete de colonne cad bal
          If Bal = BalA Then
            C.Value = Txt
            .Columns.AutoFit
            Set C = C.Offset(1)
            Txt2 = ""
          Else
            Txt2 = IIf(Txt2 = "", Txt, Txt2 & vbLf & Txt)
            C.Offset(-1, 1).Value = Txt2
            .Columns.AutoFit
          End If
        End If
      Loop
      .Rows.AutoFit
    End With
      
    End Sub
    
    0
  3. djamat Messages postés 33 Statut Membre 28
     
    Merci Patrice cela focntionne correctement.

    Et oui je changerai plus d'avis, promis !!
    Si tu revois un de mes posts avec ce genre de probleme, tape moi !! :ninja:

    Merci encore
    0