IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Extraire que certaines données d'un fichier csv [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 28
    Par défaut Extraire que certaines données d'un fichier csv
    Bonjour,

    J'ai commencé un peu le travail, le code tourne mais ne réalise pas ce que je veux. La macro à pour but d'extraire des données contenues dans un fichier csv et de les copier sur une feuille de mon classeur appelée "reception_donnees". Je n'arrive pas à "coller" les données receuillies à partir du fichier csv sur ma feuille "reception_donnees" et pourtant ma fonction s'exécute sans problème.
    Si quelqu'un peut me dire comment puis-je récupérer les données que je parcours ça serais bien sympas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Public Sub LireCSV(ByVal Chemin As String, col1 As Integer, col2 As Integer, col3 As Integer, col4 As Integer, col5 As Integer)
    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
     
        Sheets("reception_donnees" ).Activate
        Separateur = ";"
        Cells.Clear
        Application.ScreenUpdating = False
        NumFichier = FreeFile
     
        iRow = 0
        Open Chemin 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)
               If (i = col1 Or i = col2 Or i = col3 Or i = col4 Or i = col5) Then
                 Cells(iRow, iCol) = Ar(i)
                  iCol = iCol + 1
               End If
            Next i
     
        Loop
        Close #NumFichier
        Application.ScreenUpdating = True
        MsgBox "Le fichier à bien été importé !", vbInformation, "Importation de données"
     
    End Sub

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    tes variables col 1, col 2, col 3,... sont égale a quoi? a mon avis tu ne les initialise pas et elles valent 0

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 28
    Par défaut
    J'utilise cette fonction 2 fois, une fois avec
    col 1 => 0
    col 2 => 1
    col 3 => 2
    col 4 => 37
    col 5 => 43

    et une autre fois avec
    col 1 => 0
    col 2 => 1
    col 3 => 25
    col 4 => 32

    La fonction est ammenée comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub cmdImporter_Click()
        If fichierImporter <> "" Then
            LireCSV fichierImporter, 0, 1, 2, 37, 43
            parcoursDonnees
            Me.Hide
        Else
            MsgBox "Vous devez sélectionner un fichier pour pouvoir l'importer !", vbExclamation, "Erreur de fichier"
        End If
    End Sub

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    au temps pour moi pour les col. J'ai survolé un peu vite ton prog je n'avais pas vu que c'était les argument de ta fonction, désolé

    et si tu met un espion dans ta boucle if il y passe?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 28
    Par défaut
    Si tu me dis comment faire oui ^^, car je suis novice en prog et un espion je sais pas du tout ce que c'est. Je peux t'envoyer le fichier si t'a un peu de temps pour résoudre le prob. Je pense pas que se soit grand chose mais j'arrive pas à trouver ce qui peut clocher sa fait 3j que je suis dessus^^

  6. #6
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Regarde ce tuto

    Il explique comment mettre un point d'arret
    tu peux aussi utiliser la touche F8 pour avancer ligne par ligne (mode pas à pas)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/05/2015, 10h57
  2. Besoin d'aide pour n'extraire que certaines données
    Par Jean-Marc68 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/02/2008, 17h53
  3. Réponses: 3
    Dernier message: 26/04/2006, 11h52
  4. Réponses: 1
    Dernier message: 06/02/2006, 13h53
  5. extraire certaines données d'un fichier texte
    Par davz88 dans le forum C++
    Réponses: 11
    Dernier message: 26/03/2005, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo