OVH Cloud OVH Cloud

Copier plusieurs fichiers dans un seul

5 réponses
Avatar
Nico
Bonjour,

Voila mon problème.
Je possede 172 fichiers excel avec dans chaques fichiers 5 lignes ou il y a
des données.
Je voudrais centraliser tout ces fichiers dans un seul, afin qu'il n'y ai
plus que 1 seul fichier et non plus 172.
Existe-t-il une macro pour faire cela?
ou une manip dans Excel?

Merci a tous!

Bon appetit

Nicolas

5 réponses

Avatar
anomymousA
bonjour,

c'est pour le faire régulièrement ou pour le faire une seule fois ?

A+


Bonjour,

Voila mon problème.
Je possede 172 fichiers excel avec dans chaques fichiers 5 lignes ou il y a
des données.
Je voudrais centraliser tout ces fichiers dans un seul, afin qu'il n'y ai
plus que 1 seul fichier et non plus 172.
Existe-t-il une macro pour faire cela?
ou une manip dans Excel?

Merci a tous!

Bon appetit

Nicolas





Avatar
Nico
une seule fois seulement
"anomymousA" a écrit dans le message
de news:
bonjour,

c'est pour le faire régulièrement ou pour le faire une seule fois ?

A+


Bonjour,

Voila mon problème.
Je possede 172 fichiers excel avec dans chaques fichiers 5 lignes ou il
y a


des données.
Je voudrais centraliser tout ces fichiers dans un seul, afin qu'il n'y
ai


plus que 1 seul fichier et non plus 172.
Existe-t-il une macro pour faire cela?
ou une manip dans Excel?

Merci a tous!

Bon appetit

Nicolas







Avatar
anomymousA
bien,

j'espère pour toi que ces fichiers sont dans le même répertoire et que leurs
noms respectent une séquence permettant une boucle numérique parceque sinon
les ouvrir à la main et faire des copier-coller sera aussi rapide que
d'écirire 172 noms différents dans une macro.

S'il y a une séquence de répétition, mettons que tes fichiers s'appellent
tous C:DONNEESMonfichierX avec X qui est un N° incrémenté de 1 à 172 ou une
autre séquence de répétition qui peut se prêter à une boucle de 1 à 172.
On suppose que les lignes à copier des fichiers source sont topujours les
lignes de 1 à 5 sur la feuille appelée Feuil1 du fichier source et sont à
copier dans la feuille active du fichier destination à partir de la colonne 1.
Dans ces conditions bien qu'il soit possible de travailler avec des fichiers
fermés, on prendra la méthode simple qui consiste à ouvrir les fichiers les
uns après les auutres , à copier dans le fichier destination les lignes puis
à fermer le fichier source.

on suppose que tu lances ta macro depuis le fichier destination et de la
feuille destination (tu peux changer ça si tu veux) et que ton curseur est
pour l'instant positionné sur la feuille destination du fichier destination.

Application.screenupdatingúlse

set wsdest¬tiveworkbook.activesheet

For I=1 to 172

workbooks.open "C:DONNEESMonfichier" & I & ".xls"
set wssource¬tiveworkbook.sheets("Feuil1")
wssource.Rows("1:5").Copy wsdest.Cells(5*(I -1)+1, 1)
activeworkbook.close SaveChanges:úlse
set wssource=nothing

next

Application.screenupdating=true

Si tes fichiers sources ont des liaisons, un petiti coup de
Application.asktoupdatelinksúlse sera peut-être le bienvenu.

A+


une seule fois seulement
"anomymousA" a écrit dans le message
de news:
bonjour,

c'est pour le faire régulièrement ou pour le faire une seule fois ?

A+


Bonjour,

Voila mon problème.
Je possede 172 fichiers excel avec dans chaques fichiers 5 lignes ou il
y a


des données.
Je voudrais centraliser tout ces fichiers dans un seul, afin qu'il n'y
ai


plus que 1 seul fichier et non plus 172.
Existe-t-il une macro pour faire cela?
ou une manip dans Excel?

Merci a tous!

Bon appetit

Nicolas












Avatar
Rai
Bonsoir,

Si on recopie tous les fichiers dans un même dossier, on peut récupérer leur nom assez facilement.
Nul besoin de connaître leur nombre, ni d'avoir une séquence de fichiers.

En utilisant la solution précédemment proposée, cela donnera quelquechose du genre :

Public chemin, recherche, fichier As String
Public i As Integer

Sub fichiers()
chemin = "c:tempo"
recherche = "*.xls"
fichier = Dir(chemin & recherche)
Call copie
While fichier <> ""
fichier = Dir
Call copie
Wend
End Sub

Sub copie()
i = i + 1
Set wsdest = ActiveWorkbook.ActiveSheet
Workbooks.Open chemin & fichier & ".xls"
Set wssource = ActiveWorkbook.Sheets("Feuil1")
wssource.Rows("1:5").Copy wsdest.Cells(5 * (i - 1) + 1, 1)
ActiveWorkbook.Close SaveChanges:úlse
Set wssource = Nothing
End Sub


Bonne soirée à toutes & à tous

Rai

"anomymousA" a écrit dans le message de news:
bien,

j'espère pour toi que ces fichiers sont dans le même répertoire et que leurs
noms respectent une séquence permettant une boucle numérique parceque sinon
les ouvrir à la main et faire des copier-coller sera aussi rapide que
d'écirire 172 noms différents dans une macro.

