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 :

Macro permettant de recupérer des infos dans un fichier .txt externe [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Macro permettant de recupérer des infos dans un fichier .txt externe
    Bonjour a tous !

    Voila, j'utilise Excel 2003 (simple utilisateur, pas programmeur VBA) et je cherchais a voir si il était possible de créer une macro permettant de chercher des infos dans un fichier .txt externe.

    L'idée étant de récupérer plusieurs extraits de plusieurs documents .txt et de récupérer et lister ces infos dans un tableur Excel.

    Je vous remercie d'avance pour votre aide .

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Salut
    Cette page des tutoriels devrait t'intéresser:

    http://warin.developpez.com/access/fichiers/#LII-B-1

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Salut billx06,

    merci pour ton lien. En effet, cela explique comment chercher des données dans un fichier texte mais j'aimerai juste savoir :

    1 / quelle est la formule pour chercher une ligne précise dans un document texte (les exemples du tutoriel concernent soit la première ligne d'un document, soit le document en complet)

    2 / quelle est la formule pour récupérer la donnée dans une cellule Excel ?

    Merci encore !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Voici un bout (j'en ai enlevé une partie) du code que j'avais écris pour récupérer des infos d'un fichier relai.txt
    Celui-ci était composé de 10 données par lignes séparées par des virgules.

    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
     
    Sub ecriredepuisrelaidansexcel()
    Dim ifile As Integer
    ifile = FreeFile
    Dim x
    Dim a1, a2, a3, a4, a5, a6, a7, a8, a9, a10
    Open "C:\Documents and Settings\Bill\Bureau\relai.txt" For Input As #ifile
    x = 1
    Do While Not EOF(1)
    Input #ifile, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10
    'boucle possible
    Cells(x, 1) = a1: Cells(x, 2) = a2: Cells(x, 3) = a3: Cells(x, 4) = a4: Cells(x, 5) = a5: Cells(x, 6) = a6
    Cells(x, 7) = a7: Cells(x, 8) = a8: Cells(x, 9) = a9: Cells(x, 10) = a10
    x = x + 1
    Loop
    Close #ifile
    End Sub
    Après si tu ne veux qu'un ligne en particulier c'est que tu recherches par un élément particulier.
    par exemple le nom qui est devant donc la donnée a1
    Pour ça il faut que tu définisses le nom de recherche par un userform, le nom trouvé dans une cellule ou autre et insérer ceci au niveau de la 'boucle possible

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour ce code, cependant, j'obtiens toujours l'erreur suivante lorsque j'essaye de le lancer: Run-time error '62': Input past end of file.

    Étant donné que mon fichier texte est organisé différemment du tien (cad. il ne contient pas 10 valeurs sur la même lignes séparées par des virgules), j'ai essayé de réorganiser le fichier comme le tien afin de comparer mais j'ai toujours cette erreur. Tu as une idée d'où elle peut provenir ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2008
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    voici un exemple de la premiere ligne du fichier txt:
    "client1","marque","fournisseur",-8,1,#2006-10-27#,#2006-10-28 17:06:51#,"ERREUR","A RETOURNER"

    les dates sont séparées en plus par #, les noms par "
    je pense que ca doit venir de là

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Bonjour,

    Si ton fichier ne contient pas un certain nombre d'éléments à récupérer par ligne, alors voici une solution plus simple qui récupère ta ligne en enter. Imaginons que tu veuilles récupérer la ligne N°15.

    Voici le code de billx06 modifié pour atteindre ce résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub ecriredepuisrelaidansexcel2()
    Dim ifile As Integer
    ifile = FreeFile
    Dim x as Long
    Dim Data as String
    Open "C:\Documents and Settings\Bill\Bureau\relai.txt" For Input As #ifile
    x = 1
    Do While Not EOF(1)
        Line Input #ifile, Data 'Récupère ta ligne
        If x = 15 Then Cells(1,1) = Data 'Inscrit Data dans la 1ere case de ton classeur
        x = x + 1
    Loop
    Close #ifile
    End Sub
    Bon courage !

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci les gars, cela fonctionne très bien .

    Maintenant j'aimerai ne récupérer que les chiffres qui sont dans le fichier texte, c'est-a-dire que il y a également du texte a chaque ligne, mais je ne voudrais récupérer que les nombres. Y a-t-il moyen d'ajouter un check pour cela ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Dans ce cas, il te faut traiter chaque caractère un à un lors de la récupération de la ligne. Reprenons notre bout de code :

    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
    Sub ecriredepuisrelaidansexcel3()
    Dim ifile As Integer
    ifile = FreeFile
    Dim x as Long
    Dim Data as String, Data_2 as String
    Dim Char as String * 1
    Dim CodeASCII as Integer, i as Integer
     
    Open "C:\Documents and Settings\Bill\Bureau\relai.txt" For Input As #ifile
    x = 1
    Do While Not EOF(1)
        Line Input #ifile, Data 'Récupère ta ligne
        If x = 15 then
            For i = 1 to Len(Data)
                Char = Mid(Data, i, 1)
                CodeASCII = Asc(Char) 'Récupère le Code ASCII du caractère
                If CodeASCII > 47 and CodeASCII < 58 Then Data_2 = Data_2 & Char
            Next i
            Cells(1,1) = Data_2 ' N'inscrit que les nombres dans la 1ère case de ta feuille
        End If
        x = x + 1
    Loop
    Close #ifile
    End Sub
    Tu as le résultat espéré ?

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Ca y est oui, j'ai ce que je voulais

    Merci beaucoup les gars !

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

Discussions similaires

  1. Recupérer des chaines dans un fichier XML
    Par uskiki85 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 14/04/2010, 17h05
  2. Réponses: 5
    Dernier message: 05/12/2008, 15h23
  3. Réponses: 8
    Dernier message: 23/04/2008, 20h56
  4. Recupérer des lignes dans un fichier ou une variable
    Par vince2005 dans le forum Langage
    Réponses: 12
    Dernier message: 29/09/2006, 18h46
  5. [langage] [PERL] prendre des infos dans un fichier log
    Par osiris73 dans le forum Langage
    Réponses: 2
    Dernier message: 24/05/2005, 16h42

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