Mise en page en Vb
djamat
Messages postés
31
Date d'inscription
Statut
Membre
Dernière intervention
-
djamat Messages postés 31 Date d'inscription Statut Membre Dernière intervention -
djamat Messages postés 31 Date d'inscription Statut Membre Dernière intervention -
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).
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 {}
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:
- Mise en page en Vb
- Mise en forme conditionnelle excel - Guide
- Supprimer page word - Guide
- Mettre google en page d'accueil - Guide
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
3 réponses
Bonjour,
Essaies ce code (en espérant que tu ne changes pas à nouveau d'avis !!!) :
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