Mise en page en Vb

Fermé
djamat Messages postés 31 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 23 mai 2013 - Modifié par djamat le 23/05/2013 à 10:11
djamat Messages postés 31 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 23 mai 2013 - 23 mai 2013 à 16:15
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 {}

A voir également:

3 réponses

djamat Messages postés 31 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 23 mai 2013 28
23 mai 2013 à 12:01
il me reste plu que ceci a faire et je n'arrive pas à bien fusionner les cellules, please help
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
23 mai 2013 à 15:35
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
djamat Messages postés 31 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 23 mai 2013 28
23 mai 2013 à 16:15
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