|
|
|
|
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
Je l'ai testé chez moi, et il marche bien. voici le lien: http://www.convert-files.com/Download/CX.EXE |
Bonjour,
|
Répondre à beneton
|
OK..... J'ai trouver un système.
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) |
J'ai pas penser de te dire,
|
Y a qu'un truc qui fonctionne pas, c'est le separateur ",".
|
Ok,
|
Je suis occupé à rendre l'appli automatique et quand ce serra terminer je la mettrais dans une astuce.
|
Il y a plein d'erreur sur ton fichier...
|
Non, les separteur son que les , les points sont pour les virgule des nombres à 1millionaime de décimale,
|
Je crois que j'ai trouver la spécificité de ton fichier.
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) |
Autre constatations,
|
Je suis pas au milliardieme de seconde prés XD
|