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-E] Derniere ligne fichier texte


Sujet :

Macros et VBA Excel

  1. #61
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Alors, écoutes-moi bien :
    1) les différents codes que je t'ai donnés jusqu'à présent devraient avoir suffisamment éclairé ta lanterne pour que tu sois en mesure de faire ce que tu veux, y compris la modification de chaque ligne (instr, mid, etc.. et replace si tu as VB6)
    2) j'ai bien vu et revu le petit bout de fichier que tu as communiqué et m'amuse beaucoup depuis hier
    3) certains "fichiers" n'ont pas une structure "au hasard"
    4) certains fichiers, conçus d'une certaine manière, ne sont exploitables qu'avec l'outil que leur concepteur a bien voulu communiquer aux utilisateurs éventuels qu'il a choisis.
    5) si tes fichiers sont dans ce cas, la modification d'un seul caractère les rend inexploitables.
    6) ils sont en général dotés d'élements destinés à en vérifier l'intégrité (en général au début et à la fin du fichier)
    7) je crois bien que tu perds d'autant ton temps que tu ne me parais pas particulièrement rapide et agile
    8) A toi de faire maintenant joujou si celà t'amuse, mais fais-le alors seul !

  2. #62
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut

    Ce n'est pas un fichier inexploitable lorsque l'on modifie un caractere... car justement tous les codes proposés jusque maintenant n'ont donné le résultat voulu qu'après une modification du fichier...

    Il est vrai vrai que je ne suis pas "agile", je n'ai jamais eu à traiter des fichiers textes jusque manitenant c'est d'ailleur pour ca que je n'ai pas eu les reflexes de regarder si il y avait des espaces etc...

    Je pense pouvoir résoudre mon problème, grace à ton code, si j'arrive à supprimer les espaces du fichier mais je ne sais pas comment faire...

    Citation Envoyé par jmf
    pour que tu sois en mesure de faire ce que tu veux
    Ca je ne sais pas et je n'ai pas trouvé

  3. #63
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par Elstak
    sinon j'essaye egalement de voir la solution de bbil qui enf ait peut etre bonne si je prend "large" j'aurai la derniere ligne et je pourai voir si il y a les caractere que je cherche dedans !
    bon alors tu en est ou ?
    tu as changé d'objectif ? ou ton objectif est toujours comme au début du post ( 5 pages avant..) de savoir si ton fichier est complet ... en examinant la derniére ligne ..., si oui le code que je t'ai transmis (en 2 fois...) doit être suffisant..

  4. #64
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Oui bbil, mon objectif est toujours le meme, je vais certainement utiliser ton code (je fait egalement d'autre chose entre deux... c'est pour ca que ca traine un peu) mais je tiendrai au courant des résultats

  5. #65
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Bon comme je n'arrive pas à trouver la derniere ligne directement (j'essayais d'abord d'avoir la "belle" solution pour trouver mon résultat c'est pour ca que je gardais ta solution (bbil) en secours et que j'essayais celle de jmf en premeir), j'ai donc repris les morceaux de codes et fait ca (pas encore bien mis en 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
    Sub bbil()
     
       specfichier = "D:\excel\nom.txt"
       Dim iSkip As Long 'Nbre caractéres à laisser..
       Dim stLu As String
       Dim fs As FileSystemObject
       Dim f As File 'Rajouter référence Microsoft scripting...
       Dim t As TextStream
       Set fs = CreateObject("Scripting.FileSystemObject")
       Set f = fs.GetFile(specfichier)
       Set t = f.OpenAsTextStream
     
       iSkip = f.Size - 400 ' On conserve seulement les 400 derniers caractères
       If iSkip > 0 Then t.Skip iSkip
       stLu = t.ReadAll
       MsgBox (stLu)
     
       Dim iPos As Integer
        iPos = InStrRev(stLu, ";") 'Recherche la position du dernier ;
        stLu = Left(stLu, iPos) 'prend les caractéres jusqu'au dernier ;
        iPos = 1 + InStrRev(stLu, Chr(13)) 'Recherche la position du dernier retour chariot
        If iPos < Len(stLu) Then
         stLu = Mid(stLu, iPos)
        End If
        Debug.Print "<" & stLu & ">"
     
    End Sub
    Je comprend la logique de ton code mais pas tres bien la fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        iPos = 1 + InStrRev(stLu, Chr(13)) 'Recherche la position du dernier retour chariot
        If iPos < Len(stLu) Then
         stLu = Mid(stLu, iPos)
        End If
    Je comprend pas trop ce petit morceau (enfin son utilité, le resultat est bon sans ce code), je suppose que chr(13) permet de voir un retour chariot?

    en tout cas merci à tous ceux qui m'ont aidé (meme si ils ont pu perdre un peu patience )

  6. #66
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par Elstak
    Je comprend pas trop ce petit morceau (enfin son utilité, le resultat est bon sans ce code), je suppose que chr(13) permet de voir un retour chariot?
    le but du morceau de code cité .. est en considérant que dans tes 400 derniers carcatéres tu as plusieurs lignes de récupérer la derniére ligne...

    stlu à été précédament nettoyé des caractéres parasites suivant le dernier ";"...

    le code donné permet de récupérer dans stLu les caractéres qui suivent le dernier retour chariot..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       iPos = 1 + InStrRev(stLu, Chr(13)) 'Recherche la position du dernier retour chariot
    iPos étant ici censé donné la position du caractére à la suite du retour chariot... ? un petit fonctionnement en mode debug devrai pouvoir te permettre de trouver pourquoi à priori ce code est sans effet ...

  7. #67
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    à oui j'y pense ... j'ai vu que tu as laissé le message box ... le résultat tu la bien regardé dans la fenêtre exécution ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Debug.Print "<" & stLu & ">"

  8. #68
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Ah oui ok
    Moi j'avais cherché le nombre pour n'avoir que la derneire ligne donc forcement si je m'arrange pour n'avoir qu'elle, le code ne sert plus trop...

    pourtant si je met 600 je vois dans la fenetre debug les 2 dernieres lignes

    (je me trompe surement mais dans Mid il ne faut pas mettre 3 parametres? Texte, caractere de debut, nombre de caractere?)


  9. #69
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    pour mid :

    Citation Envoyé par Aide en ligne Excel
    Mid(string, start[, length])

    La syntaxe de la fonction Mid comprend les arguments nommés suivants :

    Élément Description
    string Expression de chaîne dont sont extraits les caractères à renvoyer. Si l'argument string contient une valeur de type Null, Null est renvoyé.
    start Donnée de type Long. Position du caractère dans l'argument string qui marque le début de la partie à extraire. Si la valeur de l'argument start est supérieure au nombre de caractères contenus dans l'argument string, la fonction Mid renvoie une chaîne de longueur nulle ("").
    length Facultatif. Donnée de type Variant (Long). Nombre de caractères à renvoyer. Si l'argument length est omis ou si le nombre de caractères du texte (y compris le caractère qui occupe la position start), est inférieur à la valeur de cet argument, tous les caractères à compter de la position start et jusqu'à la fin de la chaîne sont renvoyés.
    essai de voir la valeur du dernier Ipos... , peu-être ton fichier ne contient pas des chr(13) mais des chr(10)...

  10. #70
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Yes, c'etai bien des chr(10)

    car avec des chr(13) ipos valait 1...

    voilà encore merci !

  11. #71
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut
    Citation Envoyé par ouskel
    Mince, comment a va s'occuper maintenant que c'est résolu ?
    L'a po compris ! (ca donne quoi en plus clair? )

  12. #72
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Z'en faites pas ! C'est reparti :
    http://www.developpez.net/forums/viewtopic.php?t=487374
    (toujouts ces sacrés fichier bizarres qui ont des espace et retour charriot partout

  13. #73
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Points : 448
    Points
    448
    Par défaut


    Bon allez t'as bien le droit de te moquer un peu vu que tu m'aides bien

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 4 PremièrePremière 1234

Discussions similaires

  1. Suppression ligne fichier texte
    Par stephane92400 dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 25/12/2009, 16h14
  2. [VBA-E] Calcul sur fichiers Texte
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/02/2007, 14h37
  3. [VBA-E]derniere ligne non vide
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/07/2006, 10h48
  4. [VBA-E] Récupération données fichier texte
    Par Theo28fr dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/07/2006, 08h08
  5. [VBA-E] Lire un fichier texte
    Par Lnmex dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/05/2006, 19h33

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