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 :

Couper/coller dans un fichier TXT en VBA [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Août 2006
    Messages : 148
    Par défaut Couper/coller dans un fichier TXT en VBA
    Bonjour,

    je souhaiterais copier l'ensemble des lignes se situant dans un endroit précis du fichier externe, les couper et les recoller dans un nouveau fichier .txt

    Ensuite les deux fichiers seront sauvegardés.

    Exemple mon fichier texte comprends 200 lignes, à la ligne 125 il est inscrit COUPER ICI.

    Je voudrais que le script VBA trouve ce texte "COUPER ICI." et sélectionne l'ensemble des lignes se trouvant avant celle-ci, les coupent et les recollent dans le nouveau fichier.

    Il y aura donc 2 nouveau fichiers l'un reprenant les lignes 1 à 124, l'autre les lignes 125 à 200

    Je ne sais pas si je suis très clair...

    Merci de votre aide

    David

  2. #2
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Août 2006
    Messages : 148
    Par défaut
    Re bonjour,

    en fait pour mieux m'expliquer, il s'agirait de scinder le fichier .txt en 2 nouveaux fichiers .txt avec pour repère de scindement la ligne comportant "0 @F1@ FAM" qui est totalement unique dans le fichier source.

    Merci

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par breizhgen Voir le message
    Bonjour,

    A tester :
    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
    45
    46
    47
    48
    49
    50
    51
    52
     
    Option Explicit
     
    Sub TestScinderEnDeuxFichiersTxt()
     
    Dim RepertoireSauvegarde As String
     
        RepertoireSauvegarde = ActiveWorkbook.Path
        ScinderEnDeuxFichiersTxt RepertoireSauvegarde, "Fichier source.txt", "Cible1.txt", "Cible2.txt", "0 @F1@ FAM"
     
     End Sub
     
     
    Sub ScinderEnDeuxFichiersTxt(RepertoireFichier As String, NomFichier As String, Fichier1 As String, Fichier2 As String, ChaineATrouver As String)
     
    Dim InputData As String, FichierEnCours As String
    Dim fs, f1, f2
     
     
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f1 = fs.CreateTextFile(RepertoireFichier & "\" & Fichier1, True)
        Set f2 = fs.CreateTextFile(RepertoireFichier & "\" & Fichier2, True)
     
     
        Open RepertoireFichier & "\" & NomFichier For Input As #1
        FichierEnCours = "1"
     
        Do While Not EOF(1)
     
           Line Input #1, InputData
           If InStr(1, InputData, ChaineATrouver, vbTextCompare) > 0 Then
              FichierEnCours = "2"
              Line Input #1, InputData
           End If
     
           If FichierEnCours = "1" Then
              f1.Write InputData & vbNewLine
           Else
              f2.Write InputData & vbNewLine
           End If
     
        Loop
     
         Close #1
         f1.Close
         f2.Close
     
         Set f1 = Nothing: Set f2 = Nothing
         Set fs = Nothing
     
     
    End Sub

  4. #4
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Août 2006
    Messages : 148
    Par défaut
    Bonjour Eric,

    merci, cela fonctionne parfaitement mais la ligne comportant "0 @F1@ FAM" ne dois pas être supprimée mais elle dois devenir la 1ere ligne du second fichier.

    En te remerciant

    David

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par breizhgen Voir le message
    Il faut supprimer la ligne 33 dans le précédent code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      If InStr(1, InputData, ChaineATrouver, vbTextCompare) > 0 Then
              FichierEnCours = "2"
           End If

  6. #6
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Août 2006
    Messages : 148
    Par défaut
    Merci beaucoup !!

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Pour le fun

    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
    Sub Test()
      Dim Cha1 As Long, Cha2 As Long, Cha3 As Long
      Dim r As String
      Dim Flag As Boolean
     
      Cha1 = FreeFile
      Open "c:\data\temp\couper.txt" For Input As Cha1
      Cha2 = FreeFile
      Open "c:\data\temp\premier.txt" For Output As Cha2
      Cha3 = FreeFile
      Open "c:\data\temp\deuxième.txt" For Output As Cha3
     
      Do While Not EOF(Cha1)
        Line Input #Cha1, r
        If Not Flag Then
          If r <> "COUPER ICI" Then
            Print #Cha2, r
          Else
            Flag = True
          End If
        Else
          Print #Cha3, r
        End If
      Loop
      Close #1
      Close #2
      Close #3
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. [XL-2007] Lecture et écriture dans un fichier .txt en VBA
    Par zanys dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/05/2011, 09h45
  2. [VBA]Couper coller dans un formulaire continu
    Par PhRey dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/04/2007, 16h53
  3. .vba echo dans un fichier .txt via .bat
    Par ely_j2002 dans le forum VBScript
    Réponses: 5
    Dernier message: 09/03/2007, 15h23
  4. [SQL-VBA] récupérer le résultat d'une requète SQL dans un fichier txt
    Par djidanestribbal dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 13/02/2007, 15h25
  5. [VBa-E] Peut-on écrire dans un fichier txt?
    Par gootsu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/07/2006, 12h34

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