Importer des données d'un fichier CSV dans des variable [Résolu]

Messages postés
55
Date d'inscription
mardi 8 juin 2004
Dernière intervention
27 février 2009
- - Dernière réponse : cs_Orohena
Messages postés
578
Date d'inscription
vendredi 26 septembre 2008
Dernière intervention
20 novembre 2010
- 18 févr. 2009 à 03:20
Bonjour,

Je souhaiterai développer une macro qui récupère des données d'un fichier csv et qui les rapatries dans des variables qui sont  le pays, le navigateur et le réseau de Type Variant

J'ai trouver le code suivant :

Sub CSV()
'
' CSV Macro

Dim Fichier As Variant


    ChDir "C:\Tests\Jeux"
    Fichier = Application.GetOpenFilename("Fichier CSV (*.csv), *.csv")
    If Fichier <> False Then
        LireCSV Fichier
    End If
End Sub
Le probleme ici est que je suis obligé de sélectionner le Fichier avec ma souris, comment puis je faire pour qu'il le sélectionne automatiquement ?
'===============================================================
' Lecture du fichier
'===============================================================
Private Sub LireCSV(ByVal NomFichier As String)


Dim Chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim Separateur As String * 1
 
    Separateur = ";"
    Cells.Clear
    Application.ScreenUpdating = False
    NumFichier = FreeFile
 
    iRow = 0
 
    Open NomFichier For Input As #NumFichier
    Do While Not EOF(NumFichier)
        iCol = 1
        iRow = iRow + 1
        Line Input #NumFichier, Chaine
        Ar = Split(Chaine, Separateur)
        For i = LBound(Ar) To UBound(Ar)
            Cells(iRow, iCol) = Ar(i)
            iCol = iCol + 1
        Next i
    Loop
    Close #NumFichier
    Application.ScreenUpdating = True
 
End Sub



Le probleme ici est qu'il copie dans des cellules, comment puis je faire pour mettre mes valeurs dans les variables ?





Merci d'avance pour l'aide que vous m'apporterez ?

[?] Estelle[8D]
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
20 novembre 2013
3
Merci
Salut,

si ton fichier est toujours au meme endroit et qu'il porte toujours le meme nom tu peux faire comme ceci pour la premiere partie :

C'est pas recommandé mais bon...

Sub CSV()
'
' CSV Macro

Dim Fichier As String, Chemin as String   
Chemin = "C:\Tests\Jeux"
Fichier = "MonFichierCSV.csv"
' on verifi que le chemin et/ou le fichier specicifie sont bon
    If Not Dir(Chemin&Fichier) = "" Then
        Fichier = Chemin&Fichier
        LireCSV Fichier
    Else
        Msgbox "aucun fichier trouvé !", VbExclamation
        Exit sub
    End If
End Sub

Voila pour la premiere partie

Merci bigfish_le vrai 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de bigfish_le vrai
Messages postés
578
Date d'inscription
vendredi 26 septembre 2008
Dernière intervention
20 novembre 2010
3
Merci
Salut

Pour la 2e question, et sous réserve que la structure de ton fichier csv est bien ;<navigateur>;<réseau>

1) Remplace

    Do While Not EOF(NumFichier)
        iCol = 1
        iRow = iRow + 1
        Line Input #NumFichier, Chaine
        Ar = Split(Chaine, Separateur)
        For i = LBound(Ar) To UBound(Ar)
            Cells(iRow, iCol) = Ar(i)
            iCol = iCol + 1
        Next i
    Loop

par

    Dim pays()
    Dim navigateurs()
    Dim reseaux()
    Do Until EOF(NumFicher)
        Line Input #NumFicher, Chaine
        Ar = Split(Chaine, Separateur)
        Redim Preserve pays(i)
        pays(i) = Ar(0)
        Redim Preserve navigateurs(i)
        navigateurs(i) = Ar(1)
        Redim Preserve reseaux(i)
        reseaux(i) = Ar(2)
        i = i + 1
    Loop

2) Supprime la ligne Dim iRow As Long, iCol As Long devenue inutile.

Cela charge les champs du fichier csv dans des tableaux de variables pays, navigateurs et reseaux de type Variant.

Amicalement

Merci cs_Orohena 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_Orohena

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.