Convertir un fichier CSV vers XLS

Après le meurtre de 3 chats du quartier et d'une petite vieille qui traversait la route, je pense que je viens de venir à bout du problème avec les fichiers .date du jour. J'ai fait un test pour voir si les 4 derniers charactères du nom du fichier sont ".CSV" (Oui excel enregistre en maj et moi j'avais mis ".csv", donc le test à l'enregistrement était toujours négatif)

S'il y a des fichiers avec une extension .xls ou autre, il faudra rajouter une condition dans le test.

Tu me dis si c'est bon (Rerererererere Chemin )

Oups faut retirer la dernière ligne de ce code :

'Copie du contenu .csv dans la Feuil1 du classeur TestV1
                Feuil1.Activate
                Range("A1").Select
                Feuil1.Paste
                Cells(1, 12) = LResult

je l'ai placé pour savoir où était le bug à l'enregistrement

27convertisseurv5.zip (25.18 Ko)

quand j'ouvre le fichier: "boc1.10052014" ou même "boc1.10052014.csv" il ne m'enregistre rien

j'ai un jolie message d'erreur x) malgré les corrections appliqué

erreur1

j'aime bien le code erreur avec un "moins" devant x)

Il me faisait le même foin au début, là il avait arrété et ça fonctionnait, je vérifie après manger

ok bon appétit

et tu ne peux savoir a quel point je te remercie de cette aide si précieuse

je pense qu'il faudrai préciser dans la macro que le "myfile" soit classé comme du texte, comme sa le point sera écarté et il n'aura qu'à ajouter l'extension xls

Pour le .csv, comme je l'avais dit c'est le "." au milieu du nom du fichier qui pose problème, c'est pour ça que Excel reconnait pas le format, essai sans toucher au nom du fichier d'origine (en utilisant le fichier que tu m'as envoyé ça fonctionne (voir images du fichier))

Dans le code j'ai mis un test, si les 4 derniers caractères du fichier sont ".CSV" alors on retire tout ce qu'il y a après le "."

Sinon on se contente de remplacer le "." par un "_" qui ne fait pas planter le nom

Ex : boc1.10052014 -> boc1_10052014 et ensuite on sauvegarde le fichier comme un .XLS

dans le cas d'un fichier .CSV : Test_11_544.CSV -> Test_11_544 et ensuite on sauvegarde au format .XLS

J'ai fais le test sur les 2 types de fichiers

à voir du coup

28visuel.xlsx (211.65 Ko)

finalement sa marche mais sa me fais cela comme tu me la dit:

boc1.10052014.csv --> boc1_10052014_csv.xls

boc1.10052014 --> boc1_10052014.xls

mais on ne peux pas traiter le 1er "point" comme texte ?

ex:

myfile = nomdufichier.numero

'et au moment de l'enregistrement
ActiveWorkbook.SaveAs Filename:=myfile & ".xls", FileFormat:=xlExcel8

ce qui devrai donner au final "nomdufichier.numero.xls"

et si c'est un csv ou autre

myfile = nomdufichier.numero.extension
myfile = Split(myFile, ".")(0)

'et au moment de l'enregistrement
ActiveWorkbook.SaveAs Filename:=myfile & ".xls", FileFormat:=xlExcel8

On ne peux pas faire sa?

ou alors transformer le myfile en format "texte" pour qu'il ne prenne pas en compte les extensions

et pourquoi avoir mis:

Range("A1:H50").Copy

Sa copie quel feuille? Options ou Feuil1 ?

parce que si c'est Feuil1 sa peux être gênant si j'ai plus d'une 50 aines de ligne

il faudrait ajouter plutôt jusqu’à la dernière ligne du tableau ou à la dernière colonne du tableau.

Je suis parti du principe que tu n'avais qu'une feuille à copier (suivant l'exemple que tu m'avais envoyé), au moment ou on ouvre le fichier la feuille devient immédiatement active, le code copie donc la feuille qui viens de s'ouvrir :

ActiveSheet.Select
Range("A1:H50").Copy

On ignore le nom de la feuille, c'est une méthode pratique dans ses conditions. Sinon il doit éxister un moyen de connaître le nom exact mais vu qu'on veut juste ouvrir, copier, coller, refermer ... Je me suis pas pris la tête.

Après je sais pas, si tu as effectivement 70 000 lignes, se sera plus adapté (je te cherche le code)

Sinon :

ex:

Code: Tout sélectionnermyfile = nomdufichier.numero

'et au moment de l'enregistrement

ActiveWorkbook.SaveAs Filename:=myfile & ".xls", FileFormat:=xlExcel8

ce qui devrai donner au final "nomdufichier.numero.xls"

Là tu lui dis de mettre l'extension .xls, puis de l'enregistre au format .xls, il va te sortir un fichier .xls.xls à mon avis

Je vais essayer mais on a vu précedemment qu'il chiait des boudins (pardon l'expression) quand on laissait le point entre boc1 et 10052014.

