autant pour moi c'est un html mais avec un mapping en parametre
bref je supose que tu veux en recuperer les tableau c'est ca ?
Version imprimable
autant pour moi c'est un html mais avec un mapping en parametre
bref je supose que tu veux en recuperer les tableau c'est ca ?
re
et ben moi je te fait le tout en un
ouvre un fichier vierge et dans un module stard met ceci
si tu ne veux pas garder le tableau dans excel decommente la ligne 35Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 Sub test() Dim laChaine As String, x, fichier As String, wordapp, fileToOpen fileToOpen = Application.GetOpenFilename("Text Files (*.mm), *.mm"): If fileToOpen = False Then Exit Sub ' lecture du fichier ' recupe le texte complet avec binary acces read x = FreeFile Open fileToOpen For Binary Access Read As #x: laChaine = String(LOF(x), " "): Get #x, , laChaine: Close #x With CreateObject("htmlfile") .body.innerhtml = laChaine 'integration du code complet avec le mapping dans le body du doc html virtuel Set mestables = .getelementsbytagname("TABLE") 'collection des tableau du html For i = 0 To mestables.Length - 1: code = code & mestables(i).outerhtml: Next 'regroupement du code html des tables en un dans la variable coder '.body.innerhtml = code r = .parentwindow.clipboarddata.setdata("text", code) 'integration du code innertext dans le clipboard 'Debug.Print .parentwindow.clipboarddata.GetData("text")'verifie si le code est bon End With Application.DisplayAlerts = False Set sh = Sheets.Add(After:=Sheets(Sheets.Count)) With sh: .Name = "shTemp" & Sheets.Count: .Cells(1, 1).Select: .Paste: .UsedRange.Copy: End With Set wordapp = CreateObject("word.Application") 'créée un instance de word wordapp.Visible = True ' word est visible Set OdoC = wordapp.Documents.Add ' on crée un new document dans le word que l'on vien de créer 'OU!!OPTION 2 ci dessous 'wordapp.Documents.Open "chemindemondocument.doc" ' on ouvre un fichier dans le l'intance precedement créé With wordapp '.Activate .ActiveDocument.ActiveWindow.Selection.Paste End With chemin = Environ("userprofile") & "\DeskTop\monfichier.doc" Response = MsgBox("voulez vous enrgistrer sur le bureau le fichier word " & vbCrLf & "Si non cliquez sur non pour afficher le fichier word a l'ecran", vbYesNo, "enregistrement") If Response = vbYes Then ' L'utilisateur a choisi Oui. ' Effectue une action. OdoC.SaveAs chemin Else wordapp.Activate End If 'sh.Delete End Sub
resultat avec ton mm que tu m'a donné en exemple dans excel et !!! word
Pièce jointe 368620
cé'bo'la vie non?
oui c'est fesable mais je ne vais pas tout te faire quand meme il faut que tu transpire un peu non?
cherche les tutoriel sur le xml dans developpez.com pour VBA VB c'est pareil et pose moi des question si tu comprends pas quelque chose
j'ai un peu modifié la chose pour que tes table soit separé correctement dans excel et word
Pièce jointe 368631
noublie pas de debloquer la ligne 'sh.delete a la fin si tu veux pas garder le sheets temporaireCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 Sub test() Dim laChaine As String, x, fichier As String, wordapp, fileToOpen fileToOpen = Application.GetOpenFilename("Text Files (*.mm), *.mm"): If fileToOpen = False Then Exit Sub ' lecture du fichier ' recupe le texte complet avec binary acces read x = FreeFile Open fileToOpen For Binary Access Read As #x: laChaine = String(LOF(x), " "): Get #x, , laChaine: Close #x With CreateObject("htmlfile") .body.innerhtml = laChaine 'integration du code complet avec le mapping dans le body du doc html virtuel Set mestables = .getelementsbytagname("TABLE") 'collection des tableau du html For i = 0 To mestables.Length - 1: code = code & vbCrLf & "<a> table" & i + 1 & "</a>" & mestables(i).outerhtml: Next 'regroupement du code html des tables en un dans la variable coder r = .parentwindow.clipboarddata.setdata("text", "<table>" & code & "</table>") 'integration du code innertext dans le clipboard End With Application.DisplayAlerts = False Set sh = Sheets.Add(After:=Sheets(Sheets.Count)) With sh: .Name = "shTemp" & Sheets.Count: .Cells(1, 1).Select: .Paste: .UsedRange.Copy: End With Set wordapp = CreateObject("word.Application") 'créée un instance de word wordapp.Visible = True ' word est visible Set OdoC = wordapp.Documents.Add ' on crée un new document dans le word que l'on vien de créer 'OU!!OPTION 2 ci dessous 'wordapp.Documents.Open "chemindemondocument.doc" ' on ouvre un fichier dans le l'intance precedement créé With wordapp '.Activate .ActiveDocument.ActiveWindow.Selection.Paste End With chemin = Environ("userprofile") & "\DeskTop\monfichier.doc" Response = MsgBox("voulez vous enrgistrer sur le bureau le fichier word " & vbCrLf & "Si non cliquez sur non pour afficher le fichier word a l'ecran", vbYesNo, "enregistrement") If Response = vbYes Then ' L'utilisateur a choisi Oui. ' Effectue une action. OdoC.SaveAs chemin Else wordapp.Activate End If 'sh.Delete End Sub
bonne continuation ;)
Franchement je vous remercie Patrick, vous m'avez bien aider,
Juste je veux savoir si c'est possible ou non, je vais voir les pistes que vous m'avez proposer et cette publication va aider beaucoup des personnes parce qu’il y'a plein des codes et propositions
avec ces deux liens tu devrais deja commencer a comprendre
https://arkham46.developpez.com/arti...=page_4#L5-A-2
https://baptiste-wicht.developpez.co.../xpath/#L5.2.1
sachant qu'il faut avant tout separer le mapping(XML) de la page html en extention".mm"
pour cela tu a deja l'exemple dans ce que je t'ai donner
tu split tout le code par le 1er "<html>)
c'est a dire
il te reste plus qu'a intégrer ce code dans un createobject("xmldocument") puis l'analiser avec les methode expliquer dans le lien 1 pour vbscript mais c'est pareil a deux bricoles pret pour vbaCode:codeXML = split(laChaine,"<html>")(0)
voili voilou;)
Mercii Patrick c'est intéressant !!!
je viens de tester ton mapping dans un xml certaines balise ne sont pas fermer pour le loader dans un xmldoc ca va pas etre possible trop de balises non fermée
est tu sur de ne pas l'avoir corrompu ce mm que tu m'a donné ?
si tu l'a eu comme ca alors le mapping de la page html est en erreur
c'est pour ca que j'ai pas les couleur parce que vu le code xml du mapping je devrait avoir de la couleur rendu dans les word et excel
si tu les a comme ca
il ne te reste plus a utiliser simplement les fonction natives de vba split like instr, mid etc....
pas triste ton histoire
normalement pour charger un doc xml virtuel avec le string c'est
bon courage ;)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub test() Dim laChaine As String, x, fichier As String, wordapp, fileToOpen fileToOpen = Application.GetOpenFilename("Text Files (*.mm), *.mm"): If fileToOpen = False Then Exit Sub ' lecture du fichier ' recupe le texte complet avec binary acces read x = FreeFile Open fileToOpen For Binary Access Read As #x: laChaine = String(LOF(x), " "): Get #x, , laChaine: Close #x xxml = Trim(Split(laChaine, "<html>")(0)) Debug.Print xxml Set docxml = CreateObject("MSXML2.DOMDocument") If Not docxml.LoadXML(xxml) Then Err.Raise docxml.parseError.ErrorCode, , docxml.parseError.reason Debug.Print "docxml chargé" End Sub
Mon code mm est comme ça j'ai rien ajouté ou supprimé !
oui même moi j'ai remarqué ça donc je continue à lire les deux liens que vous m'avez envoyé
re
alors laisse tomber le docxml la map est trop corompu
et fait le en string (split,mid,instr;cstr ,etc.......
un exemple je recupere les couleur html que les cellules devraent avoir
c'est pas triste le split hein!!:mouarf:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Sub test() Dim laChaine As String, x, fichier As String, wordapp, fileToOpen fileToOpen = Application.GetOpenFilename("Text Files (*.mm), *.mm"): If fileToOpen = False Then Exit Sub ' lecture du fichier ' recupe le texte complet avec binary acces read x = FreeFile Open fileToOpen For Binary Access Read As #x: laChaine = String(LOF(x), " "): Get #x, , laChaine: Close #x xxml = Trim(Split(laChaine, "<html>")(0)) 'exemple mes = "mes couleur html de cellules sont" & vbCrLf coul = Split(xxml, "<stylenode LOCALIZED_TEXT") For i = 0 To UBound(coul) If coul(i) Like "*COLOR=*" Then mes = mes & Split(Split(coul(i), "COLOR=""")(1), Chr(34))(0) & vbCrLf Next MsgBox mes End Sub
Bonjour Patrick,
je viens de recommencer sur mon code mais je trouve que ce cette conversion qu niveau des tableaux avoir un petit souci
( il convertir le retour de chariot dans le tableau html comme une nouvelle cellule )
j'ai fait une interprétation et j'ai trouvé que le codepermet de faire un saut de ligne en html et pour l'excel permet de faire une nouvelle cellule.Code:
1
2
Donc il faut faire une boucle ??
Salut Patrick !
Troisième discussion pour la même demande même si ici évolution vers Word.
Du reste une demande Word dans Excel cela ne te gêne pas ?! Sans compter le statut étudiant …
Je t'invite à regarder sa précédente discussion !
Ici dans un de tes posts tu as évoqué une des deux solutions fonctionnelles que j'avais préparées sous Excel,
elles nécessitent juste 10 à 15 lignes de code …
___________________________________________________________________________________________________________Heureux l'étudiant qui, comme la rivière, suit son cours sans quitter son lit …
@Dali29
tu deconne vraiment , je viens de m'en rendre compte
2 post pour un sujet identique c'est pas serieux
je n'etais pas intervenu dans cette autre discussion car les explications de la demande etaient trop alambiquées pour au final une chose tres simple
tu merite bien un panpan :sm::fessee:..:rouleau:
Bonjour Patrick,
Tout d'abords ma question c'était comment " Copier une page html et la coller dans le Word" c'est tout
si vous revenez sur la discussion , vous m'avez demandé de voir mon code.
et je vous remercie infiniment de m'avoir donné les solutions nécessaires et efficaces ( j'ai déjà fait des essayes et j'ai pas demandé des trucs de A..Z y'a de boulot qui a déjà fait mais avec une autre méthode).
Bonjour Marc-L,
premièrement Je suis nouveau dans ce site,
deuxièmement j'ai posté une autre demande " Copier une page html et la coller dans le Word" je pense que c'est clair (vous pouvez voir les commentaires dès le début)
troisièmement Patrick était à l'écoute et disponible
quatrièmement je vais revenir sur mon ancien post quand je finirai le code pour que les autres personnes puissent bénéficier à résoudre des problèmes comme mon exemple.
Et merci pour vos compréhensions