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 :

Conversion fichier texte ligne / colonne [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 85
    Points : 96
    Points
    96
    Par défaut Conversion fichier texte ligne / colonne
    Bonjour à tous,
    je viens vers vous pour vous faire part de mon incapacité à me tirer d'affaire par mes propres moyens.
    Je suis actuellement en stage, ayant un projet en VBA.
    Cependant je n'ai jamais codé en VBA et je ne comprends vraiment pas tout, j'en appelle donc à votre indulgence pour m'aider à comprendre mon erreur.

    Mon but est de convertir un fichier txt en un autre fichier txt.

    Le premier:
    Num module     P     SH     RH
    0              P0    SH0    RH0
    1              P1    SH1    RH1
    0              P0    SH0    RH0
    1              P1    SH1    RH1
    Le second doit être sous la forme :

    Num module     P     SH    RH
    0              P0    SH    RH0         1       P1         SH1       RH1
    0              P0    SH    RH0         1       P1         SH1       RH1
    PS : il y a plusieurs cas "0" et "1" car on traite les données à différents moments

    Pour se faire, j'ai créé une petite maccro qui permet de travailler dans le meme fichier txt et de convertir suivant mon cahier des charges les données en colonne sous la forme :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Sub enlever_retour_chariot()
    'Cocher référence : Windows Script Host Object Model
        Dim fso As IWshRuntimeLibrary.FileSystemObject
        Dim oTs As IWshRuntimeLibrary.TextStream
        Dim sFichierTxt As String, sContenu As String, sLigne As String
        Dim i As Integer, x As Integer
        Dim nbre_ligne As Long
     
        sFichierTxt = DestinationFichier
        Set fso = New IWshRuntimeLibrary.FileSystemObject
     
        nbre_ligne = nb_ligne
     
        Set oTs = fso.OpenTextFile(sFichierTxt, ForReading)
        sContenu = oTs.ReadAll
     
        i = 0
        For x = 0 To nbre_ligne
            sLigne = oTs.ReadLine
            oTs.SkipLine
     
            If (i = nbmod) Then
                i = 0
            End If
     
                If (i <> nbmod - 1) Then
                    sLigne = Replace(Replace(sContenu, vbCr, " "), vbLf, " ")
                End If
     
            i = i + 1
     
        Next x
     
        oTs.Close
     
     
        Set oTs = fso.OpenTextFile(sFichierTxt, ForWriting)
        oTs.Write sContenu
        oTs.Close
     
        Set oTs = Nothing
        Set fso = Nothing
     
    End Sub
    Cette fonction permettant de supprimer un retour ligne sur (nbre_module - 1)

    Seulement à la compil je reçois le message :
    Erreur d'exécution 62 :
    L'entrée dépasse la fin du fichier
    Le débogage m'emmenne sur la ligne : sLigne = oTs.ReadLine

    Est-ce que quelqu'un à une quelconque idée ?

    Merci

    je précise que pour la ligne

    nbre_ligne=nb_ligne

    nb_ligne est une maccro qui se fait automatiquement qui calcule le nbre de lignes du fichier txt en question.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonjour,

    Bienvenue sur le forum.

    Quelques infos générale :
    - lorsqu'il y a du code VBA, il est préférable d'utiliser le sous-forum Excel\VBA (tu trouveras de l'aide plus facilement pour ce type de problème).
    - lorsqu'on ajoute du code, il est recommander d'utiliser la mise en forme code. (sélection du code, puis clique sur l'icone # dans l'éditeur).

    Sinon le problème vient du fait que le fichier est lu en totalité ligne 15 avec sContenu = oTs.ReadAll.

    Du coup à la prochaine lecture, il essaye de lire depuis la fin de fichier, ce qui provoque une erreur.

    La boucle devrait plutôt ressembler quelque chose à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
       i = 0
        For x = 0 To nbre_ligne
            sLigne = oTs.ReadLine
     
            ' interrompt la boucle si on est en fin de fichier 
            If oTs.AtEndOfStream Then
                Exit For
            End If
     
            '.... fait le traitement souhaité
            sContenu = sContenu + Replace(Replace(sLigne, vbCr, " "), vbLf, " ")
     
            i = i + 1
        Next x

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 85
    Points : 96
    Points
    96
    Par défaut
    D'accord, j'ai fais qqes petites modifications dont la tienne et ça marche ! Super !
    Je te remercie de l'attention que tu as porté a mon message, et des qqes conseils que tu m'as fournit sur le forum.
    A bientot peut etre

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonsoir,

    Content que tu es trouvé une solution à ton problème.


    Bonne soirée.

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

Discussions similaires

  1. Load fichier texte 2 colonnes
    Par nocolach dans le forum MATLAB
    Réponses: 5
    Dernier message: 09/07/2008, 19h41
  2. Lire un fichier texte ligne par ligne
    Par diogene dans le forum Contribuez
    Réponses: 3
    Dernier message: 24/01/2008, 19h25
  3. Réponses: 3
    Dernier message: 22/01/2007, 10h38
  4. Lire un fichier texte ligne par ligne
    Par LeLaid dans le forum Access
    Réponses: 7
    Dernier message: 05/12/2006, 16h05
  5. concaténer fichiers texte ligne par ligne
    Par tiboleo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/03/2006, 13h45

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