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 :

[Excel - VBA] lecture de fichier txt


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 40
    Points
    40
    Par défaut [Excel - VBA] lecture de fichier txt
    Bonjour à tous,

    J'ai un fichier texte que j'utilise, pour l'instant, en le lisant ligne par ligne.
    Seulement, ce fichier s'agrandit de jour en jour, et donc, le temps de parcourt est de plus en plus long.
    J'aimerais donc faire une sorte de recherche dicchotomique.
    Pour ça, je dois connaître le nombre de lignes du fichier et je dois aussi pouvoir lire à partir d'une ligne prédéfinie. Mais, je ne sais pas trop quelles fonctions utiliser ni vraiment comment mettre ma recherche en oeuvre.
    Est-ce que quelqu'un saurait m'aider svp ?

    Merci d'avance,
    Stéphane

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Points : 304
    Points
    304
    Par défaut
    Bonjour simstef,

    En cherchant un peu, tu serais tombé sur cette contribution d'ouskel'n'or

    J'espère que tu y trouveras ton bonheur et que cela te permettra de débuter

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 40
    Points
    40
    Par défaut
    Hello flo_flo,

    Merci pour ta réponse, mais, je me suis peut-être mal expliqué.
    Les fonctions reprisent ici sont utilisées pour d'autres classeurs excel.
    Ce que je cherche, ce sont des fonctions pour des fichiers texte.

    Merci
    Stéphane

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Si ça peut t'aider...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub LectureDunFichierTexte()
        Open "d:\FichierText.txt" For Input As #1
        Do While Not EOF(1)
            Line Input #1, Ligne
            MsgBox Ligne
        Loop
        Close #1
    End Sub
    Mais je vois venir un autre question et en prévision, dis-nous quel est le séparateur de données dans ton txt ?
    A+

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 40
    Points
    40
    Par défaut
    lol raté
    Pour le séparateur, ce n'est pas la peine.
    En fait, j'ai déjà fait le code qui me permet de récupèrer ce que je veux.
    Ici, j'aimerais simplement l'optimiser en retrouvant plus vite l'info.

    Pour l'instant, j'utilise le système ligne par ligne, et, ensuite, instr et Mid pour récupèrer les autres valeurs intéressantes de la ligne.

    Merci pour ta réponse

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu as pensé à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LaLigne = "Toto;Titi;Tata;Tutu"
    separateur = ";"
    Lindex = 2
    MsgBox Split(LaLigne, separateur)(Lindex)

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 40
    Points
    40
    Par défaut
    Oui, j'y avais pensé au début, mais le fichier log de départ n'est pas bien organisé.
    Il y a plusieurs séparateurs alors j'avais utilisé une fonction multisplit.
    En plus, il ya des lignes qui s'intercalent s'il y a des erreurs qui sont détectées.
    Et, malheureusement, je ne sais pas interférer sur la création du fichier log puisqu'il m'est envoyé par un autre service qui utilise le même programme et le même fichier log depuis des années. enfin bref, plutôt que de crèer des discutions intra services qui n'aboutiraient à rien, je préfére m'adapter à ce qu'ils m'envoient.

    donc, pour l'instant, je parcours le fichier ligne par ligne jusqu'à ce que je trouves la variable recherchée. Une fois que je l'ai trouvée, je retire de cette même ligne les infos dont j'ai besoin.
    Ce qui m'ennuie, c'est de devoir parcourrir ligne par ligne.
    Je voudrais pouvoir faire une recherche plus rapide et qui demande moins de ressources. Actuellement, il a 172695 lignes dans le fichier et il grandit chaque jour.

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu ne peux pas limiter le N° de première nouvelle ligne de lecture à la première ligne ajoutée ? Ça limiterait le tps de procédure.
    Ça te pose un problème ?
    A+

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 40
    Points
    40
    Par défaut
    C'est vrai que je n'avais pas du tout pensé à cette façon de faire... honte à moi.
    Je suis en train de réfléchir comment je pourrais faire ça.

    Merci en tout cas.

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu stockes le dernier N° de ligne "précédent" dans une cellule d'une feuille (masquée si tu veux) et tu mets le "dernier" dernier numéro de ligne avant de quitter.
    A la relecture, tu comptes les lignes de ton txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    AncienneNoDerniereLigne = Worksheets("Mem").cells(1,1).value
        Open "d:\FichierText.txt" For Input As #1
        Do While Not EOF(1)
            NoLigne = NoLigne + 1
            if NoLigne > AncienneNoDerniereLigne then 
                'et là tu lis
                Line Input #1, Ligne
                ' et là tu traites ^^^
            endif
        Loop
        Close #1
        Worksheets("Mem").cells(1,1).value = NoLigne 'ou NoLigne -1, là tu vois
    Amuse-toi bien

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2007
    Messages : 49
    Points : 40
    Points
    40
    Par défaut
    Merci beaucoup à toi !
    Je marque comme résolu.

    A bientôt
    Stéphane

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/03/2011, 09h33
  2. Réponses: 2
    Dernier message: 11/03/2011, 18h06
  3. [VBA Excel] Extraction de données fichier txt vers Excel et mise en forme
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/05/2008, 11h45
  4. [VBA - EXCEL] Pb de conversion fichier txt avec methode TextToColumns
    Par bicoun dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/02/2007, 09h46
  5. [VBA-E]import fichier TXT et séparateur
    Par arkazar dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/04/2006, 17h10

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