Balayer tous les .xml d'un dossier pour synthétiser dans un fichier .xls

Signaler
Messages postés
9
Date d'inscription
mardi 8 mai 2012
Statut
Membre
Dernière intervention
9 mai 2012
-
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
-
Bonjour,

Je fais mes 1er pas sur Visual Basic et je me rend compte de tout le potentiel mais je suis vite bloqué par ce qui peux sembler un détail pour d'autres.
Voilà mon problème :
J'aimerai ouvrir tous les .xml d'un dossier puis copier certaines valeurs et les coller afin de faire une synthèse.
Pour le moment j'ai réussit à faire ça fichier par fichier mais j'aimerai automatiser ça en balayant tous les fichiers du dossier. Après avoir passé pas mal de temps sur les forums je pense devoir utiliser "For Each Next" mais je n'y arrive pas.

Voilà mon code actuel:
Sub Extraction()

'Importer
ChDir "C:\Final"
NomFichierXML = Application.GetOpenFilename("Fichier XML (*.xml),*.xml", , "Choisir le fichier")
Set wk2 = Workbooks.OpenXML(Filename:=NomFichierXML, LoadOption:=xlXmlLoadImportToList)

'Renommer classeur en "importation.xls"
ActiveWorkbook.SaveAs Filename:= _
"C:\Final\importation.xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False

'Copier les données
Windows("stats.xls").Activate
Sheets("synthèse").Select
Rows("3:3").Select
Selection.Insert Shift:=xlDown

Windows("importation.xls").Activate
Range("D20,L20,M20,N20,AN20,AP20").Select
Selection.Copy
Windows("stats.xls").Activate
Range("A3").Select
ActiveSheet.Paste

'Fermer classeur "importation.xls"
Windows("Importation.xls").Close

'Effacer classeur "importation.xls"
Kill "C:\Final\importation.xls"

End Sub



Merci de votre aide

18 réponses

Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Je pense à un truc du style

Dim fso As New FileSystemObject
Dim fld As Folder
Dim fil As File

Set fld = fso.GetFolder("C:\le dossier qui ou il y a tout les fichiers)

For Each fil In fld.Files
'  ...ton code...
  'fil.Name contiendra les nom des fichier
  'fil.path pour avoir le chemin
'  ...ton code...
Next

Set fil = Nothing 
Set fld = Nothing
Set fso = Nothing
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Bref, le code ci-dessus va lister tout les fichier dans le dossier.

Je n'était pas sur d'avoir était claire
Messages postés
14763
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 janvier 2021
151
Bonjour,

Tu n'es pas en VB6 (catégorie de la question), mais en VBA, je déplace, prends note de la catégorie.

Sinon, intéresses-toi à la commande Dir$, et évites autant que possible FSO (FileSystemObject).

---------------------------------------------------------------------
[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
Messages postés
9
Date d'inscription
mardi 8 mai 2012
Statut
Membre
Dernière intervention
9 mai 2012

Merci de vos réponses si rapide et désolé d'avoir mal placé mon message.

Alors j'ai essayé avec la proposition de 4u4me4us mais il me met qu'il y a une "erreur de compilation" et que le "type défini par l'utilisateur non défini". J'ai peut-être loupé quelque chose.

J'ai aussi creusé l'idée de NHenry mais je n'y arrive pas.

Je suis ultra-débutant, désolé les gars.

Merci de votre aide
Messages postés
14763
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 janvier 2021
151
Bonjour,

http://codyx.org/snippet_lister-tous-fichiers-repertoire_198.aspx#683

---------------------------------------------------------------------
[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
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
, si tu n'es pas en VB6 ça ne peut pas marcher.

Mais le principe reste le même en utilisant la source donnée par NHenry.
Messages postés
9
Date d'inscription
mardi 8 mai 2012
Statut
Membre
Dernière intervention
9 mai 2012

Ce code permet de compter le nombre de fichier mais je ne vois pas comment l'adapter à ce que je cherche. Que penseez-vous de la fonction For Each Next? Elle vous semble judicieuse?
Messages postés
14763
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 janvier 2021
151
Bonjour,

As-tu essayé le code ?
As-tu regardé sur la feuille Excel ce qui était apparu ?

---------------------------------------------------------------------
[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

Bonjour à tous,

Il y en a un autre qui demande si celui qui a posé une question du même genre, il y a trois (3) ans, a trouvé sa réponse.

Tapez le texte de l'url ici.

On dirait que la découverte de la puissance de VB est une découverte un peu obligée.
Messages postés
9
Date d'inscription
mardi 8 mai 2012
Statut
Membre
Dernière intervention
9 mai 2012

Il est effectivement apparu la fenêtre avec le nombre de fichier dans le dossier et dans la feuille excel il y a toutes les adresses des fichiers contenus dans le dossier.
OK.
Après je dois faire en sorte de prendre ces adresses pour collecter les données j'imagine...
Je vais voir comment faire.

Merci
Messages postés
9
Date d'inscription
mardi 8 mai 2012
Statut
Membre
Dernière intervention
9 mai 2012

"Obligée" oui et non car je prend ca de mon propre chef. C'est pour éviter de galèrer toutes les semaines à traiter une bonne 50aine de fichiers, c'est inintéressant au possible et il y a des sources d'erreur.

Désolé, je n'ai pas vérifié les auteurs des deux messages pareils.
Messages postés
9
Date d'inscription
mardi 8 mai 2012
Statut
Membre
Dernière intervention
9 mai 2012

Après de nombreux essais je n'arrive pas a exploiter les adresses obtenues dans la colonne A. J'ai essayé via des Macros et aussi en direct par des formules sur Excel mais rien n'y fait.
Messages postés
7226
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 janvier 2021
118
Bonjour,
Il y a quelque temps j'avais répondu à une question concernant la recherche defichiers xls dans un dossier, mais je pense que cela peut convenir en changeant l'extension de recherche:

http://www.vbfrance.com/forum/sujet-MARCO-RECHERCHE-DANS-WINDOWS_1488190.aspx

@+Le Pivert
Messages postés
9
Date d'inscription
mardi 8 mai 2012
Statut
Membre
Dernière intervention
9 mai 2012

OK merci Le Pivert il y a matière à travailler là dessus mais pour ma part je cherche à lire certaines cellules (dont j'ai les adresses fixes) dans des fichiers .xml aux noms variables contenus dans un dossier.
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Là tu deviens très flous!

Fais déjà ton "listing" de fichier puis, si besoin, tu reposera clairement une autre question dans un nouveau sujet.
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Sans oublier de fermer celui-ci !