Extraction de données dans de nombreux fichiers Excel

  • Initiateur de la discussion Initiateur de la discussion antoineddw
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

antoineddw

Guest
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 ?? 😕

Merci d'avance !!

Antoine
 
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.
 
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
 
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
 
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
 
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
 
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
 
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
 
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
@+
 
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

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

C'est bon, c'était à cause de la virgule (qui semble faire un "stop" lors de la conversion), j'arrive maintenant à tout faire.
Merci encore à vous deux !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
178
Réponses
5
Affichages
1 K
Retour