S'il y a une séquence de répétition, mettons que tes fichiers s'appellent
tous C:DONNEESMonfichierX avec X qui est un N° incrémenté de 1 à 172 ou une
autre séquence de répétition qui peut se prêter à une boucle de 1 à 172.
On suppose que les lignes à copier des fichiers source sont topujours les
lignes de 1 à 5 sur la feuille appelée Feuil1 du fichier source et sont à
copier dans la feuille active du fichier destination à partir de la colonne 1.
Dans ces conditions bien qu'il soit possible de travailler avec des fichiers
fermés, on prendra la méthode simple qui consiste à ouvrir les fichiers les
uns après les auutres , à copier dans le fichier destination les lignes puis
à fermer le fichier source.

on suppose que tu lances ta macro depuis le fichier destination et de la
feuille destination (tu peux changer ça si tu veux) et que ton curseur est
pour l'instant positionné sur la feuille destination du fichier destination.

Application.screenupdatingúlse

set wsdest¬tiveworkbook.activesheet

For I=1 to 172

workbooks.open "C:DONNEESMonfichier" & I & ".xls"
set wssource¬tiveworkbook.sheets("Feuil1")
wssource.Rows("1:5").Copy wsdest.Cells(5*(I -1)+1, 1)
activeworkbook.close SaveChanges:úlse
set wssource=nothing

next

Application.screenupdating=true

Si tes fichiers sources ont des liaisons, un petiti coup de
Application.asktoupdatelinksúlse sera peut-être le bienvenu.

A+


une seule fois seulement
"anomymousA" a écrit dans le message
de news:
bonjour,

c'est pour le faire régulièrement ou pour le faire une seule fois ?

A+


Bonjour,

Voila mon problème.
Je possede 172 fichiers excel avec dans chaques fichiers 5 lignes ou il
y a


des données.
Je voudrais centraliser tout ces fichiers dans un seul, afin qu'il n'y
ai


plus que 1 seul fichier et non plus 172.
Existe-t-il une macro pour faire cela?
ou une manip dans Excel?

Merci a tous!

Bon appetit

Nicolas














Avatar
anonymousA
salut,

c'est exact . Je fatigue !!

a+

"Rai" a écrit dans le message de news:
O8tcPKN#
Bonsoir,

Si on recopie tous les fichiers dans un même dossier, on peut récupérer leur
nom assez facilement.
Nul besoin de connaître leur nombre, ni d'avoir une séquence de fichiers.

En utilisant la solution précédemment proposée, cela donnera quelquechose du
genre :

Public chemin, recherche, fichier As String
Public i As Integer

Sub fichiers()
chemin = "c:tempo"
recherche = "*.xls"
fichier = Dir(chemin & recherche)
Call copie
While fichier <> ""
fichier = Dir
Call copie
Wend
End Sub

Sub copie()
i = i + 1
Set wsdest = ActiveWorkbook.ActiveSheet
Workbooks.Open chemin & fichier & ".xls"
Set wssource = ActiveWorkbook.Sheets("Feuil1")
wssource.Rows("1:5").Copy wsdest.Cells(5 * (i - 1) + 1, 1)
ActiveWorkbook.Close SaveChanges:úlse
Set wssource = Nothing
End Sub


Bonne soirée à toutes & à tous

Rai

"anomymousA" a écrit dans le message
de news:
bien,

j'espère pour toi que ces fichiers sont dans le même répertoire et que
leurs

noms respectent une séquence permettant une boucle numérique parceque
sinon

les ouvrir à la main et faire des copier-coller sera aussi rapide que
d'écirire 172 noms différents dans une macro.

S'il y a une séquence de répétition, mettons que tes fichiers s'appellent
tous C:DONNEESMonfichierX avec X qui est un N° incrémenté de 1 à 172 ou
une

autre séquence de répétition qui peut se prêter à une boucle de 1 à 172.
On suppose que les lignes à copier des fichiers source sont topujours les
lignes de 1 à 5 sur la feuille appelée Feuil1 du fichier source et sont à
copier dans la feuille active du fichier destination à partir de la
colonne 1.

Dans ces conditions bien qu'il soit possible de travailler avec des
fichiers

fermés, on prendra la méthode simple qui consiste à ouvrir les fichiers
les

uns après les auutres , à copier dans le fichier destination les lignes
puis

à fermer le fichier source.

on suppose que tu lances ta macro depuis le fichier destination et de la
feuille destination (tu peux changer ça si tu veux) et que ton curseur est
pour l'instant positionné sur la feuille destination du fichier
destination.


Application.screenupdatingúlse

set wsdest¬tiveworkbook.activesheet

For I=1 to 172

workbooks.open "C:DONNEESMonfichier" & I & ".xls"
set wssource¬tiveworkbook.sheets("Feuil1")
wssource.Rows("1:5").Copy wsdest.Cells(5*(I -1)+1, 1)
activeworkbook.close SaveChanges:úlse
set wssource=nothing

next

Application.screenupdating=true

Si tes fichiers sources ont des liaisons, un petiti coup de
Application.asktoupdatelinksúlse sera peut-être le bienvenu.

A+


une seule fois seulement
"anomymousA" a écrit dans le
message


de news:
bonjour,

c'est pour le faire régulièrement ou pour le faire une seule fois ?

A+


Bonjour,

Voila mon problème.
Je possede 172 fichiers excel avec dans chaques fichiers 5 lignes ou
il




y a
des données.
Je voudrais centraliser tout ces fichiers dans un seul, afin qu'il
n'y




ai
plus que 1 seul fichier et non plus 172.
Existe-t-il une macro pour faire cela?
ou une manip dans Excel?

Merci a tous!

Bon appetit

Nicolas