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 :

modifier un fichier replace(...,"","")


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Par défaut modifier un fichier replace(...,"","")
    Bonjour je voudrais modifier quelques lignes concecutif dans un fichier .txt

    le code suivant me permet de remplacer le texte1 par le texte2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(c.ReadAll, "texte1", "texte2")
    jusque la tout va bien. Mais moi je voudrais remplacer le texte suivant qui est sur plusieurs lignes concecutif :

    toto
    titi
    tata

    le code suivant de fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(c.ReadAll, "toto titi tata", "texte2")
    est ce qu'il y a un moyen de remplacer ces trois lignes?
    car on peu retrouver toto dans mon fichier mais je ne veu pas qu'il soit remplacer si il n'y a pas titi a la ligne suivante et tata 2 ligne en desous

    des idees?
    merci

  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
    Par défaut
    Bonjour,

    Tu as lu cette discussion ?
    http://www.developpez.net/forums/sho...d.php?t=596553

    il te suffit d'adapter la solution à ton cas (utilisation de replace suir chaque ligne)

    car on peu retrouver toto dans mon fichier mais je ne veu pas qu'il soit remplacer si il n'y a pas titi a la ligne suivante et tata 2 ligne en desous
    et pour celà : regarde mon dernier code ===>> il produit un array, non ?
    Il est dès lors simple d'y rechercher "toto" (par instr) et de voir si titi s'y trouve à l'élément suivant et tata 2 lignes en dessous.
    Celà ne demande qu'un tout petit peu de semi-concentration !

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Par défaut
    Je ne comprend pas comment je peu supprimer (ou remplace par "") ces trois lignes

    toto
    titi
    tata

    merci de me donner un exemples

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut Cortex59,

    tu ne peux pas modifier le fichier texte sur lui-même car il est ouvert en input.

    Pour faire cela tu dois :
    1) lire le fichier en Input,
    2) Modifier les records souhaites
    3) Ecrire chaque record dans un nouveau fichier.
    4) fermer les 2 fichiers
    5) Supprimer le fichier input
    6) renommer le fichier output au nom de l'input.

    Pour remplacer du texte qui est sur plusieurs lignes, il faut adapter ta logique comme l'indique ucfoutu.

    soit :
    Charger les records en table et faire les recherches, remplacements et suppression sur la table qui sera ensuite écrite dans un fichier.



  5. #5
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Par défaut
    la modification simple fonctionne

    est ce qu'avec un replace on peu modifier plusieurs lignes
    ou je suis obligé de lire la ligne suivante et modifier ligne par ligne?

  6. #6
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    est ce qu'avec un replace on peu modifier plusieurs lignes
    tel quel, je ne crois pas, mais si tu ruses un peu tu devrais pourvoir y arriver.

    Idée (non testée).

    Lit tout tout fichier en input et construit avec tes records un string unique qui reprends tous tes records, séparés par un caractère qui ne se trouve pas dans ton texte.

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    tout = ""
    Do While Not EOF(1)
      Line Input #1, LaLigne
      if trim(tout) = "" then
         tout = trim(tout) + Laligne
        else
         tout = trim(tout) +  "@" + Laligne
       ...
       endif
       line input...
    loop
    Ensuite tu exécute ton replace sur Tout.

    Puis tu découpes Tout avec Split
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tablo=Split(Tout, "@")
    Et il ne te reste qu'à mettre les élements de tablo dans ton fichier texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For i = 0 to ubound(Tablo)
     Laligne = tablo(i)
     .....
    next

  7. #7
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    296
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 296
    Par défaut
    MERCI ca fonctionne impec

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/01/2007, 20h36

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