Fusionner 4.000 fichiers Excel d'1 ligne chacun
ERIC_SHD
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai lu plusieurs sujets sur ces questions de fusion de fichiers Excel mais je ne connais absolument pas le langage de macro d'Excel et ne parvient pas à modifier les différentes autres macros publiées ici pour répondre à mon besoin. Je vous prie de m'excuser si ma demande vous parait évidente et redondante.
Dans un répertoire D:\FUSION, j'ai 4.000 fichiers Excel 2016 nommés :
Notice_156.xlsx
Notice_639-641.xlsx
Notice_2904.xlsx
etc...
Ces 4.000 fichiers ont tous strictement la même structure : un seul onglet "Feuil1" et une seule ligne de données, pas de titres de colonne, les données sont simplement sur la plage A1:Q1.
Je souhaite générer 1 seul fichier Excel Notices.xlsx contenant les 4.000 lignes de ces 4.000 fichiers Excel.
D'avance merci pour votre aide.
J'ai lu plusieurs sujets sur ces questions de fusion de fichiers Excel mais je ne connais absolument pas le langage de macro d'Excel et ne parvient pas à modifier les différentes autres macros publiées ici pour répondre à mon besoin. Je vous prie de m'excuser si ma demande vous parait évidente et redondante.
Dans un répertoire D:\FUSION, j'ai 4.000 fichiers Excel 2016 nommés :
Notice_156.xlsx
Notice_639-641.xlsx
Notice_2904.xlsx
etc...
Ces 4.000 fichiers ont tous strictement la même structure : un seul onglet "Feuil1" et une seule ligne de données, pas de titres de colonne, les données sont simplement sur la plage A1:Q1.
Je souhaite générer 1 seul fichier Excel Notices.xlsx contenant les 4.000 lignes de ces 4.000 fichiers Excel.
D'avance merci pour votre aide.
A voir également:
- Fusionner 4.000 fichiers Excel d'1 ligne chacun
- Aller à la ligne excel - Guide
- Liste déroulante excel - Guide
- Partager photos en ligne - Guide
- Fusionner deux fichiers excel - Guide
- Word et excel gratuit - Guide
3 réponses
Bonjour,
En convertissant le xlsx en csv et en concaténant les fichiers texte csv ce devrait être possible :
créer un fichier
puis un fichier
les 2 dans le repertoire des xlsx et tu lances le .cmd tu obtiens un
Cdlt
En convertissant le xlsx en csv et en concaténant les fichiers texte csv ce devrait être possible :
créer un fichier
ExceltoCSV.vbscontenant
if WScript.Arguments.Count < 2 Then WScript.Echo "Please specify the source and the destination files. Usage: ExcelToCsv <xls/xlsx source file> <csv destination file>" Wscript.Quit End If csv_format = 6 Set objFSO = CreateObject("Scripting.FileSystemObject") src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item(0)) dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item(1)) Dim oExcel Set oExcel = CreateObject("Excel.Application") Dim oBook Set oBook = oExcel.Workbooks.Open(src_file) oBook.SaveAs dest_file, csv_format oBook.Close False oExcel.Quit
puis un fichier
convagreg.cmdcontenant
@echo off del *.csv for /r "." %%i in (*.xlsx) do ( echo Fichier en cours "%%i" ExceltoCSV.vbs "%%i" "%%i".csv for /f "tokens=1,* delims=:" %%j in ('findstr /n /r . "%%i".csv') do if %%j equ 1 echo %%k >> total.csv del "%%i".csv )
les 2 dans le repertoire des xlsx et tu lances le .cmd tu obtiens un
total.csvqui s'ouvre dans excel.
Cdlt
Bonjour à tous,
ci joint maquette avec 2 fichiers sources ( "notice" 1 & 2) et fichier cible ("ccm")
la variable chemin est à adapter pour un emplacement en "D:\ fusion"
Merci de m'indiquer la durée de la procédure avec les 4000 fichiers source
https://mon-partage.fr/f/ISXh1C2Z/
ci joint maquette avec 2 fichiers sources ( "notice" 1 & 2) et fichier cible ("ccm")
la variable chemin est à adapter pour un emplacement en "D:\ fusion"
Merci de m'indiquer la durée de la procédure avec les 4000 fichiers source
https://mon-partage.fr/f/ISXh1C2Z/
peut-^tre regarder le code....
d'autre part je précise qu'on travaille sans ouvrir les fichiers source
ensuite on purra écrire une macro d'actualisation (nouveau fichier source) mais j'aurais besoin alors de renseignements complémentaires.
Sub compiler_les_notices()
Dim Chemin As String, Fich As String, Lig As Integer
Dim Start As Single
'fige le défilement de l'écran
Application.ScreenUpdating = False
Start = Timer
'force dans le répertoire de travail
Chemin = ThisWorkbook.Path ' A ADAPTER AU CONTEXTE D:\FUSION
..........
d'autre part je précise qu'on travaille sans ouvrir les fichiers source
ensuite on purra écrire une macro d'actualisation (nouveau fichier source) mais j'aurais besoin alors de renseignements complémentaires.
S'il te reste encore quelques milliers de données à saisir, évite de gaspiller tout un fichier pour une malheureuse ligne, et saisis-les directement à la suite des 4000 que tu auras réussi à rassembler ...
D:\FUSION>{\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830
Le chemin d'accès spécifié est introuvable.
D:\FUSION>{\fonttbl\f0\fmodern\fcharset0 CourierNewPSMT;\f1\fmodern\fcharset0 CourierNewPS-BoldMT;}
Le chemin d'accès spécifié est introuvable.
D:\FUSION>{\colortbl;\red255\green255\blue255;\red36\green36\blue36;\red255\green255\blue255;\red0\green0\blue0;
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\red251\green0\blue109;\red0\green0\blue120;\red144\green1\blue18;}
Le chemin d'accès spécifié est introuvable.
D:\FUSION>{\*\expandedcolortbl;;\cssrgb\c18824\c18824\c18824;\cssrgb\c100000\c100000\c100000;\cssrgb\c0\c0\c0;
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\cssrgb\c100000\c0\c50196;\cssrgb\c0\c0\c54510;\cssrgb\c63922\c8235\c8235;}
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\deftab720
\deftab720 n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commande.
D:\FUSION>\pard\pardeftab720\partightenfactor0
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f0\fs27\fsmilli13600 \cf2 \cb3 \expnd0\expndtw0\kerning0
Le chemin d'accès spécifié est introuvable.
off\
D:\FUSION>del
La syntaxe de la commande n'est pas correcte.
D:\FUSION>\f1\b \cf5 *.
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f0\b0 \cf2 csv\
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\
'\' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commande.
D:\FUSION>\pard\pardeftab720\partightenfactor0
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f1\b \cf6 for
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f0\b0 \cf2 /r \cf7 "."\cf2
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f1\b \cf5 %
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f0\b0 \cf2 i
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f1\b \cf6 in
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f0\b0 \cf2
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f1\b \cf5 (*.
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f0\b0 \cf2 xlsx
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f1\b \cf5 )
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f0\b0 \cf2
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f1\b \cf6 do
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f0\b0 \cf2
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f1\b \cf5 (
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\f0\b0 \cf2 \
Le chemin d'accès spécifié est introuvable.
D:\FUSION>\
D:\FUSION>echo Fichier en cours \cf7 "%i"\cf2 \
Fichier en cours \cf7 "%i"\cf2 \
D:\FUSION>\
'\' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commande.
etc...
Tu n'utilises pas des répertoires réseau, tout est en local ?
Tu as constitué les 2 fichiers de commande avec un éditeur texte de base(comme le bloc-notes) pas un autre éditeur comme word, wordpad ?
+ Microsoft Excel 2016
et aussi LibreOffice 3.5 Calc
Nous utilisons plusieurs volumes réseaux mais j'ai rangé les données dont il est question sur D:\FUSION.
J'ai produit des txt avec un bloc note et ensuite modifié l'extension, comme je fais toujours lorsque je fais des Batch DOS.
- Je constate que seules les colonnes A à I sont présentes dans le fichiers csv de fusion, les colonnes J à Q ne sont bizarrement pas récupérées.
- Le fichier CSV produit adopte la virgule comme séparateur de champ. Or, une de mes colonnes contient du texte, des descriptions historiques, avec des virgules au sein de ce texte. N'y a-t-il pas moyen de forcer un autre caractère comme séparateur de champ ? Comme l'underscore ou la barre verticale du AltGr+6.