Convertir un fichier CSV vers XLS

Ok, donc l'histoire d'ouvrir sur la feuille d'à côté on en est quasi au même point ^^, je dois faire la même chose mais avec plusieurs fichiers que je veux coller sur un même classeur, sur des feuilles différentes. Ne connaissant pas le nom des différents dossiers choisis par l'utilisateur, je pensais utilisé la méthode ActiveSheet (Attention théorie pure, et personne ne m'a répondu là dessus pour l'instant ^^)

On se trouve sur un classeur ouvert

On lance la macro

L'utilisateur choisit son fichier

Le fichier s'ouvre

On se retrouve sur la première feuille du classeur

' ActiveSheet.Select

'ActiveSheet.Copy

'ActiveSheet.Close

'ActiveWorkbook.CLose (à la limite directement fermer le classeur et pas la feuille ?)

On retourne sur l'ancien classeur

'wbSource.Open

'Sheets.Add

'ActiveSheet.Name = "Nom de la nouvelle feuille"

'ActiveSheet.Paste

Après on convertit, met en forme, etc

Mais j'avoue que je suis sur du théorique, je n'ai absolument pas tester, mais je compte le faire, j'en ai besoin (je me sert d'un système de compteur pour ouvrir plusieurs feuilles et ouvrir sur des feuilles différentes, mais je vais essayer de le faire fonctionner pour une, sa sera un bon début et la suite viendra toute seule

Presque sauf que moi je n'ai que 2 feuilles

La feuille principale qui se nomme "Options" comportant des boutons macros

Et la feuille "Feuil1" qui possèdera le fichier csv converti.

Comme sa quand le fichier XLS sera crée et sauvegardé on peux controler les macros dans la feuille option.

Et comme sa la feuille original qui possède les macro et la conversion n'est pas modifié et est réutilisable pour un autre fichier csv

Dsl de ne pas avoir répondu hier soir, je n'ai plus internet à la maison (Livebox en carton qui a décidé de faire grève)

Donc, à partir de ce fichier on a Options et Feuil1

On lance la Macro, on enregistre au nom de fichier .csv ouvert (conservation du dossier source et nouveau fichier format .xls)

Du coup je vais essayer de faire çquelque chose de ce style :

  • Ouverture du fichier .csv dans un nouveau classeur
  • Copie du contenu fichier .csv
  • Copie du nom fichier .csv dans une variable
  • Fermeture du fichier .csv (et donc du classeur)
  • Ouverture du fichier "source" (j'ai pas le nom je l'appellerai surement Test)
  • Coller le contenu du fichier .csv sur la Feuil1 du classeur Test
  • Conversion
  • Sauvegarde du fichier au format .xls (nom donné par la variable)

Bon ba y a plus qu'à .

Normalement je n'ai rien oublié, je te dis si ça fonctionne.

ok ^^

Si non hier soir j'ai pensé à un truc qui pourrai peux être fonctionner:

1) On lance la macro

2) On choisi le fichier

3) après avoir choisi le fichier, la macro renomme le fichier en y ajoutant l'extension ".csv"

4) Excel la converti

5) Enregistrement au format .xls

6) renommage du fichier original en supprimant l'extension ".csv"

ou alors:

1) On lance la macro

2) On choisi le fichier

3) On le copie et on le renomme en fichier csv

4) On converti ce fichier csv sous excel

5) Enregistrement au format .xls

6) On supprime le fichier csv

Dit moi si c'est possible ^^

PS: pour ta box si tu as besoin d'aide n'hésite pas à me contacter je m'y connais beaucoup

PS2: j'ai trouver 2 scripts permettant le renommage de fichier:

    Sub renomme()
    Dim chemin As String, ancienNom As String, nouveauNom As String, i As Long
    Dim objShell As Object, strFileName As Object, objFolder As Object, colItems As Object

        chemin = ActiveWorkbook.Path    'répertoire à définir (par défaut : celui du classeur actif)
       Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.Namespace(CStr(chemin))
        Set colItems = objFolder.Items

        '*** Boucle sur les fichiers du dossier cible
       For Each strFileName In colItems
            If strFileName.IsFolder = False Then
                ancienNom = chemin & "\" & strFileName
                nouveauNom = chemin & "\" & Replace(strFileName, ")", "_")
                Name ancienNom As nouveauNom
            End If
        Next strFileName

    End Sub
     

