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 :

Comment en VBA modifier un fichier texte sans l'ouvrir dans Excel ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Points : 16
    Points
    16
    Par défaut Comment en VBA modifier un fichier texte sans l'ouvrir dans Excel ?
    Bonjour,

    j'ai un fichier txt de valeurs en 1 colonne, je souhaite l'ouvrir, y ajouter une 2ème colonne de valeurs, et l'enregistrer ainsi à nouveau en .txt, SANS l'OUVRIR avec Excel.
    Car il peut arriver que ce fichier ait plus de 65536 lignes, et Excel me coupe les données au-delà. De plus à l'enregistrement Excel m'ajoute un retour à la ligne à la toute fin des valeurs, qui rend mon nouveau fichier .txt inexploitable derrière.

    Je voudrais donc accéder au contenu de mon fichier .txt (par quel moyen?), stocker mes valeurs dans une variable tableau à 2 dimensions, ajouter ma 2ème colonne, et générer un nouveau fichier txt à partir de cette variable. Est-ce possible en VBA? ou faut-il chercher avec un autre langage de programmation ?
    Merci de votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Points : 364
    Points
    364
    Par défaut
    Voici grosso modo ce dont tu auras besoin :

    Lire un fichier texte :
    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
     
    dim monTableau (100000, 2) as variant, i as long, j as long, fileName as string
     
    fileName = "C:\exemple.txt"
     
    Open fileName For Input As #1    ' Ouvre le fichier en lecture
    i = 0
    Do While Not EOF(1)    ' Effectue la boucle jusqu'à la fin du fichier.
        Line Input #1, variable_string        ' Met la ligne dans la variable.
        monTableau(i,1) = variable_string 
        i = i+1
    Loop
    i = i-1
    Close #1
     
     
    ... remplir la colonne 2 de monTableau
    Ecrire dans un fichier texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Open fileName For Output As #1    ' Ouvre le fichier en écriture
    for j = 0 to i-1
        Print #1, monTableau(j,1) ; ";" ; monTableau(j,2) 'ici j'ai supposé que tu voulais séparer tes deux colonnes par un point-virgule (en rouge), mais tu mets ce que tu veux
    next j
    Print #1, monTableau(i,1) ; ";" ; monTableau(i,2); 'la dernière ligne est traitée à part afin d'avoir le ; final qui empêche le dernier retour ligne (si j'ai bien compris le besoin)
    Close #1

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    Autre méthode qui n'ouvre pas le fichier texte "visiblement" dans Excel (mais en réalité il est bel et bien ouvert dans Excel):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Application.ScreenUpdating = false
    Workbooks.Open("mon fichier texte.txt")
    ' tu travailles sur ton fichier texte
    Workbooks("mon fichier texte.txt").Close
    Application.ScreenUpdating = true
    L'avantage de cette méthode, c'est qu'elle est plus simple à comprendre, et le fichier texte est plus simple à manipuler. Mais les inconvénients, c'est que ton fichier texte devra avoir une présentation bien définie (tabulations, retous à la ligne, etc...), et tu ne pourras pas voir de modifications à l'écran si tu travailles sur un autre "classeur" que "mon fichier texte.txt" pendant le traitement de ce fichier texte.

    Est-ce que ce complément d'information t'a été utile?

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    J'ai opté pour la 1è solution (par la méthode Input) qui marche à merveille (vraiment super ,du premier coup!!!) pour ne pas prendre de risques dans les cas ou mon fichier texte initial ferait plus de 65536 lignes.
    Dans tous les cas un grand merci à tous les 2.

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

Discussions similaires

  1. Comment écrire dans un fichier texte sans sauter les lignes
    Par gogéta91 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 29/07/2008, 18h56
  2. Comment analyser et modifier un fichier texte (Microsoft Query) via VBA
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 24/06/2008, 11h19
  3. lecture d'un fichier texte SANS l'ouvrir
    Par gratesnif dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/08/2007, 13h50
  4. [VBA-E] modifier un fichier texte avant import
    Par hka75 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 04/04/2007, 21h13
  5. comment utiliser Notepad pour modifier un fichier texte?
    Par moon13_698 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 06/05/2006, 15h41

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