Conversion csv -> xls d'un repertoire complet
Résolu
beneton
Messages postés
66
Statut
Membre
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour à tous,
j'ai une centaine de fichiers csv, que je souhaite convertir en xls (avec comme separateur les ; ).
j'ai trouvé un logiciel sympas: converterXLS
mais c'est logiciel à installé, et sur mon pc du boulot, je n'ai pas les droit administrateur pour.
existe t il quelque chose avec juste un executable?
(ou une autre méthode)
merci
j'ai une centaine de fichiers csv, que je souhaite convertir en xls (avec comme separateur les ; ).
j'ai trouvé un logiciel sympas: converterXLS
mais c'est logiciel à installé, et sur mon pc du boulot, je n'ai pas les droit administrateur pour.
existe t il quelque chose avec juste un executable?
(ou une autre méthode)
merci
A voir également:
- Conversion csv -> xls d'un repertoire complet
- Telechargement film d'action complet en francais - Télécharger - TV & Vidéo
- Telecharger fl studio 20 pour pc gratuit complet - Télécharger - Édition & Montage
- Telecharger film complet sur mobile gratuit - Télécharger - TV & Vidéo
- Télécharger photoshop gratuit complet - Télécharger - Montage photo
- Répertoire téléphonique gratuit - Télécharger - Bureautique
43 réponses
Salut
tu veux les convertir tous en une seule fois ou un par un ?
si un par un tu le fais à partir d'excel : ouvrir le csv avec excel puis menu Données / convertir
pour le logiciel que tu as trouvé essaye de l'installer ailleurs que dans ProgramFiles
tu veux les convertir tous en une seule fois ou un par un ?
si un par un tu le fais à partir d'excel : ouvrir le csv avec excel puis menu Données / convertir
pour le logiciel que tu as trouvé essaye de l'installer ailleurs que dans ProgramFiles
je veux en une seul fois. y a quant méme 100 fichiers et ca arrive souvent.
j'ai essayé de l'installé ayeur que dans program files, mais il met des fichier dll dans system32 et c'est la que ca coince
j'ai essayé de l'installé ayeur que dans program files, mais il met des fichier dll dans system32 et c'est la que ca coince
je l'ai testé chez moi, et il marche bien. voici le lien: http://www.convert-files.com/Download/CX.EXE
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Normalement quand tu ouvre un fichier csv avec excel il n'y a besoin de rien d'autre. Suffit juste de le sauver sous.. avec extention xls
Il y à moyen de faire ça facilement avec une petite macro VBA
A+
Normalement quand tu ouvre un fichier csv avec excel il n'y a besoin de rien d'autre. Suffit juste de le sauver sous.. avec extention xls
Il y à moyen de faire ça facilement avec une petite macro VBA
A+
salut! le probléme c'est qu'il garde le contenu telquel, il ne fait pas les separations des ;
deplus, il faut inserrer la macro dans chaque fichier. c'est un peu lourd
deplus, il faut inserrer la macro dans chaque fichier. c'est un peu lourd
Négatif, si tu l'ouvre à partir d'excel ça fonctionne pas, mais en l'ouvrant à partir de l'explorateur, excel fait automatiquement les séparations.
Ensuite reste à les sauver sous xls.
Je cherche pour importer directement du csv (je connais pour texte mais pas pour csv).
Il ne faudrait pas mettre une macro dans chaque classeur mais une seule à partir d'un classeur général.
Et si ce n'est que pour une seule fois ça vaudrait peut-être la peine de le faire en manuel.
Ensuite reste à les sauver sous xls.
Je cherche pour importer directement du csv (je connais pour texte mais pas pour csv).
Il ne faudrait pas mettre une macro dans chaque classeur mais une seule à partir d'un classeur général.
Et si ce n'est que pour une seule fois ça vaudrait peut-être la peine de le faire en manuel.
OK..... J'ai trouver un système.
Tu ouvre un classeur (moi je l'ai nommer "EssaisCvsXls.xls" mais pas obligé
Dans un module public ce code
Je n'ai pas mis de sélection chemin, je te laisse le soins de le mettre en manuel.
Je te conseil aussi de mettre un point d'arret pour ne faire qu'un fichier à la fois pour les tests.
De stoper après le premier et de bien controller que c'est OK (chez moi c'est nickel mais ont ne sait jamais)
Je n'ai pas prévu non plus d'éliminer le fichier cvs, dans un premier temps c'est plus prudent.
Mais il n'y aurais que 2 lignes à ajouter pour les supprimer en automatique.
Pour fichier cvs avec séparateur = ","
Tu dis
A+
Tu ouvre un classeur (moi je l'ai nommer "EssaisCvsXls.xls" mais pas obligé
Dans un module public ce code
Sub Recupfile()
Dim fs, F, f1, s, sf
Dim Ext As String, Chemin As String
Dim i As Long, Fin As Long
Ext = "csv"
'Initialiser le chemin en manuel
Chemin = "C:\"
Set fs = CreateObject("Scripting.FileSystemObject")
Set F = fs.GetFolder(Chemin)
Set sf = F.Files
For Each f1 In sf
'Debug.Print f1.Name
If LCase(Right(f1.Name, 3)) = Ext Then
ConvertiCvsXls Chemin, f1.Name
End If
Next
End Sub
Sub ConvertiCvsXls(Chemin As String, Fichier As String)
Dim TB
Dim Lig As Long, i As Integer, NvNom As String
Workbooks.Open Filename:=Chemin & Fichier
With ActiveSheet
For Lig = 1 To Range("A65536").End(xlUp).Row
TB = Split(.Cells(Lig, 1), ",")
For i = 0 To UBound(TB) - 1
.Cells(Lig, i + 1) = TB(i)
Next i
Next Lig
End With
Fichier = Left(Fichier, Len(Fichier) - 3) & "xls"
ActiveWorkbook.SaveAs Chemin & Fichier
Workbooks(Fichier).Close SaveChanges:=False
End Sub
Je n'ai pas mis de sélection chemin, je te laisse le soins de le mettre en manuel.
Je te conseil aussi de mettre un point d'arret pour ne faire qu'un fichier à la fois pour les tests.
De stoper après le premier et de bien controller que c'est OK (chez moi c'est nickel mais ont ne sait jamais)
Je n'ai pas prévu non plus d'éliminer le fichier cvs, dans un premier temps c'est plus prudent.
Mais il n'y aurais que 2 lignes à ajouter pour les supprimer en automatique.
Pour fichier cvs avec séparateur = ","
Tu dis
A+
J'ai pas penser de te dire,
La macro est valable pour un nombre de colonne indéterminé mais si tes fichiers ont tous la même structure il y a moyen de faire plus rapide
La macro est valable pour un nombre de colonne indéterminé mais si tes fichiers ont tous la même structure il y a moyen de faire plus rapide
y a qu'un truc qui fonctionne pas, c'est le separateur ",".
j'ai le fichier xls mais avec le méme contenu que le csv. tout en une colonne
edit: je vient de m'apercevoire que sur chaque ligne, il me manque les info jusqu'a la premier virgule
exemple:
csv=
29-DEC-2008 03:00:02.163,100.0,100.0,100.0,49.668750000000003,49.668750000000003,41.5,41.5,0.0,1.0,98.78125,67.534374999999997,67.534374999999997,65.0,54.450000000000003,0.0,15.7125,10.821875,13.4,100.0,0.0,9.6000000000000014,31.900000000000002,18.600000000000001,17.5,0
xls= 00:00.0,100,100,100,49.66875,49.66875,41.5,41.5,0,1,98.78125,67.534375,67.534375,65,54.45,0,15.7125,10.821875,13.4,100,0,9.6,31.9,18.6,17.5,0
j'ai le fichier xls mais avec le méme contenu que le csv. tout en une colonne
edit: je vient de m'apercevoire que sur chaque ligne, il me manque les info jusqu'a la premier virgule
exemple:
csv=
29-DEC-2008 03:00:02.163,100.0,100.0,100.0,49.668750000000003,49.668750000000003,41.5,41.5,0.0,1.0,98.78125,67.534374999999997,67.534374999999997,65.0,54.450000000000003,0.0,15.7125,10.821875,13.4,100.0,0.0,9.6000000000000014,31.900000000000002,18.600000000000001,17.5,0
xls= 00:00.0,100,100,100,49.66875,49.66875,41.5,41.5,0,1,98.78125,67.534375,67.534375,65,54.45,0,15.7125,10.821875,13.4,100,0,9.6,31.9,18.6,17.5,0
ok,
pour que le fichier soit moin volumineux, je l'ai réduit à 1700ligne, mais normalement, il y en à 10000
http://cjoint.com/data/cnupaFIZoj.htm
es ce que, a tout hasard, tu connaitrait la une ligne de commande pour le chemin? exemple, mettre le chemin de l'emplacement du fichier convertircsvxls .
pour que le fichier soit moin volumineux, je l'ai réduit à 1700ligne, mais normalement, il y en à 10000
http://cjoint.com/data/cnupaFIZoj.htm
es ce que, a tout hasard, tu connaitrait la une ligne de commande pour le chemin? exemple, mettre le chemin de l'emplacement du fichier convertircsvxls .
Je suis occupé à rendre l'appli automatique et quand ce serra terminer je la mettrais dans une astuce.
Je te communiquerais le lien.
Pour info : J'ai trouvé le problème sur ton fichier, le séparateur n'est pas la virgule (comme normal) mais le point.
Dans la ligne
TB = Split(.Cells(Lig, 1), ".")
Remplace la virgule par un point et tu refait un essais, tu va voir ça va.
Attention, par exemple pour tes dates il te manque les secondes mais il faudra formater les colonnes suivant ce que tu veux.
Je te communiquerais le lien.
Pour info : J'ai trouvé le problème sur ton fichier, le séparateur n'est pas la virgule (comme normal) mais le point.
Dans la ligne
TB = Split(.Cells(Lig, 1), ".")
Remplace la virgule par un point et tu refait un essais, tu va voir ça va.
Attention, par exemple pour tes dates il te manque les secondes mais il faudra formater les colonnes suivant ce que tu veux.
Il y a plein d'erreur sur ton fichier...
1°) le séparateur de la 1ère ligne est la virgule et les suivantes c'est le point. Mais bon, s'il sont tous comme ça je pourrais encore y remédier.
2°) il y a des nombres... tel que 668750000000003,49. et 668750000000003,41 ?? aucun séparateur
or sur d'autres lignes dans la même colonne
40625,49. et 40625,41
Que viennent faires tout ces zéros ? sans séparateur ? c'est juste ?
pour info..
29-DEC-2008 03:00:02.163,100.0,100.0,100.0,49.668750000000003,49.668750000000003,41.
5,41.5,0.0,1.0,98.78125,67.534374999999997,67.534374999999997,65.0,54.450000000000003,0.
0,15.7125,10.821875,13.4,100.0,0.0,9.6000000000000014,31.
900000000000002,18.600000000000001,17.5,0
1°) le séparateur de la 1ère ligne est la virgule et les suivantes c'est le point. Mais bon, s'il sont tous comme ça je pourrais encore y remédier.
2°) il y a des nombres... tel que 668750000000003,49. et 668750000000003,41 ?? aucun séparateur
or sur d'autres lignes dans la même colonne
40625,49. et 40625,41
Que viennent faires tout ces zéros ? sans séparateur ? c'est juste ?
pour info..
29-DEC-2008 03:00:02.163,100.0,100.0,100.0,49.668750000000003,49.668750000000003,41.
5,41.5,0.0,1.0,98.78125,67.534374999999997,67.534374999999997,65.0,54.450000000000003,0.
0,15.7125,10.821875,13.4,100.0,0.0,9.6000000000000014,31.
900000000000002,18.600000000000001,17.5,0
non, les separteur son que les , les points sont pour les virgule des nombres à 1millionaime de décimale,
pour que tu comprenne, j'ai le fichier xls converti correct : https://www.cjoint.com/?copwYLpuNb
pour que tu comprenne, j'ai le fichier xls converti correct : https://www.cjoint.com/?copwYLpuNb
ta date, elle à toujours 163 milliseconde ?????
Si oui... C'est ça qui me perturbe depuis le début
Ton séparateur décimale dans excel c'est quoi ? le point ou la virgule.
J'ai essayé de faire des calculs sur ta copie !! tu a essayé?
Evidemment ça dépend du but de la modif en xls, si c'est juste pour voir !
Si oui... C'est ça qui me perturbe depuis le début
Ton séparateur décimale dans excel c'est quoi ? le point ou la virgule.
J'ai essayé de faire des calculs sur ta copie !! tu a essayé?
Evidemment ça dépend du but de la modif en xls, si c'est juste pour voir !
Je crois que j'ai trouver la spécificité de ton fichier.
Le séparateur est bien la virgule SAUF après la date ou c'est un point !!!!!!!
La sub est un peu plus compliquée et ne pourra servir que pour tes fichiers, normalement le séparateur est le même pour tout le fichier.
Remplace la macro ConvertiCvsXls
par celle-ci
Bien entendu ça va durer un peu plus longtemps.
tu dis...
Le séparateur est bien la virgule SAUF après la date ou c'est un point !!!!!!!
La sub est un peu plus compliquée et ne pourra servir que pour tes fichiers, normalement le séparateur est le même pour tout le fichier.
Remplace la macro ConvertiCvsXls
par celle-ci
Sub ConvertiCvsXlsSPECIAL()
Dim TB, PR, Txt As String
Dim Lig As Long, i As Integer, AncNom As String
AncNom = Fichier
Workbooks.Open Filename:=Chemin & Fichier
With ActiveSheet
For Lig = 1 To Range("A65536").End(xlUp).Row
If Lig > 1 Then
PR = Split(.Cells(Lig, 1), ".")
TB = Split(Mid(.Cells(Lig, 1), Len(PR(0)) + 2), ",")
Else
PR = Split(.Cells(Lig, 1), ",")
TB = Split(Mid(.Cells(Lig, 1), Len(PR(0)) + 2), ",")
End If
.Cells(Lig, 1) = PR(0)
For i = 1 To UBound(TB) - 1
.Cells(Lig, i + 1) = TB(i - 1)
Next i
Next Lig
End With
Fichier = Left(Fichier, Len(Fichier) - 3) & "xls"
If Dir(Chemin & Fichier) = "" Then
'le fichier xls n'existe pas encore
ActiveWorkbook.SaveAs Chemin & Fichier
Workbooks(Fichier).Close SaveChanges:=False
Else
'le fichier xls existe, voir si ont l'écrase sans tomber en erreur.
If MsgBox("Le fichier " & Fichier & " existe déjà" & Chr(13) _
& "Faut-il l'écraser ?", vbQuestion + vbYesNo, "Ecraser fichier") = 6 Then
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Chemin & Fichier
Workbooks(Fichier).Close SaveChanges:=False
Application.DisplayAlerts = True
Else
Workbooks(AncNom).Close SaveChanges:=False
End If
End If
If SuppFichier Then
'supprime le fichier cvs
Kill Chemin & AncNom
End If
End Sub
Bien entendu ça va durer un peu plus longtemps.
tu dis...
Autre constatations,
Excel ne prend pas de format date avec des millièmes de seconde, donc ça doit rester en texte
Même en format Double, excel ne prend pas les millionn!ème de milliardième
49.306,250,000,000,006 ??
maximum sur excel...
49,493.750.000.000.6
Excel ne prend pas de format date avec des millièmes de seconde, donc ça doit rester en texte
Même en format Double, excel ne prend pas les millionn!ème de milliardième
49.306,250,000,000,006 ??
maximum sur excel...
49,493.750.000.000.6
je suis pas au milliardieme de seconde prés XD
ton script ne fonctionne pas, j'ai fait un imprime ecran de l'erreur et du débogueur: http://cjoint.com/data/cotgk0Ot4d.htm
ton script ne fonctionne pas, j'ai fait un imprime ecran de l'erreur et du débogueur: http://cjoint.com/data/cotgk0Ot4d.htm
Je peu lire ton fichier de la façon que tu veux mais tu ne répond pas à mes questions à savoir,
Quel est le but ? Faire des opérations sur les données ? auquel cas, l'exemple que tu met sur Cjoint ne le permet pas.
Ou bien, ce sont les données en texte qui t'intéresse ?
En fonction de ta réponse je te passerait la macros finale.
Quel est le but ? Faire des opérations sur les données ? auquel cas, l'exemple que tu met sur Cjoint ne le permet pas.
Ou bien, ce sont les données en texte qui t'intéresse ?
En fonction de ta réponse je te passerait la macros finale.