Importation en volume de données HTML vers un fichier EXCEL en VBA [Résolu]

Messages postés
10
Date d'inscription
lundi 24 avril 2006
Dernière intervention
22 octobre 2012
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 22 oct. 2012 à 10:49
Bonjour,

J'ai un répertoire parent C:\PARENT avec 100 répertoires enfants à l'intérieur nommés de la manière suivante : 001, 002, 003, ... , 100. Il y a donc C:\PARENT\001, C:\PARENT\002 etc.

Dans chaque répertoire, j'ai un fichier HTML dont le nom correspond à une personne physique, par exemple : MONSIEURUNTEL.html

Dans chaque fichier, j'ai des informations, codées en HTML, dont la partie qui m'intéresse se présente exactement comme ceci :






NOM DE LA SOCIETE

* Qualité : TYPE DE SOCIETE
* Adresse :
100 RUE DE LA PAIX

75008 PARIS
* Téléphone : 01 22 33 44 55 * Fax : <dd>01 22 33 44 55 * Email : <dd>contact@societe.com * Responsabilité : <dd>

<li>
Gérant : MR PIERRE UNTEL
</li>










Il me faudrait automatiser la création d'un fichier EXCEL à partir de ces 100 fiches HTML, avec les colonnes suivantes :

SOCIETE, TYPE SOCIETE, NOM, PRENOM, ADRESSE, CP, VILLE, TEL, FAX et EMAIL.

Comment faire selon vous ? Je précise que je débute en code VBA et que je souhaiterais procéder avec une ou plusieurs macros, exploitant pourquoi pas les expressions régulières ; c'est du moins ce que j'ai lu...

@+ et merci de vos idées !
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
3
Merci
Comment ? Que dis-tu ?
Peu importe le classeur. La seule chose qui compte est
- la définition et l'ouverture des deux classeurs (origine et destination)
- le lancement effectif de ta procédure (t'en es-tu au moins assuré ? ... une simple msgbox te permet de le vérifier ...)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
Bonjour,
1) Excel dispose d'un enregistreur de macro.
2) Excel est capable d'ouvrir un fichier HTML
et donc :
3) depuis Excel :
--- tu lances l'enregistreur de macro
--- tu ouvres ton HTML
--- tu arrêtes l'enregistreur

--- tu vas lire la macro écrite ! ===>>>

Workbooks.Open Filename:="X:\...\..html"

Dur dur ? Tu l'as, ton code
Tu l'exécutes ===>>
Ce n'est ensuite qu'une éventuelle question d'arrangement de la présentation souhaitée, non ?
Si tu as plusieurs fichiers : le faire sur chaque fichier de ta liste.
Maintenant : si ce que tu ne sais pas faire non plus, c'est le recensement des fichiers à traiter, c'est une autre question et donc une autre discussion.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
10
Date d'inscription
lundi 24 avril 2006
Dernière intervention
22 octobre 2012
0
Merci
Merci !

Effectivement, lorsque j'ouvre l'un ou l'autre des fichiers HTML avec Excel, la page s'ouvre et miracle, les informations souhaitées reviennent toujours en même position :

CELLULE B167 : PRENOM NOM
CELLULE B172 : ADRESSE
CELLULE B173 : CP VILLE
CELLULE B175 : TEL
CELLULE B177 : FAX
CELLULE B179 : EMAIL

Il faudrait que je parvienne, sachant que tous les fichiers HTML sont dans le répertoire C:\PARENT, à automatiser l'extraction de ce bloc de lignes vers un autre document Excel C:\CLIENTS.XLS.

Les données seront classées par colonnes.

J'ai 100 fiches pour l'instant mais je risque d'en avoir plusieurs milliers dans les semaines à venir, donc impossible pour moi de faire ce boulot manuellement...
Commenter la réponse de admicom
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
automatiser l'extraction de ce bloc de lignes vers un autre document Excel C:\CLIENTS.XLS

Pareil ! Utilise donc l'enregistreur de macro et lis le code obtenu !!!

