Extraction de données dans de nombreux fichiers Excel

antoineddw

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterais extraire une même colonne (ou une même cellule) de 800 fichiers .xls, tous étant dans un même dossier, afin de les regrouper dans un même fichier destination.
Les colonnes (ou cellules) extraites seraient alors mises côte à côte, et avec si possible le nom de chaque fichier source en haut de la colonne.

Quelqu'un(e) peut-il m'aider ?? :confused:

Merci d'avance !!

Antoine
 

antoineddw

XLDnaute Nouveau
Re : Extraction de données dans de nombreux fichiers Excel

Bonjour,

Je ne vais pas ouvrir mes 800 fichiers un à un afin de copier/coller, je souhaiterais réaliser une macro permettant d'extraire une colonne / une cellule particulière dans chacun des fichiers du même dossier source, puis les coller dans un nouveau fichier destination.
 

mth

XLDnaute Barbatruc
Re : Extraction de données dans de nombreux fichiers Excel

Bonjour à tous :)

Un petit essai avec ce code (un peu lent...) , à adapter aux noms des onglets et en fonction de la cellule à récupérer (en espérant que tous les onglets des 800 fichiers portent le même nom ...)

Code:
Sub maj()
Application.ScreenUpdating = False
Dim Chemin As String, NF As String
Dim n As Long

Chemin = ThisWorkbook.Path & "\"
NF = Dir(Chemin & "*.xls")
Do While NF <> ""
  n = n + 1
  NF = Dir()
Loop
NF = Dir(Chemin & "*.xls")
    For i = 1 To n
         If NF <> ThisWorkbook.Name Then
           Workbooks.Open Filename:=ThisWorkbook.Path & "\" & NF
           With ThisWorkbook.Sheets("Destination")
                .Cells(1, i) = NF
                .Cells(2, i) = Workbooks(NF).Sheets("Feuil1").Range("A1")
            End With
           Workbooks(NF).Close False
           NF = Dir()
         End If
    Next i
Application.ScreenUpdating = True
MsgBox "Traitement terminé "
End Sub

Pas très sûre de moi je n'ai fait que quelques tests, je te laisse voir de ton coté, et tu auras certainement d'ici peu d'autres suggestions.

Bon après-midi à tous :)

mth
 

antoineddw

XLDnaute Nouveau
Re : Extraction de données dans de nombreux fichiers Excel

Bonjour,

Merci pour ta réponse. J'ai bien entré le code, inséré mon chemin de répertoire dans lequel se trouve mes 800 fichiers :
Chemin = ThisWorkbook.Path & "\:C\Documents and Settings\etc..."

Pourtant, il y a un bug à la ligne suivante, cause "nom de fichier incorrect".

Merci de ton aide

Antoine
 

mth

XLDnaute Barbatruc
Re : Extraction de données dans de nombreux fichiers Excel

re :)

ThisWorkbook.Path donne déjà le chemin du fichier qui contient ta macro (et des 800 autres s'ils sont bien dans le même répertoire), il ne faut pas ajouter un autre chemin derrière, :C\Documents and Settings\etc... est en trop.

Bien à toi,

mth
 

antoineddw

XLDnaute Nouveau
Re : Extraction de données dans de nombreux fichiers Excel

Au temps pour moi, il ne faut pas remettre le chemin, sinon il va être compté deux fois :)

Par contre j'ai un soucis à With ThisWorkbook.Sheets("Destination")
("l'indice n'appartient pas à la sélection")
"Destination" est le nom du classeur dans lequel je souhaite inscrire mes colonnes (c'est également le classeur dans lequel j'exécute la macro), c'est bien ça ?

Autre chose, il s'agit de fichiers .csv et non .xls, j'ai juste remplacé par .csv, je pense que ça ne pose pas de problème ?

Merci encore

Antoine
 

mth

XLDnaute Barbatruc
Re : Extraction de données dans de nombreux fichiers Excel

re :)

non, en fait Thisworkbook indique qu'il s'agit du fichier contenant la macro, peu importe son nom.
Sheets indique le nom de l'onglet, à adapter à ton cas donc. Ici, j'ai imaginé qu'un onglet nommé Destination pouvait accueillir les résultats, à toi de modifier en fonction de ton fichier réel.

Quant aux csv, je n'ai pas testé (euh ... pas sûre que ça fonctionne, sourire... mais tu ne vas pas tarder à le savoir et moi non plus...).

@ ++ :)

mth
 

antoineddw

XLDnaute Nouveau
Re : Extraction de données dans de nombreux fichiers Excel

Salut,

Petit problème, l'onglet de chacun de mes 800 fichiers porte le même nom que le fichier lui-même... (il est même "tronqué" car le nom de l'onglet ne dépasse pas 31 caractères...).
As-tu une idée de ce que je peux faire ?
Chaque fichier ne contient qu'un seul onglet, serait-il possible de ce fait de ne pas renseigner le nom de l'onglet ou faut-il absolument le faire ?
Merci beaucoup
 

Pierrot93

XLDnaute Barbatruc
Re : Extraction de données dans de nombreux fichiers Excel

Bonjour Anoine, Mireille:)

pas tout suivi, mais essaye peut être en remplcant :
Code:
Sheets ("nomfeuille")

par :
Code:
ActiveSheet

ou bien par :
Code:
Sheets(1)

bonne journée
@+
 

antoineddw

XLDnaute Nouveau
Re : Extraction de données dans de nombreux fichiers Excel

Merci à vous deux, ça fonctionne !

Par contre ça pose problème avec le fichier .csv, à cause du point virgule en séparateur je ne parvient pas à extraire la donnée que je souhaite.
Lorsque j'ouvre mon fichier résultat .csv à part, Excel me l'ouvre comme un fichier .xls, sans problème (j'ai Excel 2007).
Mais lorsque je fais tourner la macro, Excel semble l'ouvrir comme un fichier .csv, avec les points virgules, comme lorsqu'on l'ouvre avec un bloc-notes.
Je vous joins un zip contenant un de mes fichiers résultats afin que vous voyez mieux à quoi ils ressemblent.
Pour ce fichier, la valeur qui m'intéresse est la cellule E12 (qui vaut 28,525...)
 

Pièces jointes

  • 13_19.combles_BBC_nordsud_baie0.1_mur0.0025.xml_Resultats_Th_EC.zip
    483 bytes · Affichages: 25

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 596
Membres
103 252
dernier inscrit
Ersar