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

fabien180281 Messages postés 9 Date d'inscription mardi 8 mai 2012 Statut Membre Dernière intervention 9 mai 2012 - 8 mai 2012 à 15:37
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 - 9 mai 2012 à 09:33
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

4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
8 mai 2012 à 16:11
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
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
8 mai 2012 à 16:13
Bref, le code ci-dessus va lister tout les fichier dans le dossier.

Je n'était pas sur d'avoir était claire
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
8 mai 2012 à 16:23
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
0
fabien180281 Messages postés 9 Date d'inscription mardi 8 mai 2012 Statut Membre Dernière intervention 9 mai 2012
8 mai 2012 à 17:28
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
0

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

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
8 mai 2012 à 17:33
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
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
8 mai 2012 à 17:41
, 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.
0
fabien180281 Messages postés 9 Date d'inscription mardi 8 mai 2012 Statut Membre Dernière intervention 9 mai 2012
8 mai 2012 à 17:42
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?
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
8 mai 2012 à 17:48
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
0
Utilisateur anonyme
8 mai 2012 à 17:54
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.
0
Utilisateur anonyme
8 mai 2012 à 17:55
On dirait que la découverte de la puissance de VB est une découverte un peu obligée.
0
fabien180281 Messages postés 9 Date d'inscription mardi 8 mai 2012 Statut Membre Dernière intervention 9 mai 2012
8 mai 2012 à 17:56
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
0
fabien180281 Messages postés 9 Date d'inscription mardi 8 mai 2012 Statut Membre Dernière intervention 9 mai 2012
8 mai 2012 à 17:59
"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.
0
Utilisateur anonyme
8 mai 2012 à 18:04
Désolé, je n'ai pas vérifié les auteurs des deux messages pareils.
0
fabien180281 Messages postés 9 Date d'inscription mardi 8 mai 2012 Statut Membre Dernière intervention 9 mai 2012
9 mai 2012 à 00:12
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.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
9 mai 2012 à 08:12
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
0
fabien180281 Messages postés 9 Date d'inscription mardi 8 mai 2012 Statut Membre Dernière intervention 9 mai 2012
9 mai 2012 à 08:54
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.
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
9 mai 2012 à 09:33
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.
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
9 mai 2012 à 09:33
Sans oublier de fermer celui-ci !
0
Rejoignez-nous