Importation en volume de données HTML vers un fichier EXCEL en VBA

Résolu
admicom Messages postés 14 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 23 juin 2019 - 20 oct. 2012 à 19:15
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur 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 !
A voir également:

12 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 oct. 2012 à 10:49
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 oct. 2012 à 21:49
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
0
admicom Messages postés 14 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 23 juin 2019
21 oct. 2012 à 18:26
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...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 oct. 2012 à 18:42
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
admicom Messages postés 14 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 23 juin 2019
21 oct. 2012 à 19:59
Oui mais comment passer dans mon code VBA le fait que la macro doit d'appliquer aux 1000 pages HTML et non à une seule ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 oct. 2012 à 20:49
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 oct. 2012 à 21:13
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
0
admicom Messages postés 14 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 23 juin 2019
21 oct. 2012 à 23:10
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 oct. 2012 à 07:42
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
0
admicom Messages postés 14 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 23 juin 2019
22 oct. 2012 à 08:50
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...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 oct. 2012 à 10:19
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
0
admicom Messages postés 14 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 23 juin 2019
22 oct. 2012 à 10:30
Dans quel classeur enregistres-tu ta macro ?
0
Rejoignez-nous