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 :

VBA Lecture d'un fichier texte


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Par défaut VBA Lecture d'un fichier texte
    Bonjour à tous,

    J'ai crée une petite appli sous Excel qui me permet de lire et d'extraire des données d'un fichier texte pour pouvoir travailler ensuite sur ces données.
    Mes fichiers texte se présentent de la manière suivante :
    Code1, 'Valeur1'
    Code2, 'Valeur2'

    Pour lire mon fichier et extraire les valeurs de mon fichier texte, je procède de la manière suivante :

    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
    Dim Id As String
    Dim valeur As String
    Dim n As Integer
    Dim i As Long 'Integer Depassement de capacité à 37323
    n = FreeFile
     
    Open TxtCheminFichier For Input As #n
     
    Do While Not EOF(1) 'EOF = End Of File permet de lire le fichier jusqu'à la fin
    Input #n, Id, valeur
    'Ajout des données fichier dans la ListView2
            i = i + 1
                With ListView2
                With .ColumnHeaders
                  .Clear
                  .Add , , "Id", 100
                  .Add , , "Valeur", 400
                End With
     
                With ListItems
                   ListView2.ListItems.Add , , (Id)
     
                End With
     
                    valeur = Replace(valeur, "'", "")
                   .ListItems(i).ListSubItems.Add , , (valeur)
                End With
    Loop
    'On ferme la connection au fichier
    Close #n
    Mon code fonctionne dans la plupart des cas… en fait je viens de m'apercevoir que pour certain fichier la "valeur" peut contenir une virgule une virgule (normalement définit comme séparateur) :

    Code1, 'Valeur1, ComplémentValeur1'
    Code2, 'Valeur2'
    Code3, 'Valeur3'
    ...

    Dans ce cas là, j'ai une erreur d'exécution…
    Je voudrais soit ignorer le texte placé derrière la seconde virgule (ce ne sont pas des données importantes), soit ajouter tout le texte dans la même colonne (il s'agit toujours de la même valeur).
    Quelqu'un aurait il une idée ?
    Merci

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Lire la ligne entière puis la scinder en 2
    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
    Dim Contenu As String, Id As String, Valeur As String
    Dim n As Integer
    Dim i As Long   'Integer Depassement de capacité à 37323
     
    With ListView2.ColumnHeaders
       .Clear
       .Add , , "Id", 100
       .Add , , "Valeur", 400
    End With
    n = FreeFile
    Open TxtCheminFichier For Input As #n
    Do While Not EOF(1)   'EOF = End Of File permet de lire le fichier jusqu'à la fin
       Line Input #n, Contenu
       Id = Left(Contenu, InStr(Contenu, ",") - 1)
       Valeur = Mid(Contenu, InStr(Contenu, ",") + 1)
       Valeur = Replace(Valeur, "'", "")
       'Ajout des données fichier dans la ListView2
       i = i + 1
       With ListView2
          .ListItems.Add , , Id
          .ListItems(i).ListSubItems.Add , , Valeur
       End With
    Loop
    'On ferme la connection au fichier
    Close #n

  3. #3
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Quelques pistes.
    Si tu déclares
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim LaLigne as string, Tableau() as string
    Tu peux remplacer ton Input parTu auras ainsi toute une ligne dans une variable.

    Si tu veux récupérer tous les morceaux délimités par une virgule,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau = split(LaLigne, ",")
    Là tu regardes s'il y en a 2 ou 3 et tu fais comme tu veux. Mais probablement que Pour la Valeur, si tu peux récupérer 1 morceau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur = replace(Tableau(1),"'","")
    Si tu veux tout, avec la virgule et dans le cas ou Ubound(Tableau) = 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur = replace(Tableau(1) & ","  & Tableau(2),"'","")
    Tu devrais pouvoir obtenir exactement ce qui t'arrange.

    Cordialement,

    PGZ

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Par défaut
    Bonjour,
    J'ai testé ta méthode Mercatog ca fonctionne à merveille!
    Merci beaucoup

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

Discussions similaires

  1. Lecture d'un fichier texte dans un projet TOMCAT
    Par brice_nice dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 03/07/2005, 15h04
  2. lecture d'un fichier texte
    Par benahpets dans le forum MFC
    Réponses: 5
    Dernier message: 22/06/2005, 11h50
  3. [C#] Lecture d'un fichier texte (farfelu)
    Par choas dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/04/2005, 14h33
  4. Lecture d'un fichier Texte
    Par jcharles dans le forum Bases de données
    Réponses: 8
    Dernier message: 27/10/2004, 14h58
  5. Stockage de données & lecture d'un fichier texte
    Par petitours dans le forum C++Builder
    Réponses: 6
    Dernier message: 13/03/2004, 14h05

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