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] Problème avec EOF qui "sort" avant la fin du fichier [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [VBA] Problème avec EOF qui "sort" avant la fin du fichier
    Bonjour,

    J'utilise la macro suivante, extrêmement simple, je veux simplement lire mon fichier toto.txt ligne par ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Go()
        Dim File_Path As String
        File_Path = "C:\toto.txt"
        Open File_Path For Input As #1
        row_num = 0
        Do Until EOF(1)
            Line Input #1, Line_FromFile
            row_num = row_num + 1
        Loop
        Close #1
        MsgBox row_num
    End Sub
    Cependant, mon fichier toto.txt (disponible ici sous forme zippée), contient des caractères spéciaux (il s'agit d'un extrait de dump d'une table de données).
    Il semblerait que l'un de ces caractères spéciaux (que vi fait apparaître en tant que "^Z" à la 2ème ligne, colonne 249 de mon fichier) perturbe la commande EOF qui du coup, "sort" à la ligne 2 dès qu'elle rencontre ce caractère.

    Ma variable row_num affiche donc la valeur 2, alors que mon fichier contient 6 lignes...
    Je voudrais que ma macro VBA parcoure bien l'ensemble des 6 lignes de mon fichier.
    D'où vient le problème, et comment corriger mon code pour que ça marche ?

    Par avance, merci !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do while EOF(1)
            Line Input #1, Line_FromFile
            row_num = row_num + 1
        Loop

  3. #3
    Invité
    Invité(e)
    Par défaut
    J'ai testé, mais ça ne marche pas... row_num = 0

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonsoir
    essaie de ne pas utiliser des noms d'expression vba pour tes fonctions

    adapte ton file_path

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Gos()
        Dim File_Path As String
        File_Path = "C:\Users\polux\Desktop\test2.txt"
        Open File_Path For Input As #1
        laChaine = Input(LOF(1), #1)
        row_num = UBound(Split(laChaine, vbCrLf))
        Close #1
        MsgBox row_num
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Invité
    Invité(e)
    Par défaut
    Malheureusement, ça ne marche pas non plus...

    J'obtiens le message d'erreur suivant sur l'instruction "laChaine = Input(LOF(1), #1)" :

    Erreur d'exécution '62' :
    L'entrée dépasse la fin de fichier

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Ok visiblement la methode open n'aime pas ton fichier
    tant pis on par sur l'object scriptingfilesystem alors
    et la ca fonctionne !!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    Sub test3()
    Dim oFSO as object,ofile as object ,texte as string 
     Const ForReading = 1: Const ForWriting = 2
     File_Path = "C:\Users\polux\Desktop\toto.txt"
     
    Set oFSO = CreateObject("Scripting.FileSystemObject")
        Set ofile = oFSO.OpenTextFile(File_Path, ForReading)
    texte = ofile.readall
    MsgBox UBound(Split(texte, vbCrLf))
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 15h59
  2. (jsp) problème avec sql qui contient la date
    Par future dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 31/08/2005, 16h18
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24

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