Remplir un tableau à partir d'un fichier csv

cs_debutantvba Messages postés 9 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 18 novembre 2007 - 14 nov. 2007 à 12:55
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 10 août 2009 à 14:58
Bonjour à tous,
je vous expose mon problème et vous remercie à l'avance de vos éventuelles réponses qui seront les bienvenues je vous assure !

j'ai un fichier .csv : j'aurai voulu sous VB Excel mettre les données du .csv dans un tableau défini avec un

Type t_nom_fichier.csv
'décalrations variables = noms des colonnes en fait
end Type

Public
toto() as t_nom_fichier.csv

et mon problème c'est comment remplir ce tableau avec mes données entrantes (qui sont ds ce fichier .csv !)
et bien sur par la suite pouvoir sélectionner ces données et faire des opérations dessus dans des fonctions ou procédures.

j'espere m'être bien exprimé.
Merci.

ci joint le code que j'avais tapé mais les données sont en tableau Excel en non en variable "invisible"

Sub lecture()
    Dim v_param As Variant
    Dim v_i As Long, v_p As Long
    Dim v_li As String
   
    Sheets("test").Select
    v_i = 0
    Open "D:\test.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

Merci, surement il y a juste une ligne à ajouter mais je sèche littéralement là

un débutant (oui je sais ça se voit je crois ;) )

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 nov. 2007 à 13:26
sous Excel... ce donc n'est pas du .NET ! un peu d'attention quand tu postes


Vous êtes ici : Thèmes / VB.NET et VB 2005 / Divers /
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 nov. 2007 à 13:29
tu veux stocker tes données où dans un tableau a deux dimensions ?
0
cs_debutantvba Messages postés 9 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 18 novembre 2007
14 nov. 2007 à 18:21
oui exact j'ai du me tromper de thème, excusez ...
je voufrais stocker mes données dans un tableau avec n lignes et n colonnes : n dépendant du fichier .csv en l'occurence
par exemple le fichier csv contenant 6 lignes avec par exemple a;b;c;d => 4 colonnes
ce qui m'importe le plus est bien sur apres de pouvoir les selectionner et les traiter avec appels de procédures ou de fonctions ...
nota : j'ai plusieurs fichiers .csv (4) et donc autant de types défnis et il serait peut etre possible (oui j'espere en réalité !) de traiter ces informations en croisant tes tableaux : par exemple faire des tests entre les tableaux

merci
0
cs_debutantvba Messages postés 9 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 18 novembre 2007
17 nov. 2007 à 09:36
désolé de relancer ce sujet ... une aide m'est devenue indispensable pour la coninuité de mon projet ...
ce serait véritablement une aide précieuse : merci encore pour les futures éventuelles réponses.
0

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

Posez votre question
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
10 août 2009 à 14:58
Salut
Je sait que le topic date un peut, mais je cherche des précisions sur les types de données en CSV ce qui m'à amené ici.
Pour lire un CSV le plus simple (et le mieux je pense) est de crée un fichier schema.ini (dans le même dossier que ton CSV) et de typer les colonnes avec.
Rubrique d'aide MSDN
Ensuite tu crée une connexion type BdD :
Dim testCo As New ADODB.Connection
Dim testDat As New ADODB.Recordset
'OleDb <- Ce que j'utilise
testCo.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Dossier contenant le CSV (les chemins avec espaces sont accepté)\;Extended Properties=""text;HDR=Yes;FMT=Delimited"";"

'ODBC (en connexion direct les chemins avec espaces ne sont pas accepté
'Crée alors un fichier DSN (fichier pour ne pas pourrir la base de registre) que tu peut stocké dans un dossier avec espaces et dans le quel tu peut mettre un chemin vers le CSV avec espaces ;)
'testCo.ConnectionString = "FILEDSN=Chemin au DSN" 

'Ou encore en ODBC direct (/!\ au espaces)
'testCo.ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=""Dossier contenant le CSV (les chemins avec espaces ne sont pas accepté !!!)"";Extensions=csv;"

testCo.Open
'Les deux dernier paramètres en option ou à modifier selon les besoins ;)
testDat.Open "SELECT * FROM " & NomFichier, testCo, adOpenStatic, adLockOptimistic

'[...] <- Utilisation du Recordset

testCo.Close
testDat.Close
set testCo = Nothing
set testDat = nothing


Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
0
Rejoignez-nous