Mise en page en Vb
djamat
Messages postés
33
Statut
Membre
-
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).
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
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mettre google en page d'accueil - Guide
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