Je reregarde mais j'y crois pas trop




Else
           myFileOther = myFile & ".xls"
            ActiveWorkbook.SaveAs Filename:=myPath & myFileOther, FileFormat:=xlExcel8
End If

Cela semble fonctionner chez moi, à vérifier pour toi (on garde le . et cela enregistre format .xls, j'arrive à l'ouvrir derrière)

x) non j'aime bien ton expression

et j'ai un fichier par jours, dès fois tous les 2 jours ou plus (pour le fichier "nom.numero") ^^"

donc non je n'ai pas qu'un seul fichier

par contre après la conversion en xls, il doit avoir 2 feuilles de classeur (Options et Feuil1)

ou alors tu peux faire

Si fichier possède une extension inférieur à 4 caractères
    executer tel fonction

Si non (fichier possède une extension supérieur à 4 caractères)
    executer autre fonction

J'ai apporté les modifications pour le copier/coller et pour le "_"

Tu me dis si ça fonctionne.

Je jette un oeil dessus demain, pour l'histoire des deux feuilles par fichier.

Sinon le problème en faisant si 4 caractères après le point, ça risque d'être le basard et si jamais un fichier .xlsm (5 caractères) se tape l'incruste, sa sera pas joli à voir. Et crois moi, tu ne veux pas voir un fichier Excel en colère ^^.

35convertisseurv6.zip (23.59 Ko)

Bonjour,

Alors c'est le matin, récapitulatif des courseeees ZZZzzz Hein?

Non plus sérieusement, il reste quoi à revoir concrétement ?

x) merci franchement pour ton aide

cela va m'avancer énormément :3 juste un dernière petit truc que l'on me demande de faire et qui m'énerve c'est l'enregistrement du fichier qui dois se trouver sur F: et non sur F:\analyse

x.x

Je ne sais pas si c'est une protection réseau ou quoi, mais je n'arrive pas non plus à l'enregistrer directement sur un lecteur réseau. Je retente, sur le réseau.

Sur Disque Dur Externe ça fonctionne :

 'Enregistrement du nom dans la variable myFile et du chemin dans myPath,
myPath = "F:"
myFile = ActiveWorkbook.Name
'Enregistrement du fichier
                If LResult = ".CSV" Then
                    'La fonction Split permet de retirer tout les caractères après le point
                    'donc n'importe quelle extension.
                    myFileCsv = Split(myFile, ".")(0)
                    ActiveWorkbook.SaveAs Filename:=myPath & "\" & myFileCsv, FileFormat:=xlExcel8
                Else
                    myFileOther = myFile & ".xls"
                    ActiveWorkbook.SaveAs Filename:=myPath & "\" & myFileOther, FileFormat:=xlExcel8
                End If

Sur Disque Local "C:" ça fonctionne aussi.

Par contre j'ai essayé plusieurs lecteurs du réseau, je pense qu'on ne peut pas enregistrer directement dessus (je fais la même chose que pour le bureau ou le Disque Dur Externe). Peut être une protection réseau ???

c'est bizarre oui x)

et ton code n'étais pas bon en insérant juste le "\" il me demandais d'enregistrer dans le même dossier.

j'ai donc fais "..\"

Enregistrer dans le même dossier ?

Sur quelle partie du code ?

Je te remercie fortement pour ton aide

si jamais tu as besoin de mon aide n'hésite pas

que sa soit pour une réparation d'ordi à distance, de box, ou de serveur

si non c'étais à ce niveau la: (en gras et souligné) tu avais mis juste un "\" et sa m'enregistrai dans le même répertoire que celui d'origine autrement dit sa me donnais un répertoire du genre: F:\analyse\\nomdufichier.numero.xls

            'Enregistrement du fichier
                If LResult = ".CSV" Then
                    'La fonction Split permet de retirer tout les caractères après le point
                    'donc n'importe quelle extension.
                    myFileCsv = Split(myFile, ".")(0)
                    ActiveWorkbook.SaveAs Filename:=myPath & "..\" & myFileCsv, FileFormat:=xlExcel8
                Else
                    myFileOther = myFile & ".xls"
                    ActiveWorkbook.SaveAs Filename:=myPath & "..\" & myFileOther, FileFormat:=xlExcel8
                End If
            Else
Rechercher des sujets similaires à "convertir fichier csv xls"