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 :

TextStream Comment revenir en arrière [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut TextStream Comment revenir en arrière
    Bonjour a tous,

    Je suis en train de developper un petit truc sur excel qui lit un fichier. Pour ce faire j'utilise la librairie : Microsoft Scripting RunTime et plus particulièrement l'objet : TextStream.
    Code Exemple d'utilisation de TextStream : 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
    Sub Test(stPath as string)
    Dim tsAllFile As Scripting.TextStream    'ts pour TextStream
    Dim fsoMngr As Scripting.FileSystemObject 'fso pour file system Object
     
      'creation de FileSystemManager
      If fsoMngr Is Nothing Then Set fsoMngr = New Scripting.FileSystemObject
     
      'ouverture du Fichier en TextStream
      Set tsAllFile = fsoMngr.GetFile(stPath).OpenAsTextStream(ForReading)
     
      'Lecture
      While Not tsAllFile.AtEndOfStream
        Debug.Print tsTmp.Read(1)
      Wend
     
    End Sub
    Mon problème est le suivant. J'aimerai pouvoir lire deux fois le meme caractère.
    J'ai essayé un tsTmp.skip -1 en vain!
    Il y a bien une solution brutale mais elle n'est pas du tout optimale en temps calcul : il faut fermer le fichier et le réouvrir et mettre le curseur a l'ancienne position....

    Bref ma question est fort simple comment revenir en arrière d'un caractère pendant la lecture du TextStream.

    Si vous avez des idées je suis preneur!

    E.G.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    en lecture séquentielle, normalement non.

    Maintenant voir la Manipulation des fichiers en VBA … Je ne sais si la méthode Skip accepte une valeur négative …

    Ne voyant toujours pas l'intérêt de la demande, mais à partir du moment où une ligne a été lue dans une variable,
    il n'est quand même pas difficile d'extraire le dernier caractère via la fonction Right par exemple !

    Personnelement j'évite FSO, je préfère la méthode d'accès plus rapide de la lecture du fichier complet en mémoire
    (pas de souci avec des fichiers > 1 Mo) en séparant les lignes avec Split le tout en une seule ligne de commande …

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Bonjour,
    Je ne sais si la méthode Skip accepte une valeur négative …
    La réponse est dans mon message. Je ne lis pas ligne par ligne mais caractère par caractère donc le Right ne s'applique pas!

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Techniquement si car le caractère à droite d'une chaine d'un seul caractère est bien ce caractère ‼

    Donc n'est-ce point idiot de vouloir relire un caractère qui vient juste d'être lu dans une variable ? Où est l'intérêt ?

    Qui plus est as-tu lu puis testé la méthode Skip ?

  5. #5
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    En fait, c'est que mon algo avait une faille de conception... L'impossible de faire ça sur le TextStream était un indice!
    Sinon je ne pouvais pas faire de lecture avec ReadLine puis parser de mon coté la chaine pour des raisons aussi diverses que variées. Il me fallait obligatoirement rester sur le TextStream.

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

Discussions similaires

  1. [WD17] Comparaison de version ou comment revenir en arrière ?
    Par franck34matlab dans le forum WinDev
    Réponses: 10
    Dernier message: 29/05/2014, 17h21
  2. Réponses: 6
    Dernier message: 26/05/2010, 10h35
  3. [REG EXPR] comment revenir en arrière
    Par floanne dans le forum Langage
    Réponses: 13
    Dernier message: 17/12/2007, 11h09
  4. [Modification données] Comment revenir en arrière?
    Par claralavraie dans le forum Oracle
    Réponses: 7
    Dernier message: 01/02/2006, 17h56

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