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

VB 6 et antérieur Discussion :

Supprimer des lignes dans un TXT pendant un Output


Sujet :

VB 6 et antérieur

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut Supprimer des lignes dans un TXT pendant un Output
    Salut,

    Savez-vous s'il est possible dans un txt en cours d'écriture (For OUTPUT) de supprimer les 5 dernières lignes que l'on vient d'écrire
    Cela peut paraître absurde, mais pour simplifier la correction de mon code, je voudrais enlever les 5 dernières lignes écrites en PRINT #1 et continuer ensuite à écrire d'autres lignes.


    Merci d'avance

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,
    Pourquoi écrire puis supprimer ?
    Il suffit d'écrire
    à la place de print variable pour les 5 dernière lignes ...
    et tu auras tes 5 sauts ... (si tu veux des sauts=)
    ou
    de ne pas écrire du tout su tu ne veux pas de sauts...
    puis écrire le reste...
    Comment se présente exactement ton problème ?
    Si c'est parce que tu ignores à l'avance le nombre de lignes, dis-nous et on te dira alors comment procéder.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut
    Mon code est composé de boucle et de tests multiples.Malheureusement pour moi, tel que je l'ai fait, je commence à écrire 5 lignes puis je passe au 1er test :
    (simplifié)
    écritures des 5 lignes
    si la colonne d'Excel n'est pas vide alors
    de la ligne 1 à 5000
    si la cellule = "TOTAL" Alors
    si cellule (ligne, colonne) = 1 alors...
    si cellule (ligne, colonne) = 2 alors...
    si cellule (ligne, colonne) = 3 alors...
    si cellule (ligne, colonne) = 4 alors...

    Mon pb vient que sur ma dernière condition, j'ai découvert un pb et du coup, je suis obligé de tester 3 autres conditions uniquement pour elle.

    Bref, Qd arrive mon dernier test et mes dernières sous conditions, j'ai déjà écrit les 5 lignes et je ne peux pas les changer de place car cela casse tout mon fichier txt de sortie. (le fichier txt qui sort est destiné à un progiciel de compta et doit respecter un format imposé)

    Un collègue m'a donné une idée, si ma demande est impossible :
    fermer le txt lors de ma dernière condition.
    le ré-ouvrir en mode modification
    supprimer les 5 dernières lignes (je ne connais pas la manips)
    fermer le fichier
    le ré-ouvrir en mode Ajout.


    Je pense que sa solution est valable mais j'espère que l'un de vous aura une solution plus simple pour supprimer 5 lignes

    Merci pour vos aides à tous

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Tu en es certain ?

    Bon...
    Je veux bien...
    Mais je suis de la race de ceux qui privilégient la réflexion à la copie pure et simple...

    Si j'ai bien compris, tu lis des cellules excel par pilotage depuis VB6 et ne décides de ne retenir des valeurs que sous condition...

    Nous allons simuler...

    Dans l'exemple qui suit : un bouton de commande Command1 et un autre Command2
    Chaque clic sur command1 simulera la retenue d'une valeur... Clique au moins 7 fois (pour simuler 7 valeurs retenues, par exemple)

    Voies ce qui se passe
    Clique ensuite sur Command2... ===>> Voies ce qui se passe ...===>> puis ouvre c:\essait.txt pour voir ce qui s'y est écrit...

    Tu devrais vite comprendre le mécanisme assez simpe ,...

    Code :

    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
    Private toto As String, compteur As Integer
    Private Sub Command1_Click()
    'ici on simule ce que tu retiens (tes alors..., je suppose)
    'à chaque clic, tu simules finalement un "alors ...."
    'compteur n'est là que pour cet exemple, rien de plus... oublie-le dans ton appli
     If compteur = 0 Then compteur = 1
     If toto = "" Then
       toto = toto & "ligne " & compteur
     Else
       toto = toto & vbCrLf & "ligne " & compteur
     End If
     compteur = compteur + 1
     MsgBox "voilà ce que j'ai en tout " & vbCrLf & toto
     End Sub
     
    Private Sub Command2_Click()
      titi = Split(toto, vbCrLf)
      For i = 0 To UBound(titi) - 5
        If i = 0 Then
          mavar = mavar & titi(i)
        Else
          mavar = mavar & vbCrLf & titi(i)
        End If
      Next
      MsgBox "voilà ce que je vais écrire " & vbCrLf & mavar
      Open "c:\essai.txt" For Output As #1
        Print #1, mavar
      Close #1
    End Sub

  5. #5
    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 040
    Points
    20 040
    Par défaut
    B'soir

    pourquoi n'écrit-tu pas tes lignes après avoir effectuer ton test ..? elles viennent d'où ces lignes à écrire ?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut
    tout d'abord encore MERCI pour m'avoir répondu.

    Si j'ai bien compris le SPLIT ignore le vide. Mais moi je ne peux pas faire ainsi à cause de mon dév actuel. Disons que quand j'arrive à la lecture de ma 4ème colonne mais j'ai déjà commencé à écrire mes 5 lignes dans mon txt (5 lignes disant grosso modo que je suis "arrivé" à la colonne 5 (ce sont les titres de cette colonne sur les 5 lignes : des sortes de drapeaux d'entêtes) et c'est seulement après que je découvre qu'il ne fallait pas les écrire.
    Je pense que c'est dû à une mauvaise conception de ma part (j'ai pas pris une feuille au départ avant de me lancer !!! )

    En attendant (avec impatience ta réponse, j'ai cherché sur le forum et sur le net des soluces) j'ai construit ceci. c'est certainement pas propre mais ça marche :
    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
    Private Sub Command4_Click()
      Dim strLigne As String
      Dim nbLignes As Long
      Dim Fichier As String
     
      Fichier = "c:\dossier\ecritures_caisse_magasin.txt"
     
      Open Fichier For Input As #1
        Do While Not EOF(1)
          Line Input #1, strLigne
          nbLignes = nbLignes + 1
        Loop
      Close #1
      '  MsgBox "Nombre de lignes : " & nbLignes
     
    'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx
    Open "c:\dossier\ecritures_caisse_magasin.txt" For Input As #1 ' Ouvre le fichier en lecture
    Open "c:\dossier\ecritures_caisse_magasindef.txt" For Output As #2 ' Ouvre le fichier en écriture(Output)
    LignesASupprimer = nbLignes - 50
        For i = 1 To LignesASupprimer
            Line Input #1, strLigne
            Print #2, strLigne
        Next
    Close #1
    Close #2
    Kill "c:\dossier\ecritures_caisse_magasin.txt"
    FileCopy "C:\dossier\ecritures_caisse_magasindef.txt", "C:\dossier\ecritures_caisse_magasin.txt"
    Kill "c:\dossier\ecritures_caisse_magasindef.txt"
    Open "c:\dossier\ecritures_caisse_magasin.txt" For Append As #1  'comme ça je reprends la suite de mon code
    Je laisse avec plaîsir ce petit "bidouillage" à la communauté si cela peut aider quelqu'un un jour....

    SUPER MERCI POUR TON AIDE


    P.S. : je ne mets pas "RESOLU" au cas où tu ou d'autres aurais un code bien plus simple

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    1) Le split "n'ignore pas le vide" (ouvre ton aide en ligne). Il "éclate" sur la base des ajouts faits par vbcrlf (des retours chariot).
    2) ma réponse correspond à ton besoin et je n'y change absolument rien....
    A toi de la comprendre et de t'en servir (c'est simple).
    Bonne nuit.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/08/2008, 16h25
  2. [CSV] Ajouter et supprimer des ligne dans un fichier CSV
    Par gpsevasion dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2007, 18h00
  3. [VBA] Supprimer des lignes dans une table
    Par shadockgreg dans le forum Access
    Réponses: 6
    Dernier message: 22/11/2006, 10h58
  4. Supprimer une ligne dans un .Txt
    Par Izno1978 dans le forum WinDev
    Réponses: 4
    Dernier message: 05/10/2006, 20h48
  5. Réponses: 3
    Dernier message: 21/07/2006, 14h22

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