Rechercher : dans
Par :

Conversion csv -> xls d'un repertoire complet

Dernière réponse le 19 fév 2009 à 19:27:12 beneton, le 11 fév 2009 à 11:59:38 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « conversion csv > xls d'un repertoire complet » dans :
Excel - Convertir fichier(s) CSV / XLS Voir Comme dit dans le titre, cette application convertit des fichiers CSV en fichiers XLS N’est pas nécessaire pour Excel 2007, ce dernier faisant la conversion automatiquement La conversion n’ayant pas de mise en forme, en cas de modification...
Convertir une vidéo pour votre iPhone ou votre iPod VoirVous voulez convertir une vidéo pour pouvoir la lire dans votre iPhone ou iPod ? Voici comment faire : Installation du logiciel Importation de la vidéo Paramètres de la conversion Installation du logiciel Pour convertir nos vidéos,...
Transformer un fichier Microsoft Excel (.xls) en PDF VoirTransformer en fichier PDF un fichier Microsoft Excel (.xls) Rien de plus simple ! Ouvrez votre fichier *.xls avec OpenOffice.org Réglez éventuellement la mise en page par le menu Format / Page... Dès lors, 2 solutions pour transformer en...
[MS-Dos] Lister le contenu d'un répertoire dans un fichier VoirIl peut s'avérer pratique d'effectuer le listage d'un ou plusieurs répertoires dans un fichier, afin de tenir par exemple un catalogue de fichiers. Sous MS-Dos (ou sous Windows en ouvrant une fenêtre d'invite de commande MS-Dos) il est possible...
Télécharger FolderSize VoirParfois on se demande pourquoi une fonction est absente sur Windows alors qu'apparemment c'est indispensable. Et bien cet utilitaire en fait partie. Folder Size, comme son nom l'indique, affiche la taille d'un dossier ou d'un répertoire complet. Il...

1

UsulArrakis, le 11 fév 2009 à 12:41:52
  • +2

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
(_Usul d'Arrakis
    Serial_Dreamer_)

Répondre à UsulArrakis

2

beneton, le 11 fév 2009 à 12:47:58

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

Répondre à beneton

3

UsulArrakis, le 11 fév 2009 à 13:21:25

Tu as le lien pour ton logiciel que je vérifie qu'il fait bien ce que tu souhaites
(_Usul d'Arrakis
    Serial_Dreamer_)

Répondre à UsulArrakis

4

beneton, le 11 fév 2009 à 14:25:38

Je l'ai testé chez moi, et il marche bien. voici le lien: http://www.convert-files.com/Download/CX.EXE

Répondre à beneton

5

lermite222, le 11 fév 2009 à 15:13:17

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+ L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

6

beneton, le 11 fév 2009 à 15:25:37

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

Répondre à beneton

7

lermite222, le 11 fév 2009 à 15:50:41

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.
L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

8

beneton, le 11 fév 2009 à 17:41:13

Malheureusement, ca va m'arriver souvent

Répondre à beneton

9

lermite222, le 11 fév 2009 à 18:28:55

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

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+ L'expérience instruit plus sûrement que le conseil. (André Gide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

10

lermite222, le 11 fév 2009 à 18:58:03

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 L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

11

beneton, le 11 fév 2009 à 19:47:46

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

Répondre à beneton

12

lermite222, le 11 fév 2009 à 20:09:19

Tu peu pas me passer un de tes fichier cvs ?
si oui, tu met sur Cjoint.com et tu met le lien dans un poste suivant
Mais ce serra pour demain.
A+ L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

13

beneton, le 11 fév 2009 à 20:25:41

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 .

Répondre à beneton

14

lermite222, le 12 fév 2009 à 10:13:23

HaaaaaaaHa , beh ça fonctionne impec.
FAUDRAIT JUSTE VOIR A ELARGIR LES COLONNES !!!!!

L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

15

beneton, le 12 fév 2009 à 13:05:47

J'ai du me planter quelque par alors car ca ne marche pas de mon cotés

Répondre à beneton

16

lermite222, le 12 fév 2009 à 13:49:51

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. L'expérience instruit plus sûrement que le conseil. (André Gide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

17

lermite222, le 12 fév 2009 à 14:30:44

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.6687500­00000003,41.
5,41.5,0.0,1.0,98.78125,67.534374999999997,67.53437499999999­7,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

L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

18

beneton, le 12 fév 2009 à 15:24:27

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 : http://cjoint.com/?copwYLpuNb

Répondre à beneton

20

lermite222, le 12 fév 2009 à 15:32:18

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 !
L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

19

lermite222, le 12 fév 2009 à 15:28:54

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

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... L'expérience instruit plus sûrement que le conseil. (André Gide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

21

lermite222, le 12 fév 2009 à 16:40:28

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 L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

22

beneton, le 12 fév 2009 à 19:08:53

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

Répondre à beneton