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 :

RechercheV dans un fichier TXT [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut RechercheV dans un fichier TXT
    Bonjour,

    J'aimerais développer une Macros pour modifier le code de distribution de chaque salariés dans un fichier TXT strucutré, mais je ne sais pas comment m'y prendre.

    Tout d'abord, voici comment se présente le fichier TXT structuré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    50|099999|101 |105C99| |99999 |MICHEL DUPONT 
    50|099999|101 |5411 | |99999 |SOPHIE DUPONT 
    50|099999|101 |200Z4 | |99999 |JEAN-MARC DUPONT
    Le code de distribution est à la position 18, d'une longueur de 6 caractères maximum ("105C99" pour la première ligne).

    A partir d'une liste XLSX (Colonne A = "Code de distribution du client", colonne B = "Code de distribution interne"), je dois faire une RechercheV afin de changer ce code de distribution client et mettre notre code interne.

    Ce qui est compliqué, c'est qu'il faut impérativement garder la structure du fichier TXT intacte.

    Pour exemple, le résultat serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    50|099999|101 |5 | |99999 |MICHEL DUPONT 
    50|099999|101 |125 | |99999 |SOPHIE DUPONT 
    50|099999|101 |90 | |99999 |JEAN-MARC DUPONT
    Merci par avance pour votre aide.

    Cordialement.

  2. #2
    Membre actif
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 146
    Points : 224
    Points
    224
    Par défaut
    Salut,

    Sans détailler le code, tu peux faire ainsi :
    - ouvrir ton fichier avec fso ("Scripting.FileSystemObject") en lecture/écriture
    - lire chaque ligne avec .Readline
    - faire un Split(ligne,"|") pour récupérer le 4ème élément (le code de distribution)
    - faire une recherche dans ton tableau de correspondance Excel pour récupérer ton code interne
    - s'il est trouvé, faire un Replace(ligne,codedistri,codeinterne)
    - écrire ta ligne par un .WriteLine

    Enfin... c'est un peu comme ça que je ferais (mais je ne suis pas un pro du fso)

  3. #3
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour,

    FSO pas nécessaire, VBA est déjà équipé en interne pour lire un quelconque fichier texte.

    Le plus rapide étant de lire l'intégralité du fichier en une fois en alimentant une variable tableau
    afin d'y effectuer le traitement puis sauvegarder le fichier en une seule fois aussi.

    Consulter l'aide concernant les instructions Open et Print #, les fonctions Input, LOF, Join et Split
    Sans compter les exemples dans diverses discussions accessibles via une recherche !

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonsoir,

    Exemple

    On remplace le Code 11 (positions 10,11) par 99

    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
     
    Sub LectEcrFichSeq()
      rep = ThisWorkbook.Path
      nomfich = "Monfich"
      Open rep & "\" & nomfich & ".txt" For Input As #1
      Open rep & "\" & nomfich & "x.txt" For Output As #2
      Do While Not EOF(1)
        Line Input #1, ligne
        If Mid(ligne, 10, 2) = "11" Then    Mid(ligne, 10, 2) = "99"
        Print #2, ligne
      Loop
      Close #1, #2
      Kill rep & "\" & nomfich & ".txt"
      Name rep & "\" & nomfich & "x.txt" As rep & "\" & nomfich & ".txt"
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    50 99999 11 AAAAAA
    50 99999 12 BBBBBB
    50 99999 11 CCCCCC
    50 99999 13 DDDDDD
    Jacques Boisgontier

  5. #5
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Merci beaucoup pour vos réponses

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

Discussions similaires

  1. Ouvrir et écrire dans un fichier .txt en T-SQL
    Par joul's dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 27/10/2008, 22h04
  2. Remplacement dans un fichier .txt
    Par sebtoto62 dans le forum Langage
    Réponses: 4
    Dernier message: 28/07/2005, 14h15
  3. Date dans un fichier txt
    Par cali1983 dans le forum C++
    Réponses: 6
    Dernier message: 23/05/2005, 18h35
  4. Réponses: 10
    Dernier message: 05/10/2004, 12h28
  5. [langage] tabulation dans un fichier txt
    Par TigreRouge dans le forum Langage
    Réponses: 2
    Dernier message: 16/08/2004, 18h36

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