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
- Comment ouvrir un fichier xls? - Guide
- Télécharger photoshop gratuit complet - Télécharger - Montage photo
43 réponses
en gros, se fichier est un historique des valeur de process d'une chaufferrie et du reseau urbain.
se sont les temperatures , pression, valeur d'ouverture de vanne,ect...
on s'en sert pour faire des courbe, vérifier qu'il n'y a pas eu de depassement, faire des calcul, etc.
je pense qu'il faut donc le format adapté. date, et valeur. pour les valeurs, 2 chiffre aprés la virgule suffit. pour la date, on peut s'arrété à la seconde prés.
j'espere avoir répondu à tes question. si tu en a d'autre n'hésite pas
edit: j'ai oublié de te dire, j'utilise exel 2007 chez moi. je ne sais pas si sa a son importance
se sont les temperatures , pression, valeur d'ouverture de vanne,ect...
on s'en sert pour faire des courbe, vérifier qu'il n'y a pas eu de depassement, faire des calcul, etc.
je pense qu'il faut donc le format adapté. date, et valeur. pour les valeurs, 2 chiffre aprés la virgule suffit. pour la date, on peut s'arrété à la seconde prés.
j'espere avoir répondu à tes question. si tu en a d'autre n'hésite pas
edit: j'ai oublié de te dire, j'utilise exel 2007 chez moi. je ne sais pas si sa a son importance
Je ne pense pas qu'il y aura un problème avec excel 2007
J'ai contourner ton problème en faisant une appli qui laisse tout les choix possibles
Je l'ai testée et c'est OK
NB: Pour la colonne des dates si tu sélectionne Nombre ou Standard il faut formatter les cellules
En Standard les nombres sont afficher avec les décimales d'origine
En numérique ils sont tous avec 3 décimales.
Dés que j'ai terminer la rédaction de l'astuce je te passe le lien.
J'ai contourner ton problème en faisant une appli qui laisse tout les choix possibles
Je l'ai testée et c'est OK
NB: Pour la colonne des dates si tu sélectionne Nombre ou Standard il faut formatter les cellules
En Standard les nombres sont afficher avec les décimales d'origine
En numérique ils sont tous avec 3 décimales.
Dés que j'ai terminer la rédaction de l'astuce je te passe le lien.
c'est présque tout nickel. bonne idée le coup de la boite de dialogue. (j'utilise la conversion numérique)
mais la premier colone reste au format texte avec la valeur "39811" au lieu d'une date
mais la premier colone reste au format texte avec la valeur "39811" au lieu d'une date
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ca marche pas. ta conversion du début me modifie toute la colonne à la méme date: exemple 29/12/2008 00:00:00 sur toute la colonne
Tu doit employer le format Standard, quand il y a des dates avec des heures c'est du type 39811,1253722569
et en format numérique tu n'a plus que 3 décimales.
Et ajouter les 2 lignes ci-dessous avant le With
Mais en principe, c'est chacun qui doit adapter suivant ses besoins, en cherchant un peu tu aurais trouver
A+
et en format numérique tu n'a plus que 3 décimales.
Et ajouter les 2 lignes ci-dessous avant le With
Cells.NumberFormat = "0.000"
Columns("A:A").NumberFormat = "dd mmm yyyy hh:mm:ss"
Mais en principe, c'est chacun qui doit adapter suivant ses besoins, en cherchant un peu tu aurais trouver
A+
Comprend pas, je fait exactement...
Sélection Standard
et ajouter les 2 lignes.
résultat
https://www.cjoint.com/?cqjEb6FVPa
a+
EDIT, il y a autre chose qui cloche, c'est le format pour sauver, j'ai rectifier sur la démo
2 lignes à modifier (ou a ajouter une partie)
ActiveWorkbook.SaveAs Filename:=Chemin & Fichier, FileFormat:=xlExcel5
Sélection Standard
et ajouter les 2 lignes.
résultat
https://www.cjoint.com/?cqjEb6FVPa
a+
EDIT, il y a autre chose qui cloche, c'est le format pour sauver, j'ai rectifier sur la démo
2 lignes à modifier (ou a ajouter une partie)
ActiveWorkbook.SaveAs Filename:=Chemin & Fichier, FileFormat:=xlExcel5
oui, merci, mais ca résoud toujours pas le probléme de ma colone où la date et l'heure sont toute les méme alors qu'entre chaque ligne y devrai y avoir 10 seconde de plus a chaque fois.
en plus, quand j'ouvre le fichier converti et sauvegardé, il y a un message "se fichier n'a pas le format correct, voulais vous quand méme ouvrir?" je mets oui, et je me retrouve avec le méme fichier qu'au départ(tout en une colonne, comme s'il n'a pas été converti)
en plus, quand j'ouvre le fichier converti et sauvegardé, il y a un message "se fichier n'a pas le format correct, voulais vous quand méme ouvrir?" je mets oui, et je me retrouve avec le méme fichier qu'au départ(tout en une colonne, comme s'il n'a pas été converti)
OK, sur le 2007 c'est différent, j'ai du tester pour trouver.
En fait le 2007 fait directement la convertion (sans rien signaler).
Donc faut modifier la macros, elle ne te servira plus que pour convertir tout le répertoir et faire la mise en forme des colonnes. (mais plus pour convertir csv/xls qui est pris en charge directement par Excel2007)
Tu dis, et en fonction de ta réponse je modifiérais la démo.
En fait le 2007 fait directement la convertion (sans rien signaler).
Donc faut modifier la macros, elle ne te servira plus que pour convertir tout le répertoir et faire la mise en forme des colonnes. (mais plus pour convertir csv/xls qui est pris en charge directement par Excel2007)
'Convertir un fichier cvs en xls (EXCEL 2007) .
Sub ConvertiCvsXls()
Dim TB
Dim Lig As Long, i As Integer, AncNom As String
AncNom = Fichier
Workbooks.Open Filename:=Chemin & Fichier
Application.DisplayAlerts = False
Application.ScreenUpdating = False
With ActiveSheet
Cells.NumberFormat = "0.000"
Columns("A:A").NumberFormat = "dd mmm yyyy hh:mm:ss"
End With
If SauveXLS Then
Fichier = Left(Fichier, Len(Fichier) - 3) & "xls"
If Dir(Chemin & Fichier) = "" Then
'le fichier xls n'existe pas encore
ActiveWorkbook.SaveAs Filename:=Chemin & Fichier, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled
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 Filename:=Chemin & Fichier, FileFormat:= _
xlOpenXMLWorkbookMacroEnabled
Workbooks(Fichier).Close SaveChanges:=False
Application.DisplayAlerts = True
ElseIf Tous Then
'Eviter la surcharge de classeur si tous les fichiers
Workbooks(AncNom).Close SaveChanges:=False
Else
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Sub
End If
End If
End If
If SuppFichier Then
'supprime le fichier cvs
Kill Chemin & AncNom
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Tu dis, et en fonction de ta réponse je modifiérais la démo.
avant l'ouverture de l'explorateur pour choisir un fichier, il y a un bug sur la ligne:
If SelectionFichier() Then
ConvertiCvsXls
je sais pas si s'est parce que je mal inserré.
If SelectionFichier() Then
ConvertiCvsXls
je sais pas si s'est parce que je mal inserré.
j'ai bien lu et compris. mais ton script ne fonctionne pas chez moi. de plus y va y avoir probléme: j'ai 2 poste a mon boulot où je suis suceptible de faire les conversion et il y en a un avec ecxel 2007 et l'autre 2003
je suis entrain de désespérer
je suis entrain de désespérer
Bon désespère pas.. :-)
L'erreur que tu signale ne peut être due qu'a une maivaise insertion de la fonction.
Tu devais la mettre A LA PLACE DE CELLE EXISTANTE, cad d'abord supprimé l'existente et ENSUITE coller la nouvelle à la même place.(dans le même module)
NB: quand il y a une erreur signalée c'est important de donner sont N° et le libellé de l'erreur.
J'ai tester sur 2007 et la fonction ci dessus fonctionne impec.
La version dans la démo fonctionne sur le 2000
Tu veux quoi?
Une version unique qui prend en compte les différences (possible, je l'avais fait mais je l'ai supprimé)
Ou bien une version pour 2007 et une version pour 2000>2003
?? tu dis
L'erreur que tu signale ne peut être due qu'a une maivaise insertion de la fonction.
Tu devais la mettre A LA PLACE DE CELLE EXISTANTE, cad d'abord supprimé l'existente et ENSUITE coller la nouvelle à la même place.(dans le même module)
NB: quand il y a une erreur signalée c'est important de donner sont N° et le libellé de l'erreur.
J'ai tester sur 2007 et la fonction ci dessus fonctionne impec.
La version dans la démo fonctionne sur le 2000
Tu veux quoi?
Une version unique qui prend en compte les différences (possible, je l'avais fait mais je l'ai supprimé)
Ou bien une version pour 2007 et une version pour 2000>2003
?? tu dis
si j'ai 2 version qui fonctionne ca me va. je reteste le tout, et je te dis(bien que pour la version exel 2003 se sera pour jeudi). merci
salut!
j'ai testé sur exel2003, la conversion fonction correctement (en fesant les modif que tu as dit post 33)
mais la sauvegarde de tout le dossier ne fonctionne pas. il manque la syntaxe "/" sur le chemin
http://cjoint.com/data/cvnTqLFP4b.htm
je pense que c'est une bricole, mais je ne sais pas où.
j'ai testé sur exel2003, la conversion fonction correctement (en fesant les modif que tu as dit post 33)
mais la sauvegarde de tout le dossier ne fonctionne pas. il manque la syntaxe "/" sur le chemin
http://cjoint.com/data/cvnTqLFP4b.htm
je pense que c'est une bricole, mais je ne sais pas où.
il n'est pas prévu de lire dans un répertoir et de sauver dans un autre.
C'est ça que tu veux faire ?
C'est ça que tu veux faire ?
Tu a raison, vu que je n'avais pas plusieurs csv j'ai pas tester cette partie.
dans la sub ConvertiRep
faut ajouter une ligne
Note que je comprend pas, sur la démo il y a cette ligne !
dans la sub ConvertiRep
faut ajouter une ligne
If LCase(Right(f1.Name, 3)) = Ext Then
Fichier = f1.Name
ConvertiCvsXls
End If
Note que je comprend pas, sur la démo il y a cette ligne !
non, elle y est déja cette ligne
--------------------------------------------------------
'Lire tout les fichiers du répertoir spécifié.
Sub ConvertiRep()
Dim fs, F, f1, s, sf
Dim i As Long, Fin As Long
'-----------------------------------------------------------
'Sélectionner le répertoir
SelectionRep
'-----------------------------------------------------------
Set fs = CreateObject("Scripting.FileSystemObject")
Set F = fs.GetFolder(Chemin)
Set sf = F.Files
For Each f1 In sf
If LCase(Right(f1.Name, 3)) = Ext Then
Fichier = f1.Name
ConvertiCvsXls
End If
Next
End Sub
--------------------------------------------------------
'Lire tout les fichiers du répertoir spécifié.
Sub ConvertiRep()
Dim fs, F, f1, s, sf
Dim i As Long, Fin As Long
'-----------------------------------------------------------
'Sélectionner le répertoir
SelectionRep
'-----------------------------------------------------------
Set fs = CreateObject("Scripting.FileSystemObject")
Set F = fs.GetFolder(Chemin)
Set sf = F.Files
For Each f1 In sf
If LCase(Right(f1.Name, 3)) = Ext Then
Fichier = f1.Name
ConvertiCvsXls
End If
Next
End Sub