Rien ne t'interdit par ailleurs d'ouvrir ton aide VBA sur le mot Copy (Range.Copy) et de lire. Cette méthode comprend un argument destination.
Rappel des bases : On pointe vers (se réfère à) une plage P d'une feuille F d'un classeur C ouvert
en spécifiant les objets Excel C,F et P
Reviens avec ton code d'essai si encore en difficulté.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
10
Date d'inscription
lundi 24 avril 2006
Dernière intervention
22 octobre 2012
0
Merci
Oui mais comment passer dans mon code VBA le fait que la macro doit d'appliquer aux 1000 pages HTML et non à une seule ?
Commenter la réponse de admicom
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
C'est exactement ce que je te disais là :
Maintenant : si ce que tu ne sais pas faire non plus, c'est le recensement des fichiers à traiter, c'est une autre question et donc une autre discussion.

Non ?
et plus rien à voir avec la question objet de la présente discussion, qui, elle, a été résolue !
Alors ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
En d'autres termes :
Tu seras ici aidé pour chaque étape, chaque étape étant une difficulté éventuelle spécifique et parfaitement isolée, devant faire l'objet d'une discussion ad-hoc, également spécifique.
A toi de définir ces étapes et de poser la question spécifique -dans une discussion spécifique) pour y parvenir
A toi, ensuite, d'articuler le tout.
Voilà comment nous travaillons ici. N'attends pas que l'on te "construise" tout ton ensemble.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
10
Date d'inscription
lundi 24 avril 2006
Dernière intervention
22 octobre 2012
0
Merci
J'ai créé une macro VBA, ci dessous. Cependant, lorsque je l'exécute, il ne se passe rien : aucune copie, aucun message d'erreur... Je précise que dans chaque classeur, la feuille s'appelle "test" :

Sub EXPORT()
Dim CLASSEURORIGINE As Workbook
Dim CLASSEURDESTINATION As Workbook
Dim FEUILLEORIGINE As Worksheet
Dim FEUILLEDEST As Worksheet
Set CLASSEURORIGINE = Workbooks.Open("C:\SOURCE.xls")
Set CLASSEURDESTINATION = Workbooks.Open("C:\DEST.xls")
Set FEUILLEORIGINE = CLASSEURORIGINE.Worksheets("test")
Set FEUILLEDEST = CLASSEURDESTINATION.Worksheets("test")
FEUILLEORIGINE.Range("F51:G51").Copy
FEUILLEDEST.Range("A1:B1").Paste
End Sub
Commenter la réponse de admicom
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
Tu continues dans cette discussion alors que je t'avais dit :
plus rien à voir avec la question objet de la présente discussion, qui, elle, a été résolue


Je veux bien faire une exception, mais ce sera la dernière dans la présente discussion, ouverte pour une autre difficulté que celle maintenant abordée !!!

== >>
Si tu avais lu attentivement :
Rien ne t'interdit par ailleurs d'ouvrir ton aide VBA sur le mot Copy (Range.Copy) et de lire. Cette méthode comprend un argument destination .

et ouvert ton aoide VBA comme je te l'avais demandé à la rubrique indiquéez ===>>
[del]FEUILLEORIGINE.Range("F51:G51").Copy
FEUILLEDEST.Range("A1:B1").Paste /del
s'écrit :
FEUILLEORIGINE.Range("F51:G51").Copy Destination:=FEUILLEDEST.Range("A1")

Veux-tu bien s'il te plait maintenant libérer cette discussion en cliquant sur le tag résolu pour chacune des solutions (puisque maintenant DEUX sujets dans la même discussion !!!) ?
Et ouvre une autre discussion si autre difficulté, hein ... Merci de respecter cette règle fondamentale.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
10
Date d'inscription
lundi 24 avril 2006
Dernière intervention
22 octobre 2012
0
Merci
Merci à toi pour l'effort, mais pour le coup, cela n'a rien changé, la feuille "test" du classeur de destination est toujours vide, les deux enregistrements ne se collent pas...
Commenter la réponse de admicom
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
désolé, mais, sais-tu, je viens de tester (c'était bien inutile, mais ...) ===>> fonctionne sans faille !
Tu as donc, chez toi, une raison que j'ignore (probablement des données vides dans la plage d'origine).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
10
Date d'inscription
lundi 24 avril 2006
Dernière intervention
22 octobre 2012
0
Merci
Dans quel classeur enregistres-tu ta macro ?
Commenter la réponse de admicom

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.