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 :

Optimiser la lecture du nombre de lignes et colonnes d'un fichier texte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Par défaut Optimiser la lecture du nombre de lignes et colonnes d'un fichier texte
    Bonjour,

    J'aimerais savoir si il existe une autre manière de coder ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    While Not src.atendofline 'tant qu'on n'est pas en fin de fichier on saute des colonnes
         src.Skip (1)
    Wend
     
    nbzone = (src.Column - 22) / 21 / 2
     
    While Not src.AtEndOfStream 'tant qu'on n'est pas en fin de fichier on saute des lignes
         src.skipline
    Wend
     
    nbligne = src.Line
     
    ReDim Tableau_Extraction_Temperature(1 To nbligne, 0 To nbzone) As Single

    Le problème c'est que j'ai une fichier texte avec plus de 51 000 lignes, donc cette manière de coder prends pas mal de temps.
    Si vous connaissez une manière d'aller plus vite, je vous en serais fortement reconnaissant

    Merci !

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Comment as-tu défini "src" ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Par défaut
    Merci de ta réponse.
    Voici les déclarations :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim fs As Object, src As Object
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set src = fs.OpenTextFile(x, 1)
    Cordialement

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Si ton but est de trouver le nombre de lignes et de colonnes, utilise plutôt ADO. L'objet recordset te donne le nombre de champs (colonnes) :

    "Rst" étant le recordset,

    et le nombre de lignes :


  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Une approche avec FSO pour le nombre de lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nblignes = UBound(Split(src.ReadAll, vbCrLf))
    Pour le nombre de colonnes, je ne comprends pas ce que tu fais; est-il variable ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Par défaut
    Merci pour tes réponses.

    "Rst" étant le recordset,
    Ce n'est pas une variable? Je n'ai pas besoin de le definir?


    Pour le nombre de colonnes, je ne comprends pas ce que tu fais; est-il variable ?
    Ce n'est pas moi qui est codé à l'origine, je ne fais que reprendre un code existant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbzone = (src.Column - 22) / 21 / 2
    Ce que je peux te dire, c'est que le fichier Texte comprend un certain nombre de lignes que l'on va toutes extraires.
    Par contre les colonnes c'est différents. On ne va pas extraire toutes les données (seulement la température)
    Chaque Cas renvoie à deux choses du fichier texte (température et y). Mon nombre de colonne correspond au nombre de cas donc :
    /2 c'est pour n'avoir qu'une colonne sur deux (la température)
    /21 c'est parce que chaque colonne (dans mon futur tableau) correspond à 21 colonnes (du fichier texte) car il y a 21 caractères pour chaque température.
    -22 c'est parce que la première colonne à 22 caractères et correspond aux temps.


    Exemple :
     0.000000000000E+00    0.000000000000E+00   0.000000000000E+00   0.000000000000E+00   0.000000000000E+00
     colonne temps (22c)   colonne T°C (21c)    colonne y (21c)      colonne T°C (21c)    colonne y (21c)   
    le scr.Column va nous donner => 106 colonnes du fichier texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbzone = (src.Column - 22) / 21 / 2 = (106-22) / 21 / 2 = 2
    J'espère avoir été assez explicit
    Du coup, parmi les solutions que tu m'as proposé, quelle est pour toi la plus rapide?

    Cordialement.

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Désolé, je ne comprends pas ton explication pour le nombre de colonnes. Est-ce qu'il s'agit d'un fichier texte classique (les champs sont séparés par une tabulation) ? Est-ce que le nombre de colonnes est fixe ? Est-ce que tu peux mettre un fichier exemple de 3 ou 4 lignes en disant ce qu'il faut récupérer ?

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/03/2014, 14h35
  2. Réponses: 2
    Dernier message: 15/11/2009, 17h03
  3. Vérifier le nombres de lignes et colonnes utilisé
    Par derin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/09/2008, 16h22
  4. Réponses: 4
    Dernier message: 09/07/2008, 10h43
  5. Compter le nombre de ligne où colonne(x)=colonne(y)
    Par titou2 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/05/2007, 20h10

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