ainsi que

    Sub renom()
      rep = "C:\Documents and Settings\*******\Num\" 'mettre le chemin du répertoire complet
     ChDir rep
      On Error Resume Next
      For i = 1 To Range("A65000").End(xlUp).Row
      Name Cells(i, 1) & ".mxf" As Cells(i, 4) & ".mxf"
      Next i
      On Error GoTo 0
    End Sub

il faut avouer que se sont des script qui ne fonctionne pas pour mon cas mais auquel il est possible d'extraire des bout de code

Alors juste pour être sur, tu veux :

  • A) Prendre un fichier .csv -> le convertir -> enregistrer une autre version format .xls -> Sur un nouveau classeur ? (Tu as 1)ton classeur origine macro intact, 2)un nouveau classeur enregistré à côté du fichier .csv et 3)le fichier .csv toujours en rab (sait-on jamais))
  • B) ""->""->""-> Sur le classeur d'origine, sur la Feuil1, à côté de la feuille options mais qu'on renomme donc qui n'efface pas le classeur d'origine (Donc il te reste 1) Classeur origine, 2)un classeur origine avec le contenu du fichier .csv sur la feuil1, 3) le fichier .csv)
  • C)Autre

Je demande parceque je ne sais pas si tu as des macros que tu veux utiliser après avoir "importer" et convertit ton fichier.

Je préfère être sur afin d'éviter une erreur de compréhension et revenir plusieurs fois sur le programme ^^ (sinon supprimer le fichier d'origine (.csv) je sais pas, perso je préfère le garder sous la main, on est jamais à l'abri d'un problème style ICC (Interface Chaise Clavier = Utilisateur ^^), quite à le supprimer manuellement plus tard)

Comme tu le sens.

Non le fichier ne possède pas d'extension à la base

Ou alors on peut reprendre ton programme et essayer d'ajouter la feuille "Options" qui possède des boutons ainsi que les macro qui y sont associé directement dans la feuille converti

Le fichier ne possède pas d'extension à la base, ..., donc soit tu as des fichiers .csv soit euh ... j'avoue que la j'arrive pas à visualiser.

En attendant je termine un fichier test histoire de voir si cela fonctionne.

ce sont des fichier csv mais qui n'ont juste pas d'extension ".csv" à la fin.

voici le nom d'un des fichiers: "liste.04012015"

quand tu l'ouvre avec un bloc note tu verras qu'il y a des Point-virgule autrement dit si tu renomme le fichier en "liste.04012015.csv" il fonctionne.

le fichier joins boc1.csv c'est la même chose, son nom original c'est "boc1.10052014"

Le code d'hier, même s'il n'y avait pas le .csv à la fin, aurait du enregistrer les fichiers malgrès tout (sauf si l'extension fait 4 lettres, ex : .xlsm auquel cas on avait Machin..xls, (vu que je lui demande de supprimer seulement les 4 derniers caractères (me basant sur le .csv), ça explique peut-être pourquoi il chiait des pendules.) ou sinon avais un nom qui faisait 4 caractère, auquel cas : sauvegarder : "".xls

Bon sinon ça avance, j'ai juste eu un gros bug vu que je travaille sur réseau (et que le réseau est à l'image de ma Livebox), résultat pile au moment où je lance la macro, l'endroit où je faisais mon test deviens indisponible et là c'est le drame ^^

Heuresement que je fais des copies avant chaque test, sa évite de tout perdre.

x) fais le en locale, tu crée un dossier sur le disque C et tu colles les fichiers de test dans ce dossier, comme sa tu passe même pas par le réseau et si tu veux après le remettre sur le réseau tu peux.

Ouais je sais, donc à l'heure actuelle j'ai réussi à ouvrir/copier/fermer/ouvrir classeur origine/coller le contenu

