J'ai dans un dossier c:\forms\ des fichiers csv du type Form societeA.csv,
Form societeL.csv, Form SocieteX.csv, etc... qui peuvent etre en nombre
variable Chacun de ces fichiers ne comportent qu'une seule ligne lorque
ouvert dans excel.
J'aimerai pouvoir disposer d'une macro qui me permettrai d'obtenir un
fichier Form Compilation.xls qui contiendrait en un seul fichier toutes les
données des fichiers csv. Le fichier xls aurait autant de lignes que le
nombre de fichiers csv.
"Christophe Joly" a écrit dans le message de news:4153c7ed$0$1900$
Bonjour:
J'ai dans un dossier c:forms des fichiers csv du type Form societeA.csv,
Form societeL.csv, Form SocieteX.csv, etc... qui peuvent etre en nombre
variable Chacun de ces fichiers ne comportent qu'une seule ligne lorque
ouvert dans excel.
J'aimerai pouvoir disposer d'une macro qui me permettrai d'obtenir un
fichier Form Compilation.xls qui contiendrait en un seul fichier toutes les
données des fichiers csv. Le fichier xls aurait autant de lignes que le
nombre de fichiers csv.
Merci d'avance de votre aide précieuse.
Christophe
Christophe Joly
Bonjour Clément et merci:
La macro ci-dessous fonctionne (Pascal Engelmajer MPFE 26-04-2004) si ce n'est que je vais devoir renommer mes fichiers Form01.csv, Form02.csv, Form03.csv etc. et non pas Form Societe AAAAA.csv, Form Societe ABCDEF.csv, Form Societe WDXDD.csv, etc. Meme si cela n'est pas optimal et à moins que quelqu'un est une autre solution, je peux m'en accommoder.
En revanche, ne souhaitant pas changer la macro en fonction du nombre de fichiers à compiler j'ai choisi de faire 100 boucles mais la macro plante par exemple aprés 58 boucles si je n'ai que 58 fichiers dans C:forms parce que le fichier C:formsform59.csv est introuvable. Comment puis-je remédier à cela?
Merci d'avance.
Christophe
Sub Conbinesheets() Dim wb As Workbook Dim wsCible As Worksheet Dim ws As Worksheet Dim cpy As Variant Dim fic As String Dim adrCible As String Dim derLigneCible As Integer Dim nbLigneSource As Integer Dim no As String * 2 Dim iFic As Integer Dim i As Integer Application.ScreenUpdating = False Set wsCible = ThisWorkbook.Sheets(1) derLigneCible = 1 For iFic = 1 To 10 no = Format(iFic, "0#") fic = "C:formsForm" & no & ".csv" Set wb = Workbooks.Open(fic) Set ws = wb.Sheets(1) nbLigneSource = ws.Range("A65535").End(xlUp).Row For i = 1 To nbLigneSource adrCible = "A" & derLigneCible cpy = ws.Rows(i).Value wsCible.Range(adrCible).EntireRow.Value = cpy derLigneCible = derLigneCible + 1 Next i Application.DisplayAlerts = False wb.Close Application.DisplayAlerts = True Next iFic Application.ScreenUpdating = True End Sub
"Clément Marcotte" a écrit dans le message de news:%
Bonjour,
Pour boucler tous les fichiers d'un dossier, un paquet d'exemples par là:
http://frederic.sigonneau.free.fr
Pour lire un fichier texte et séparer les éléments dans une ligne de classeur Excel:
"Christophe Joly" a écrit dans le message de news:4153c7ed$0$1900$
Bonjour:
J'ai dans un dossier c:forms des fichiers csv du type Form societeA.csv,
Form societeL.csv, Form SocieteX.csv, etc... qui peuvent etre en nombre
variable Chacun de ces fichiers ne comportent qu'une seule ligne lorque
ouvert dans excel.
J'aimerai pouvoir disposer d'une macro qui me permettrai d'obtenir un
fichier Form Compilation.xls qui contiendrait en un seul fichier toutes les
données des fichiers csv. Le fichier xls aurait autant de lignes que le
nombre de fichiers csv.
Merci d'avance de votre aide précieuse.
Christophe
Bonjour Clément et merci:
La macro ci-dessous fonctionne (Pascal Engelmajer MPFE 26-04-2004) si ce
n'est que je vais devoir renommer mes fichiers Form01.csv, Form02.csv,
Form03.csv etc. et non pas Form Societe AAAAA.csv, Form Societe ABCDEF.csv,
Form Societe WDXDD.csv, etc.
Meme si cela n'est pas optimal et à moins que quelqu'un est une autre
solution, je peux m'en accommoder.
En revanche, ne souhaitant pas changer la macro en fonction du nombre de
fichiers à compiler j'ai choisi de faire 100 boucles mais la macro plante
par exemple aprés 58 boucles si je n'ai que 58 fichiers dans C:forms
parce que le fichier C:formsform59.csv est introuvable. Comment puis-je
remédier à cela?
Merci d'avance.
Christophe
Sub Conbinesheets()
Dim wb As Workbook
Dim wsCible As Worksheet
Dim ws As Worksheet
Dim cpy As Variant
Dim fic As String
Dim adrCible As String
Dim derLigneCible As Integer
Dim nbLigneSource As Integer
Dim no As String * 2
Dim iFic As Integer
Dim i As Integer
Application.ScreenUpdating = False
Set wsCible = ThisWorkbook.Sheets(1)
derLigneCible = 1
For iFic = 1 To 10
no = Format(iFic, "0#")
fic = "C:formsForm" & no & ".csv"
Set wb = Workbooks.Open(fic)
Set ws = wb.Sheets(1)
nbLigneSource = ws.Range("A65535").End(xlUp).Row
For i = 1 To nbLigneSource
adrCible = "A" & derLigneCible
cpy = ws.Rows(i).Value
wsCible.Range(adrCible).EntireRow.Value = cpy
derLigneCible = derLigneCible + 1
Next i
Application.DisplayAlerts = False
wb.Close
Application.DisplayAlerts = True
Next iFic
Application.ScreenUpdating = True
End Sub
"Clément Marcotte" <clement.marcotte@sympatico.ca> a écrit dans le message
de news:%23eIqiukoEHA.3900@TK2MSFTNGP10.phx.gbl...
Bonjour,
Pour boucler tous les fichiers d'un dossier, un paquet d'exemples par
là:
http://frederic.sigonneau.free.fr
Pour lire un fichier texte et séparer les éléments dans une ligne de
classeur Excel:
La macro ci-dessous fonctionne (Pascal Engelmajer MPFE 26-04-2004) si ce n'est que je vais devoir renommer mes fichiers Form01.csv, Form02.csv, Form03.csv etc. et non pas Form Societe AAAAA.csv, Form Societe ABCDEF.csv, Form Societe WDXDD.csv, etc. Meme si cela n'est pas optimal et à moins que quelqu'un est une autre solution, je peux m'en accommoder.
En revanche, ne souhaitant pas changer la macro en fonction du nombre de fichiers à compiler j'ai choisi de faire 100 boucles mais la macro plante par exemple aprés 58 boucles si je n'ai que 58 fichiers dans C:forms parce que le fichier C:formsform59.csv est introuvable. Comment puis-je remédier à cela?
Merci d'avance.
Christophe
Sub Conbinesheets() Dim wb As Workbook Dim wsCible As Worksheet Dim ws As Worksheet Dim cpy As Variant Dim fic As String Dim adrCible As String Dim derLigneCible As Integer Dim nbLigneSource As Integer Dim no As String * 2 Dim iFic As Integer Dim i As Integer Application.ScreenUpdating = False Set wsCible = ThisWorkbook.Sheets(1) derLigneCible = 1 For iFic = 1 To 10 no = Format(iFic, "0#") fic = "C:formsForm" & no & ".csv" Set wb = Workbooks.Open(fic) Set ws = wb.Sheets(1) nbLigneSource = ws.Range("A65535").End(xlUp).Row For i = 1 To nbLigneSource adrCible = "A" & derLigneCible cpy = ws.Rows(i).Value wsCible.Range(adrCible).EntireRow.Value = cpy derLigneCible = derLigneCible + 1 Next i Application.DisplayAlerts = False wb.Close Application.DisplayAlerts = True Next iFic Application.ScreenUpdating = True End Sub
"Clément Marcotte" a écrit dans le message de news:%
Bonjour,
Pour boucler tous les fichiers d'un dossier, un paquet d'exemples par là:
http://frederic.sigonneau.free.fr
Pour lire un fichier texte et séparer les éléments dans une ligne de classeur Excel: