Lecture de plusieurs fichiers csv

Claire7799 Messages postés 3 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 21 octobre 2007 - 20 oct. 2007 à 17:21
Claire7799 Messages postés 3 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 21 octobre 2007 - 21 oct. 2007 à 09:29
Bonjour, je débute en VB sous excel et je suis déjà confrontée à un problème: je souhaite ouvrir plusieurs fichiers.csv dans des feuilles excel afin ensuite de pouvoir travailler sur les données contenues dans ces fichiers. Pour celà, j'ai donc une sous routine lecture fichier dans laquelle je veux mettre en paramètre "Nom de fichier" afin de la lancer plusieurs fois. (pour chaque fichier) Après compilation, j'obtiens une errer 424 objet requis.
Je ne sais pas si c'est mon raisonnement qui est faux ou si c'est une erreur de code, pourriez vous m'aider??

Voilà le code écrit dans mon module1:

Option Explicit
'Force à déclarer les variables

'Ouverture des fichiers de données et création de tableaux de données
Sub Lecture_fichier(Nomfichier As String)
' mettre tout le chemin dans le nom du fichier
    Dim v_param As Variant
    Dim v_i As Long, v_p As Long
    Dim v_li As String
   
   
    Sheets("Feuil1").Select
    v_i = 0
    Open "C:\test\Nomfichier.csv" For Input As #10
    Do
        v_i = v_i + 1
        Line Input #10, v_li
        v_param = Split(v_li, ";")
        For v_p = 0 To UBound(v_param)
            Cells(v_i, v_p + 1) = v_param(v_p)
            'Debug.Print v_param(v_p); " ";
        Next v_p
       ' Debug.Print
    Loop Until EOF(10)
    NbLigne = v_i
    Close 10
End Sub

et voilà le code que j'ai rentré dans une userform:
Private Sub Chargementfichiers_Click()
    Call Lecture_fichier(atelier.csv)
End Sub

J'attends vos réponses.

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 oct. 2007 à 18:46
Salut
Tu prépares une variable contenant le nom du fichier, très bien, mais tu ne t'en sers pas dans la Sub.
Du coup, tu lis toujours le même fichier.
Modifie :
    Open MonFichier For Input As #10

Ensuite, quand tu lances ta Sub, le paramètre est une chaine qui doit représenter le nom complet (avec le chemin) du fichier à traiter, donc il faut ajouter des guillemets "
   Call Lecture_fichier("C:\test\atelier.csv")

Enfin, dans ta Sub, tu sélectionnes toujours la même feuille 
   Sheets("Feuil1").Select
Donc, à chaque fois, l'appel de ta Sub écrasera les cellules précédemment chargées.

Mon avis : Importer un fichier CSV, c'est quand même le boulot de Excel. Ta sub réinvente la roue et tu t'apercevra qu'il y aura des problèmes dès qu'un des champs comporte des ; à l'intérieur de sa donnée, bref, une marrée de bonheur à venir.
Pourquoi ne pas utiliser les instructions liées à cette conversion ?
Tu ouvres un fichier au format CSV dans une feuille de travail puis tu joues avec les cellules (transfert entre feuilles ...)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Claire7799 Messages postés 3 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 21 octobre 2007
20 oct. 2007 à 19:37
Merci beaucoup pour ce début d'aide. En fait, je débute totalement (1h de VB derrière moi donc...)
Vous me dites: "Pourquoi ne pas utiliser les instructions liées à cette conversion ?
Tu ouvres un fichier au format CSV dans une feuille de travail puis tu joues avec les cellules (transfert entre feuilles ...)"
Pourriez vous m'expliquer?? Je suis désolée, je ne comprends absolument pas.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 oct. 2007 à 00:00
Salut
Les fichiers CSV sont des formats de fichier dédié à Excel.
Excel sait donc parfaitement les lire et les écrire.
Si tu veux lire un fichier CSV, il te suffit d'ouvrir un fichier avec l'extension CSV, Excel le chargera dans une feuille.
Si tu veux ensuite pouvoir paramétrer toi même le nom du fichier :
Ouvre une macro en enregistrement + Fais la manip à la main d'ouvrir le fichier de type CSV + Arrêt de l'enregistrement.
Ensuite, tu n'as plus qu'à aller voir dans l'éditeur de macro l'instruction que tu viens d'utiliser.

Je ne vais pas m'étendre, il y a l'aide de Excel qui saura t'aiguiller à partir de mots clés comme CSV, Macro ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Claire7799 Messages postés 3 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 21 octobre 2007
21 oct. 2007 à 09:29
Merci beaucoup pour votre aide à tous les deux
0
Rejoignez-nous