Enregistrement d'une page WEB dans 1 fichier HTML (text) [Résolu]

Messages postés
5
Date d'inscription
mardi 2 octobre 2007
Dernière intervention
18 avril 2012
- 13 avril 2012 à 01:14 - Dernière réponse :
Messages postés
5
Date d'inscription
mardi 2 octobre 2007
Dernière intervention
18 avril 2012
- 18 avril 2012 à 02:18
Bonjour,
Je ne connais pas tres bien le monde HTML.
Jusqu'à maintenant mon programme VBA, fonctionnait mais depuis peu le site qui m'interesse a completement modifier sa page WEB.

Il me semble que la partie de mon programme qui ne fonctionne est due au fait que le site utilise une page à onglet ???

En fait j'ai besoin de sauvegarder dans un fichier texte une partie de la page WEB, afin de la traiter par la suite.

Voici le code que j'utilise:
On Error GoTo GestError_IE

' CAS où l'on veut telecharger une page html

'Créer un objet internet Explorer
startIE:
Set IE = CreateObject("InternetExplorer.Application")

With IE
.Visible = bVisible
.navigate sUrl
Do While .Busy: DoEvents: Loop

If (bVisible) Then .TheaterMode = True
Do While .ReadyState <> READYSTATE_COMPLETE: DoEvents: Loop
End With


' Sauvegarde de l'URL dans 1 fichier
Set fso = CreateObject("Scripting.FileSystemObject")
Set fil = fso.CreateTextFile(sFileName)

fil.write (IE.document.body.innerHTML)
fil.Close

Set fil = Nothing
Set fso = Nothing

IE.Quit
Set IE = Nothing
Exit Sub

GestError_IE:
Application.Wait (Now + TimeValue("0:00:01"))

DoEvents
GoTo startIE
End Sub
' ====================

En fait c'est l'instruction "fil.write (IE.document.body.innerHTML)
" qui ne fonctionne pas.

Y aurait il quelqu'un parmi vous qui pourrait me venir en aide ???

J'avoue j'ai beau chercher je ne vois pas ce que je peux faire .


[b]Merci
A+
fme31/b
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
428
Date d'inscription
samedi 11 juillet 2009
Dernière intervention
28 octobre 2016
16 avril 2012 à 00:42
3
Merci
Je suis développeur Vbdos Vb5 Vb6 Vbs Vb.net mais vba , jamais touché

Mais tu peux essayer ce code :

Declare Function URLDownloadToFile Lib "urlmon" Alias _
    "URLDownloadToFileA" (ByVal pCaller As Long, _
    ByVal szURL As String, _
    ByVal szFileName As String, _
    ByVal dwReserved As Long, _
    ByVal lpfnCB As Long) As Long

Function DownloadFile(URL As String, LocalFilename As String) As Boolean
    Dim lngRetVal      As Long
    lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
    If lngRetVal 0 Then DownloadFile True
End Function

Sub downFLash()
    Dim sURL    As String
    Dim LocalFilename   As String
    Dim filename As String
   
    Const UNC = "C:" ' dossier dans le quelle sera enregistré le fichier
   
    filename = "page.html"
    sURL = "http://tonsite/" & filename  'garde bien le dernier slash " / "
    LocalFilename = UNC & filename

    Debug.Print DownloadFile(sURL, LocalFilename)
   
End Sub


A essayer :)

Microsf01
Copyright©Microsf01
Favier Sébastien 01
http://microsf01.fr.nf/

Merci Cpcdos 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de Cpcdos
Meilleure réponse
Messages postés
14302
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
21 novembre 2018
17 avril 2012 à 19:23
3
Merci
Bonjour,

fil.write (IE.document.body.innerHTML)
Peut être remplacé par :
Print #1,IE.document.body.innerHTML
Sans souci.

"Mais ça ne marche pas sur les pages HTML, nouveau format"
Tu parles des pages avec AJAX ?
Si oui, c'est normal la page est modifiée en dynamique, il y a donc des éléments externes à récupérer aussi.
N'ayant jamais eu à faire cela, je ne pourrais pas te dire comment faire.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de NHenry
Messages postés
14302
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
21 novembre 2018
13 avril 2012 à 12:22
0
Merci
Bonjour,

J'ai déplacé le sujet, pour tes prochains messages, note la catégorie pour le VBA.
Sinon, quand tu postes un code, lis le point 2 de ma signature.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Commenter la réponse de NHenry
Messages postés
5
Date d'inscription
mardi 2 octobre 2007
Dernière intervention
18 avril 2012
14 avril 2012 à 00:58
0
Merci
Bonjour NHenry,

Désolé,

PS: Si quelqu'un pouvait me venir en aide pour le sujet VBA, ce serait superbe.

Merci par avance,
FME31
Commenter la réponse de fme31
Messages postés
14302
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
21 novembre 2018
14 avril 2012 à 02:04
0
Merci
Bonjour,

Déjà remets en forme ton code, ça attirera plus de monde.
Ensuite, pourquoi utiliser FSO alors que VB (6 et A) a l’instruction Open/Print/Close ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Commenter la réponse de NHenry
Messages postés
5
Date d'inscription
mardi 2 octobre 2007
Dernière intervention
18 avril 2012
16 avril 2012 à 18:36
0
Merci
Bonjour à tous,

En premier lieu merci à NHenry et à Cpcdos / Microsf01.

Ainsi qu'aux futurs personnes qui vont m'aider :)


- A noter que j'étais en vacances quelques jours, je n'ai donc pas répondu de suite.

- Pour répondre à nNHenry, j'utilise FSO car il me permet d'enregistrer tout le fichier en 1 seul passe (il me semble qu'une boucle "for" est necessaire pour "Print" ???).
A noter que c'est uniquement depuis que le site utilise des pages HTML avec plusieurs onglets que mon fso.write ne fonctionne plus.

- Pour répondre à Cpcdos / Microsf01
En fait j'utilise aussi cette fonction, pour télécharger des fichiers comme des images... par exemple (cette partie de mon code fonctionne toujours).
Mon souci c'est de télécharger la page dynamic (celle qui est affichée sur l'écran).
=> Est-ce qu'il y a quelque chose qui m'aurait échappé, et que cette fonction peut enregistrer au format texte la page qui est affichée?


Pour info, j'ai essayer de faire tourner mon programme sur un autre site avec page HTML normal ça marche toujours .

Mais ça ne marche pas sur les pages HTML, nouveau format.
Je ne comprends pas car il me semble que l'HTML c'est du texte, n'est pas ?

En tout cas merci pour votre aide.
J'espere qu'on va arriver à trouver la solution.

[b]A+
fme31/b
Commenter la réponse de fme31
Messages postés
5
Date d'inscription
mardi 2 octobre 2007
Dernière intervention
18 avril 2012
18 avril 2012 à 02:13
0
Merci
Bonjour à Tous,

Je viens d'essayer les 2 méthodes, et bien j'y crois pas mes yoeux: Vos 2 solutions fonctionnent (celle de NHenry et celle de Cpcdos) .

Je ne comprends toujours pas la raison pour laquelle mon code ne marche plus avec le nouveau format de page HTML .

Mais tant pis, au moins ça refonctionne avec votre méthode.


Je vais donc me permettre de crier fort ces quelques mots: UN GRAND MERCI et BRAVO à NHenry et Cpcdos .


J'en profite aussi pour remercier ce site, car celà fait trés longtemps que j'y suis inscrit et ce site est une vraie bibliotheque.

Maintenant je viens de voir qu'en plus le forum est frequenté par des personnes tres competentes et sympatiques.


A tres bientôt et encore merci

A+
fme31
Commenter la réponse de fme31
Messages postés
5
Date d'inscription
mardi 2 octobre 2007
Dernière intervention
18 avril 2012
18 avril 2012 à 02:18
0
Merci
Re-Bonjour

Comme les 2 solutions sont bonnes, et il me semble que je ne peux accepter qu'une solution.

Je vais faire un tir au sort (désolé).

Par contre si je vois ensuite qu'il est possible d'accepter les 2 solutions, je le ferai (bien sure)

MErci
A+
fme31
Commenter la réponse de fme31

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.