Récupération fichier html et macro

Bonjour,

1re partie HTML → excel

Dans un premier temps j'aimerais récupérer dans excel le fichier html ci-joint dans sa totalité (idéalement dans la même feuille je pense que ça sera mieux pour la suite... la macro)

J'ai essayé via Power Query mais je ne sais pas si c'est la bonne solution pour y arriver et mes connaissances sont vraiment trop limités...

2e partie La macro (fichier excel → un autre fichier excel

J'aimerais faire une macro pour copier les données du fichier excel obtenu dans la 1re partie

dans le fichier GAPS gestion capital (feuille "Suivi") ci-joint

Vous pouvez voir (ci-joint "Exemple html bilan") les données à reprendre pour les intégrer dans le fichier final (GAPS gestion de capital)

J'espère avoir été assez clair dans le cas contraire n'hésitez pas à me poser des questions

Donc si quelqu'un peut me donner un coup de main ou un petit tuto pour apprendre comment faire c'est volontiers

D'avance merci

exemple html bilan ok

Est-ce quelqu'un peut au moins me guider svp ?

Est-ce que je dois utiliser Power Query ?

Bonjour,

Voici un outil permettant de récupérer tous les tableaux d'une page html.

Je l'ai appliqué à ton fichier et cela fonctionne très bien (voir le résultat joint)

La structure des données étant toujours la même, tu peux alors créer un onglet avec des formules utilisant INDIRECT pour créer ton tableau final.

Exemple de synthèse

Merci pour tes réponses et ton fichier ça m'aide déjà beaucoup vu mes pauvres connaissances...

Peux-tu m'expliquer le procédé dans les grandes lignes pour arriver au résultat du tableau de la feuille URL du dernier fichier stp?

Tu as un peu répondu dans les messages précédent pour la mise en forme du tableau final (avec la fonction indirect) mais si c'est possible j'aimerais savoir le début de la procédure stp

Pour le moment, je n'ai pas fait d'enchaînement entre l'extraction et la synthèse,

- l'extraction se fait par macro (supprime au préalable tous les autres onglets), elle crée autant d'onglets que de tables html du document

- pour la synthèse, mets le nom de l'onglet dans la première colonne, le reste suivra. Tu peux modifier le titre des colonnes à ta convenance, tu peux ajouter des infos (j'ai 2 lignes au-dessus du tableau la cellule où se trouvait l'info), tu peux aussi ajouter dans le tableau des fonctions permettant d'extraire une partie des informations récupérées à l'état brut.

Pour le moment, je n'ai pas fait d'enchaînement entre l'extraction et la synthèse,

- l'extraction se fait par macro (supprime au préalable tous les autres onglets), elle crée autant d'onglets que de tables html du document

- pour la synthèse, mets le nom de l'onglet dans la première colonne, le reste suivra. Tu peux modifier le titre des colonnes à ta convenance, tu peux ajouter des infos (j'ai 2 lignes au-dessus du tableau la cellule où se trouvait l'info), tu peux aussi ajouter dans le tableau des fonctions permettant d'extraire une partie des informations récupérées à l'état brut.

Ok mais je n'arrive pas à reproduire l'extraction avec un autre fichier html et donc dans l'idée de comprendre et d'apprendre j'aimerais savoir comment la macro va rechercher le fichier html

La macro va chercher le fichier html en ligne avec une adresse en http ....

Si ce n'est pas le cas, me le dire, dans ce cas il faudra le charger à partir du PC. Mais ce serait curieux car a priori un fichier html est un fichier présent sur un serveur que l'on va chercher avec un navigateur web et une adresse http

La macro va chercher le fichier html en ligne avec une adresse en http ....

Si ce n'est pas le cas, me le dire, dans ce cas il faudra le charger à partir du PC. Mais ce serait curieux car a priori un fichier html est un fichier présent sur un serveur que l'on va chercher avec un navigateur web et une adresse http

Non justement ce n'est pas un fichier présent sur un serveur, c'est un fichier que je reçois par mail donc il est effectivement à aller chercher sur mon pc

Voici une autre version, mais dans ce cas de figure, excel gère mal les accents (enfin, c'est aussi dû au mauvais codage de la page html)

... c'est aussi dû au mauvais codage de la page html...

Bonjour à tous,

@Steelson, en fait la page est codée très classiquement en UTF-8.

Je te propose ici une fonction pour décoder le texte, l'appel est simple du genre : Txt = Utf8_Decode(Txt)

(juste avant ta ligne obj.SetText Txt)

Function Utf8_Decode(ByVal Txt As String) As String
Dim ln As Long, S As String, i As Integer, j As Integer, k As Integer

    For ln = 1 To Len(Txt)
        i = Asc(Mid(Txt, ln, 1))
        If i > 127 Then
            If Not i And 32 Then
            j = Asc(Mid(Txt, ln + 1, 1))
            S = S & ChrW$(((31 And i) * 64 + (63 And j)))
            ln = ln + 1
        Else
            j = Asc(Mid(Txt, ln + 1, 1))
            k = Asc(Mid(Txt, ln + 2, 1))
            S = S & ChrW$(((i And 15) * 16 * 256) + ((j And 63) * 64) + (k And 63))
            ln = ln + 2
        End If
            Else
            S = S & Chr$(i)
        End If
    Next ln
    Utf8_Decode = S
End Function

(la fonction n'est pas de moi, mais je n'ai plus la source exacte, BodwadUK peut être?)

Pierre

Bonjour Pierre ... hé bien quand j'écrit une page html, je transforme tous les caractères > 127 soit par leur dénomination w3c (é pour é par exemple), soit par les numéro ... cela n'aurait pas quand même évité mon problème de transcription mais la page aurait été universelle !

Voici une autre version, mais dans ce cas de figure, excel gère mal les accents (enfin, c'est aussi dû au mauvais codage de la page html)

oui à part les accents ça fonctionne très bien. Merci

Complète avec la proposition de Pierre ... et dis nous si c'est ok !

Complète avec la proposition de Pierre ... et dis nous si c'est ok !

Ok juste pour être sur d'avoir bien compris je dois mettre tout ça

Function Utf8_Decode(ByVal Txt As String) As String Dim ln As Long, S As String, i As Integer, j As Integer, k As Integer For ln = 1 To Len(Txt) i = Asc(Mid(Txt, ln, 1)) If i > 127 Then If Not i And 32 Then j = Asc(Mid(Txt, ln + 1, 1)) S = S & ChrW$(((31 And i) * 64 + (63 And j))) ln = ln + 1 Else j = Asc(Mid(Txt, ln + 1, 1)) k = Asc(Mid(Txt, ln + 2, 1)) S = S & ChrW$(((i And 15) * 16 * 256) + ((j And 63) * 64) + (k And 63)) ln = ln + 2 End If Else S = S & Chr$(i) End If Next ln Utf8_Decode = S End Function

Juste avant obj.SetText dans la macro d'origine

C'est ça ?

Voici

Voici

Juste j'ai oublié de signaler il y a encore un petit message erreur d'exécution '9' déjà présent dans le document précédent il me semble. Mais je pense que c'est sans conséquence très importante...

A part ça grand merci ça fonctionne très bien maintenant au niveau des accents aussi

Si cela se reproduit, fais une copie d'écran, essaie de piéger la ligne du code concernée.

Sinon

Si cela se reproduit, fais une copie d'écran, essaie de piéger la ligne du code concernée.

Sinon

Ok encore merci tu m'as bien aidé à avancer dans ce que je voulais faire je vais essayer de finir le travail par moi-même...

Rechercher des sujets similaires à "recuperation fichier html macro"