A voir également:
- Fusion n fichiers xls en 1 seul fichier
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier host - Guide
- Fichier iso - Guide
6 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
3 janv. 2011 à 12:57
3 janv. 2011 à 12:57
Moi j'utiliserai LibXls en C++
En faite cela doit passer par une macro xls se trouvant dans le fichier final.
Une macro du type :
Chemin fichier source = "c:\test\*.xls"
'test avec 2 champs
Dim debut, ligne, lNomPrenom, cNomPrenom, lPrint, cPrint As Integer
'position de chaque champ
lNomPrenom = 2
cNomPrenom = 2
lPrint = 2
cPrint = 5
'Une boucle qui ouvre fichier par fichier
Copier donner en position "lNomPrenom" et cNomPrenom
Puis "lPrint" "cPrint"
Fermer fichier
saut de ligne
et on recommence la boucle
Mais bon je ne suis pas un expert de la macro xls,
Alors si une ame généreuse se sent d'attaque :) cela m'aiderai Enormément.
En vous remerciant d'avance :)
Une macro du type :
Chemin fichier source = "c:\test\*.xls"
'test avec 2 champs
Dim debut, ligne, lNomPrenom, cNomPrenom, lPrint, cPrint As Integer
'position de chaque champ
lNomPrenom = 2
cNomPrenom = 2
lPrint = 2
cPrint = 5
'Une boucle qui ouvre fichier par fichier
Copier donner en position "lNomPrenom" et cNomPrenom
Puis "lPrint" "cPrint"
Fermer fichier
saut de ligne
et on recommence la boucle
Mais bon je ne suis pas un expert de la macro xls,
Alors si une ame généreuse se sent d'attaque :) cela m'aiderai Enormément.
En vous remerciant d'avance :)
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
3 janv. 2011 à 13:49
3 janv. 2011 à 13:49
Bonjour
C'est possible mais il faudrait que tu donnes des renseignement précis
- Tes classeurs source ont ils une partie générique ?
- Nom de l'onglet
- emplacement et taille maxi des tes données avec les étiquettes d'ent^te (par ex; A1:C1000)
Au besoin, mettre un classeur source sans données confidentielles en pièce jointe (format XL97-2003) sur
http://cijoint.fr/ ou https://www.cjoint.com/
et coller le lien proposé dans le message de réponse
C'est possible mais il faudrait que tu donnes des renseignement précis
- Tes classeurs source ont ils une partie générique ?
- Nom de l'onglet
- emplacement et taille maxi des tes données avec les étiquettes d'ent^te (par ex; A1:C1000)
Au besoin, mettre un classeur source sans données confidentielles en pièce jointe (format XL97-2003) sur
http://cijoint.fr/ ou https://www.cjoint.com/
et coller le lien proposé dans le message de réponse
Bonjour,
Concernant le fichier Final, il peut être vierge et l'ajout ligne par ligne peut se faire en début de feuille (A1).
Il ne comporte qu'un seul onglet (feuille) nommé "bureau"
Concernant les fichiers sources, ils ont tous le meme format et comporte uniquement un seul onglet (feuille) nommé : "bureau"
Exemple de contenu des fichers sources:
chaque fichier comporte uniquement que 5 informations a copier :
"France" (en C17)
BenoitDupin (en C39)-------18 (en D39)-----4 (en E39)------Versailles (en F39)
HenriBardou (en C40)-------24(en D40)-----3 (en E40) -----Buc (en F40)
Information : dans chaque fiche seul le nombre de nom peut etre variable. Certaines fiches contiendront 2 noms et d'autres fiches 5 noms)
Exemple du fichier final :
France (A1)-----BenoitDupin (en B1)----18 (en C1)---- 4 (en D1)---Versailles (en E1)
France (A2)-----HenriBardou (en B2)---24 (en C2)----3 (en D2)----Buc (en E2)
etc jusqu'a ce que tout les noms se trouvant dans le fichiers sources soient traités. Ensuite la boucle ouvre le fichier suivant en continuant d'incrémenter les information ligne par ligne pour obtenir :
France (A1)-----BenoitDupin (en B1)----18 (en C1)---- 4 (en D1)---Versailles (en E1)
France (A2)-----HenriBardou (en B2)---24 (en C2)----3 (en D2)----Buc (en E2)
Espagne (A3)---DoSantos (en B3)----5 (en C3)---- 12 (en D3)---Madrid (en E3)
Espagne (A4)---HenriBardou (en B4)---62 (en C4)----7 (en D4)----Madrid (en E4)
Etc
Etc
Etc
Merci d'avance
Edit : petite correction pour position cellules !
Concernant le fichier Final, il peut être vierge et l'ajout ligne par ligne peut se faire en début de feuille (A1).
Il ne comporte qu'un seul onglet (feuille) nommé "bureau"
Concernant les fichiers sources, ils ont tous le meme format et comporte uniquement un seul onglet (feuille) nommé : "bureau"
Exemple de contenu des fichers sources:
chaque fichier comporte uniquement que 5 informations a copier :
"France" (en C17)
BenoitDupin (en C39)-------18 (en D39)-----4 (en E39)------Versailles (en F39)
HenriBardou (en C40)-------24(en D40)-----3 (en E40) -----Buc (en F40)
Information : dans chaque fiche seul le nombre de nom peut etre variable. Certaines fiches contiendront 2 noms et d'autres fiches 5 noms)
Exemple du fichier final :
France (A1)-----BenoitDupin (en B1)----18 (en C1)---- 4 (en D1)---Versailles (en E1)
France (A2)-----HenriBardou (en B2)---24 (en C2)----3 (en D2)----Buc (en E2)
etc jusqu'a ce que tout les noms se trouvant dans le fichiers sources soient traités. Ensuite la boucle ouvre le fichier suivant en continuant d'incrémenter les information ligne par ligne pour obtenir :
France (A1)-----BenoitDupin (en B1)----18 (en C1)---- 4 (en D1)---Versailles (en E1)
France (A2)-----HenriBardou (en B2)---24 (en C2)----3 (en D2)----Buc (en E2)
Espagne (A3)---DoSantos (en B3)----5 (en C3)---- 12 (en D3)---Madrid (en E3)
Espagne (A4)---HenriBardou (en B4)---62 (en C4)----7 (en D4)----Madrid (en E4)
Etc
Etc
Etc
Merci d'avance
Edit : petite correction pour position cellules !
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
3 janv. 2011 à 16:04
3 janv. 2011 à 16:04
Ok, merci des renseignements
je considère donc que:
dans le répertoire C:\test tu n'a que les classeurs source
il n'y a pas d'étiquette de champs dans les sources
proposition en fin d'aprem ou demain matin...
je considère donc que:
dans le répertoire C:\test tu n'a que les classeurs source
il n'y a pas d'étiquette de champs dans les sources
proposition en fin d'aprem ou demain matin...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Oui effectivement en gros il y a dans c:\Test
- blabla01.xls
- blabla02.xls
- blabla03.xls
etc
etc
ceux sont tous de simple fichier xls contenant des informations uniquement dans le premier onglet (feuille) et portant toujours le même nom d'onglet : bureau
Merci d'avance. Je continue a essayer de la faire mais pour le moment j'arrive a faire une boucle sur tout les fichiers et a copier 1 seule information mais je n'arrive pas a mettre d'incrémentation pour une nouvelle ligne a chaque changement de fichier...
Oui effectivement en gros il y a dans c:\Test
- blabla01.xls
- blabla02.xls
- blabla03.xls
etc
etc
ceux sont tous de simple fichier xls contenant des informations uniquement dans le premier onglet (feuille) et portant toujours le même nom d'onglet : bureau
Merci d'avance. Je continue a essayer de la faire mais pour le moment j'arrive a faire une boucle sur tout les fichiers et a copier 1 seule information mais je n'arrive pas a mettre d'incrémentation pour une nouvelle ligne a chaque changement de fichier...
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
3 janv. 2011 à 17:47
3 janv. 2011 à 17:47
re
proposition
mettre le chemin réel!
on boucle sur les sources restant fermées, on alimente un array -tampon et on restitue
je t'envoie la maquette de travail (un truc à faire avant zurgent commed'hab)
proposition
mettre le chemin réel!
on boucle sur les sources restant fermées, on alimente un array -tampon et on restitue
je t'envoie la maquette de travail (un truc à faire avant zurgent commed'hab)
Const chemin As String = "D:\documents\bilbiane" 'à adapter au projet Const Onglet As String * 6 = "bureau" Const Plage As String * 9 = "B34:F1000" Dim T_out, cptr As Integer Function FichOuvert(F As String) As Boolean 'Auteur: Didier_mdf (merci) :http://www.mdf-xlpages.com/ Dim Wk As Workbook On Error Resume Next Set Wk = Workbooks(F) On Error GoTo 0 FichOuvert = Not Wk Is Nothing End Function Sub regrouper_pays() Dim Fich As String ReDim T_out(4, 0) ChDir chemin Fich = Dir("*.xls") While Fich <> "" 'teste si une source est ouverte et si oui, sauvegarde et ferme If FichOuvert(Fich) Then With Workbooks(Fich) If Not .Saved Then .Save End If .Close End With End If '------extraction des données pays, nom, voiture.... extraire Fich Fich = Dir Wend '-----Restitution With Sheets(1) .Range("A2:E10000").Clear With .Range("A2").Resize(cptr, 5) .Value = Application.Transpose(T_out) .Borders.Weight = xlThin End With End With End Sub Sub extraire(Fichier As String) Dim Pays As String Dim Source As Object, Requete As Object Dim feuille As String * 7 Dim Texte_SQL As String 'extraction cellule C17 Pays = ExecuteExcel4Macro("'" & chemin & "\[" & Fichier & "]" & Onglet & "'!R17C3") 'connexion ADO au fichier-source Set Source = CreateObject("ADODB.Connection") Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & chemin & "\" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";" feuille = Onglet & "$" Texte_SQL = "SELECT * FROM [" & feuille & Plage & "];" Set Requete = CreateObject("ADODB.Recordset") Set Requete = Source.Execute(Texte_SQL) 'affectation des données au tableau de restitution With Requete .MoveFirst Do While Not .EOF ReDim Preserve T_out(4, cptr) T_out(0, cptr) = Pays T_out(1, cptr) = .Fields(0) T_out(2, cptr) = .Fields(1) T_out(3, cptr) = .Fields(2) T_out(4, cptr) = .Fields(3) cptr = cptr + 1 .MoveNext Loop End With 'libère la mémoire Requete.Close Set Requete = Nothing Source.Close Set Source = Nothing End Sub
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
3 janv. 2011 à 17:57
3 janv. 2011 à 17:57
et voici la maquette de travail
https://www.cjoint.com/?0bdr64fFlWe
dans ton projet et dans la maquette, Le classeur cible ne doit pas être dans le même répertoire que les sources
https://www.cjoint.com/?0bdr64fFlWe
dans ton projet et dans la maquette, Le classeur cible ne doit pas être dans le même répertoire que les sources
Bonjour,
Désolé pour cette réponse tardive mais réunion réunion réunion réunion grrrrrrrrr
Je vais regarder tout ca et je t en remercie d'avance.
La solution que j'avais trouvé de mon coté mais non viable car trop d'étape est un script qui prends l'ensemble de fichier xls pour les mettre dans un csv puis retransforme le tout dans un fichier xls.... Bcp trop d'étape et non viable pour des personnes hors informatique.
J'analyse ton retour :)
A toute.
Désolé pour cette réponse tardive mais réunion réunion réunion réunion grrrrrrrrr
Je vais regarder tout ca et je t en remercie d'avance.
La solution que j'avais trouvé de mon coté mais non viable car trop d'étape est un script qui prends l'ensemble de fichier xls pour les mettre dans un csv puis retransforme le tout dans un fichier xls.... Bcp trop d'étape et non viable pour des personnes hors informatique.
J'analyse ton retour :)
A toute.