[VBA-E] Comment convertir 3000 fichiers de .csv à .xls?? (Attention prise de têt
maximecdb
Messages postés5Date d'inscriptionmardi 24 avril 2007StatutMembreDernière intervention25 avril 2007
-
25 avril 2007 à 00:02
Utilisateur anonyme -
6 mai 2012 à 17:56
Salut,
Je suis en stage depuis 2 semaines, et l'un de mes premiers boulot est
de concaténer plein de données a la suite
et je piétine depuis deux jours (pour info, ca fait aussi deux jours que
j'ai commencé vba)
Voici le probleme: Je dois mettre à la suite une centaine de tableaux
excel (en fait du .csv, ce qui me pose probleme) issus de simulation
statistiques(meme nombre de colonnes).
Les chemins de ces fichiers
(C:\utilisateur\mesdocuments.....\tableauXX.csv) sont listés dans un
tableau excel
Je dois donc prendre ces noms de de fichier, les convertir et les ouvrir
en excel, et les copier à la suite dans un grand fichier excel, en
enlevant a chaque fois la première ligne. C'est la partie conversion qui me pose de gros problemes, malgrés les infos trouvées les forums.
J'ai deja fait plusieurs tentatives...voici la derniere
.......................................
'Boucle qui va chercher le chemin des fichier a convertir, et les places
dans la varible Fich1
Option Explicit
Private Sub Command1_Click()
Dim Fich1$
Dim i As Integer
For i = 1 To 30
Fich1 = Worksheets("feuil2").Cells(i, 1)
Application.DisplayAlerts = False
Workbooks.Open _
Filename:=Fich1 'ouvre le fichier csv,
ActiveWorkbook.SaveAs Filename:="C:\Documents and
Settings\Utilisateur\Bureau\testb.xls", _
FileFormat:=xlWorkbookNormal 'et le réenregistre à la meme place sous
forme xls...en fait ca ne marche pas...
ActiveWorkbook.Close
Application.DisplayAlerts = True
Next i
End Sub
En esperant que ca voux paraiteras moins hermétique qu'a moi...Merci d'avance!!.
Max
A voir également:
[VBA-E] Comment convertir 3000 fichiers de .csv à .xls?? (Attention prise de têt
maximecdb
Messages postés5Date d'inscriptionmardi 24 avril 2007StatutMembreDernière intervention25 avril 2007 25 avril 2007 à 00:25
Merci pour ta réponse;
C'est ce que j'ai essayé de faire, mais le programme que j'utilise pour concaténer les tableaux, que j'ai récuperé sur le internet (de frederic sigonneau) ne prend malheureusement pas en charge les .csv
......
'J'ai plusieurs fichiers xls, construits selon la même architecture.
'Une première ligne de "titres", puis des données, sur chacune des lignes.
'Je souhaite qu'un autre fichier "synthétise" tous les
'fichiers "sources".
'Une solution de consolidation utilisant ADO :
'Les données sont lues sans ouvrir les fichiers source et copiées
'dans le fichier cible à la suite des données déjà présentes.
'Les données lues et recopiées sont les données entières de la feuille passée en
maximecdb
Messages postés5Date d'inscriptionmardi 24 avril 2007StatutMembreDernière intervention25 avril 2007 25 avril 2007 à 00:29
Padon, j'a coupé la suite du code!
Public Sub ConsoDatas(NomFichier$, FeuilleSource$, FeuilleCible$)
'Va chercher dans le classeur NomFichier (sans l'ouvrir) les données
'de la feuille FeuilleSource et les copie dans la feuille FeuilleCible
'du classeur actif, à la suite des données (éventuellement) déjà présentes.
'(La ligne d'entêtes de FeuilleSource n'est pas importée)
'inspiré de Rob Bovey, mpep
'nécessite une référence à la librairie
'Microsoft ActiveX Data Object 2.x Library
Dim rsData As ADODB.Recordset
Dim szConnect As String
Dim szSQL As String
Dim Li&, FeuilleDest
' La requête est basée sur le nom de la feuille. Ce nom
' doit se terminer par un $ et doit être entouré de crochets droits.
szSQL = "SELECT * FROM [" & FeuilleSource & "$];"
Set rsData = New ADODB.Recordset
rsData.Open szSQL, szConnect, adOpenForwardOnly, _
adLockReadOnly, adCmdText
'où envoyer les données :
Set FeuilleDest = ActiveWorkbook.Sheets(FeuilleCible)
Li = FeuilleDest.Range("A65536").End(xlUp).Row + 1
'envoi sur la première ligne vide
If Not rsData.EOF Then
FeuilleDest.Range("A" & Li).CopyFromRecordset rsData
Else
'si la source était vide...
MsgBox "Aucun enregistrement renvoyé.", vbCritical
End If
''' On nettoie pour finir...
rsData.Close
Set rsData = Nothing
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 25 avril 2007 à 00:34
Mais je comprends ton problème de CSV.
Chez moi, si je créer un fichier texte sur le bureau, je met dedans
aaaaaa;ddddddddd
je ferme et j'enregistre. Ensuite je change .txt et .csv, si je l'ouvre, il s'ouvre avec excel, aaaaa dans la colonne A, et dddd dans la colonne B.
Bref, tout ça pour dire, csv ou pas csv (xls), c'est pareil.
Tu peux très bien faire
WorkBooks.Open "C:\classeur.XLS"
ou
WorkBooks.Open "C:\fichier.CSV"
Avec le csv, si je fais MsgBox Range("A1").Value, il me donnera --> aaaaaa
Conclusion : si tu sais piloter un classeur excel, tu sais piloter un fichier à séparateur de virgule
Pour ton second message, peut pas t'aider, je ne travaile pas avec des requêtes sur Excel
@++
<hr width="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
Vous n’avez pas trouvé la réponse que vous recherchez ?
ahmedbett
Messages postés1Date d'inscriptionlundi 31 décembre 2012StatutMembreDernière intervention 6 mai 2012 6 mai 2012 à 06:51
salut,
Je suis un etudiant et je suis entrain de preparer mon Projet Fin d'Etude .Je suis débutant en language VB et svp je vous demande de vous me aide .
Mon problem est :
J'ai un fichier sans extension et je veux changer son extension à .xls
et merçi .