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

VBA Access Discussion :

Manipuler mon fichier txt


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 80
    Points : 53
    Points
    53
    Par défaut Manipuler mon fichier txt
    Bonjour

    j'ai un gros fichier text avec pour séparateur des virgules.je veux pouvoir modifier ce fichier pour la suite de mes traitements.
    C'est a dire:
    1- je veux pouvoir supprimer des colonnes ; une sorte de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("xx:xx").EntireColumn.Delete
    comme je l'aurai fais sous excel
    2- Pouvoir retirer des lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rows(";").Entirerows.Delete
    sous excel

    Merci de m'indiquer comment réaliser ces taches. J'ouvre mon fichier txten lecture de la sorte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Dim intFic As Integer
    Dim strLigne As String
    intFic = FreeFile
    Open "C:\myfile.txt" For Input As intFic
      While Not EOF(intFic)
        Line Input #intFic, strLigne
        MsgBox strLigne
    Wend

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Peut-être en décomposant chaque ligne au moyen de la fonction Split() pour disposer de chaque portion délimitée par la virgule. Prendre alors la décision de transformer (ou pas) le contenu de la ligne que l’on copie dans une table temporaire.
    Voici un bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub MainipTexte()
      Dim intFic As Integer
      Dim strLigne As String
      Dim strTab() As String
      intFic = FreeFile
      Open "C:\myfile.txt" For Input As intFic
      While Not EOF(intFic)
        Line Input #intFic, strLigne
        strTab = Split(strLigne, ",")
        Debug.Print strTab(0)
      Wend
    End Sub
    Tu devrais être plus explicite sur les critères qui vont te servir à supprimer des lignes entières ou des fragments compris entre deux virgules et la destination du texte transformé.
    Au besoin, poste un échantillon de myfile.txt
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    ci joint un échantillon du fichier

    je veux par exemple pouvoir :
    -supprimer la ligne1
    -supprimer la colonne 3(pu) et 5(code)
    -dupliquer(copier), le contenu de la colonne 1 à la colonne 5 (précédemment supprimé)

    le texte transformé pourra demeurer au même emplacement(c:\)
    Merci
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    je veux par exemple pouvoir :
    -supprimer la ligne1
    -supprimer la colonne 3(pu) et 5(code)
    -dupliquer(copier), le contenu de la colonne 1 à la colonne 5 (précédemment supprimé)
    OK, mais tu dois définir ces comportements à l'avance pour les programmer !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    ok. On y va étape par étape; pour supprimer la colonne pu, voila ce que je tente de faire.

    je décompose chaque ligne de mon fichier dans un tableau.
    ensuite je recopie ces donnés du tableau dans un autre fichier excepté l'indice 1 qui correspond à la colonne pu
    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
    Dim intFic, intFic2, i As Integer
    Dim strLigne As String
    Dim strTab() As String
    i = 0
    intFic = FreeFile
    intFic2 = FreeFile
    Open "C:\myfile.txt" For Input As intFic
      While Not EOF(intFic)
        Line Input #intFic, strLigne
        strTab = Split(strLigne, ",")
        Debug.Print strTab(0)
      Wend
    Close intFic
    Open "C:\myfile2.txt" For Output As intFic2
      For i = 0 To UBound(strTab)
      If i <> 1 Then
       Print #intFic2, strTab(i) & ","
      End If
      Next i
    Close intFic2
    Le rendu n'ai pas totalement ce que je veux. car le fichier myfile2 contient les enregistrement d'une seule ligne du fichier myfile sur plusieurs lignes.

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Moi, je procèderais autrement.

    Quand la ligne a été aménagée, je la logerais dans une table.

    Quand toutes les lignes ont été traitées, je retransformerais la table en un fichier .txt.

    J'ignore encore la nature des changements que tu veux opérer dans le fichier original et surtout si on peut écrire un algorithme pour les automatiser.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    ok;je suis preneur d'un bout de code qui va loger une ligne aménagée dans une table et ensuite transformé la table en fichier .txt

    En fait, j'ai un fichier txt que je dois injecter dans une base de données.le souci est que ce fichier .txt contient des infos (colonnes) qui ne sont d'aucune utilité pour la base de données en question, je veux donc retraité le fichier .txt en supprimant ces colonnes pour ensuite injecter ce nouveau fichier aménagé dans la base de données.

    J'espère avoir mieux exposé la situation

    Bienvenue serait le coup de pouce

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    ci dessous le code que j'utilise pour supprimer les lignes 1 et 3, ca marche . je continue mon periple avec les colonnes non désirées à supprimer
    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
    Open "C:\myfile.txt" For Input As intFic
    While Not EOF(intFic)
    j = j + 1
        Line Input #intFic, strLigne
       ' i = i + 1
        If j <> 1 And j <> 3 Then
        i = i + 1
         ReDim Preserve strTab(1 To i)
         MsgBox strLigne
           strTab(i) = strLigne
        End If
        Wend
      Close intFic
    size = i
    Open "C:\myfile.txt" For Output As intFic2
     For i = 1 To size
         Print #intFic2, strTab(i)
     Next i
    Close intFic2

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,


    En fait, j'ai un fichier txt que je dois injecter dans une base de données.le souci est que ce fichier .txt contient des infos (colonnes) qui ne sont d'aucune utilité pour la base de données en question, je veux donc retraité le fichier .txt en supprimant ces colonnes pour ensuite injecter ce nouveau fichier aménagé dans la base de données.
    Alors, ce serait sans doute plus « classique » :

    1° importer le fichier .txt tel quel dans la base Access ;

    2° examiner ce que tu veux faire (et si tu pouvais l'exprimer avec des mots – et non du code –, on en sortirait plus vite !) ;

    3° alors seulement choisir les outils Access pour atteindre la table cible (des requêtes et/ou du VBA).
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  10. #10
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Claude , manguigs

    Manguigs,

    L'idée de stocker tes données dans un tableau avant de réinjecter dans un fichier texte me semble inutile. Pourquoi ne pas faire la lecture de ton fichier à la volée et écrire les lignes et colonnes dynamiquement.

    Pour isoler tes colonnes il existe de nombreuses techniques et la fonction split (conseillé par Claude) en est une : http://msdn.microsoft.com/fr-fr/libr...(v=vs.90).aspx

    donc en reprenant ton code et en l'adaptant quelque peu voilà ce que cela donnerait : l'écriture se ferait dans un fichier out et conserve ainsi les données originales du fichier (une erreur de traitement est si vite arrivée ). Libre à toi de renommer ce fichier si nécessaire (un petit tour dans la faq).

    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
    Function transforme_fichier()
    '
    ' Tranformation d'un fichier texte
    '
    Dim intFic As Byte, intFic2 As Byte
    Dim i As Long
    Dim MyArray() As String
    '
    intFic = FreeFile
    Open "C:\Developpez\manguigs\myfile.txt" For Input As intFic
    intFic2 = FreeFile
    Open "C:\Developpez\manguigs\myfileout.txt" For Output As intFic2
    '
        While Not EOF(intFic)
        Line Input #intFic, ligne
        '
        ' Isoler dans un tableau les valeurs en splittant sur le ;
        '
        Debug.Print ligne
        MyArray() = Split(ligne, ";")
     
        i = i + 1
        Select Case i
        Case 1, 3
            ' je ne fais rien sur les lignes 1 et 3
        Case Else
            ' on écrit dans le fichier les valeurs contenues dans le tableau 0,1,3
            Write #intFic2, MyArray(0), MyArray(1), MyArray(3)
        End Select
        Wend
      Close
      '
      transforme_fichier = True
      '
    End Function
    Jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/05/2008, 12h02
  2. Réponses: 8
    Dernier message: 04/05/2008, 14h09
  3. manipulation de fichier txt
    Par eozenn dans le forum VBScript
    Réponses: 18
    Dernier message: 28/03/2008, 23h06
  4. Récupérer les X dernières lignes de mon fichier txt
    Par coincoin22 dans le forum Windows
    Réponses: 0
    Dernier message: 08/08/2007, 14h39
  5. reconstituer mon fichier Txt (écriture txt)
    Par af_airone dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 20/10/2005, 15h13

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