Il colle sur la feuille options au lieu de le faire sur la feuil1 mais on est plus loin du but ^^,

dès que j'ai fini de réparer mon code en mode "Matériel Russe, demande compétences particulières ... "BUNK" . Voyez ? Matériel Russe." (désolé si j'écorche la réplique ^^)

x) tkt moi sa me dérange pas :p

Y a des modifications à apporter,

  • Copier : pour l'exemple j'ai pris copier les cellules A1 à Z500 donc tu as un message comme quoi le presse papier est plein, que si tu fermes les données seront pas sauvegarder, voulez vous les sauvegarder gnagna. tu met oui pour le test. J'ai pas essayé d'adapter la copie de la feuille au contenu (avant il copiait uniquement la cellule A1 qui était sélectionnée à l'ouverture, là je lui dit de copier de tel à tel ligne, j'ai vu gros, TRES GROS).
  • Convertir : il faudra que tu vérifie, même en retirant le code je n'avais plus de fichiers qui se collait Colonne A ??? (les joies de l'informatique ^^) Et j'ai juste fait convertir sur les 10 premières lignes de la colonne A dans le cadre du test. A modifier si + grand.

Si y a le moindre bug ou un truc à changer, tu le dis. Je vais essayer d'adapter sur mon code et OUCH je sens que sa va faire mal ^^

19testv3.xlsm (18.86 Ko)

c'est moi ouu le bouton importer à disparu? x)

et je n'ai aucune macro de visible à cause de cette commande:

Option Private Module

Public Sub Import()

Je l'ai faites sur un classeur différent (j'ai juste refais les deux feuilles), la macro est dans un module, je vais reprendre ta feuille et la mettre dedans ^^ (Pour tester je préfèrait faire des conneries sur un classeur vierge (sinon tu vas dans visualiser le code, il y a un module "Import", le code est dedans)

au pire je te donne tous mon projet (ou presque):

Comme sa tu peux voir ce que sa donne par contre le bouton "conversion" marche pas normal ^^"

29fichier.zip (28.34 Ko)

Alors là je suis devant un mur, ça marche, mais dans le cas des fichiers non .csv il place le fichier, fait la conversion et comme il retire que 4 caractères il enregistre un fichier inutilisable, mais si tu sauvegarde manuellemen (enregistrer sous, vu que tu choisis le nom, ça marche)

Je vois pas la comme ça comment gérer ces fichiers sauvegardés avec des noms bizarres

Je vais demander à tout hasard sur un autre sujet à propos de ce problème d'extensions.

Je te repasse le fichier, tu me dis ce que tu en penses (il faudra rechanger le chemin).

24convertisseurv4.zip (25.95 Ko)

oui le début marche c'est bon c'est juste l'enregistrement qui beug oui

quand j'essaie d'ouvrir le fichier "boc1.10052014.csv" il me l'enregistre comme cela : "boc1.1005" sans extension XLS et sans la fin des caractères

et le fichier "boc1.10052014" quand on l'enregistre manuellement il m'affiche juste en titre "boc1." rien de plus, c'est bizarre ._. mais je regarde sur internet, après tout sa ne dois pas être si difficile de trouver l'erreur, enfin.... je crois x)

Re

EngueEngue nous a proposé ça :

Sub toto()
stringue = "nanana.vsdufiyhzdf"
stringuesanspoint = Split(stringue, ".")(0)
End Sub

Qui fonctionne très bien, je l'ai ajouté au code et ça y est, ça sauvegarde correctement et ce, quelque soit l'extension.

Le code reste rudimentaire (comme le disait mon prof : coder comme un dinosaure ou faire une "'immonde crotte préhistorique"), y a pas mal de trucs qui peuvent être amélioré, mais au moins cela fonctionne (oublie pas de rererererechanger le chemin )

26convertisseurv5.zip (26.12 Ko)

hé beh non sa fonctionne presque ^^"

quand j'essaie d'ouvrir le fichier "boc1.10052014.csv" ou "boc1.10052014" il me l'enregistre comme cela : "boc1.xls" il manque les numéros

Rechercher des sujets similaires à "convertir fichier csv xls"