Conversion csv -> xls d'un repertoire complet

Résolu/Fermé
beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 - 11 févr. 2009 à 11:59
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 19 févr. 2009 à 19:27
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
A voir également:

43 réponses

beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 5
13 févr. 2009 à 08:24
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
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
13 févr. 2009 à 08:42
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.
0
beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 5
13 févr. 2009 à 08:55
ok, merci. j'attends ca avec impatience.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
13 févr. 2009 à 10:30
Beh voila, j'espère que ça te conviendra.
http://www.commentcamarche.net/faq/sujet 16109 excel convertir fichier s csv xls
Tu dis...
A+
0
beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 5
13 févr. 2009 à 13:01
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
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
13 févr. 2009 à 13:18
Faut lire...
Tu doit formater la colonne jj mmm aaaa hh:mm:ss
A+
Edit:
Dans ton cas tu peu ajouter dans la fonction de convertion la ligne
        .Columns("A:A").NumberFormat = "dd mmm yyyy hh:mm:ss"
juste avant le
    End With

Je pouvais pas mettre ça dans l'astuce, c'est spécifique a tes fichiers.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 5
13 févr. 2009 à 14:50
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
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
13 févr. 2009 à 18:37
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
        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+
0
beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 5
13 févr. 2009 à 22:15
j'avais trouvé, mais ca me fait toujours la méme date sur les 8000lignes
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
14 févr. 2009 à 09:31
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
0
beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 5
14 févr. 2009 à 18:40
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)
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
15 févr. 2009 à 13:30
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)

'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.

0
beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 5
15 févr. 2009 à 18:16
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é.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
16 févr. 2009 à 11:13
Suite à ton MP... RELIRE MON POSTE 35 SVP.
0
beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 5
16 févr. 2009 à 11:29
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
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
16 févr. 2009 à 12:47
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
0
beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 5
16 févr. 2009 à 16:23
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
0
beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 5
19 févr. 2009 à 13:48
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ù.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
19 févr. 2009 à 18:21
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 ?
0
beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 5
19 févr. 2009 à 18:24
non, je veux sauvegarder dans le méme repertoire
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
19 févr. 2009 à 18:36
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
        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 !
0
beneton Messages postés 62 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 14 février 2017 5
19 févr. 2009 à 18:42
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
0