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 donnée dans fichier csv par macro mais laisser fichier en csv [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    .
    Inscrit en
    Octobre 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : .
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2007
    Messages : 53
    Par défaut Modifier donnée dans fichier csv par macro mais laisser fichier en csv
    Bonjour,

    je cherche à modifier par macro une donnée dans un fichier csv, mais sans que le format ou quoique ce soit d'autre de ce fichier csv soit impacté.

    Lorsque je modifie par macro, et que j'enregistre, soit excel modifie les dates (exemple : 30/10/16 dans fichier csv départ, devient 30/10/2016), et/ou il rajoute des " au début et à la fin de chaque ligne, et/ou il formate les colonnes ... enfin dans tous mes essais, le fichier csv ne se retrouve pas à l'identique du départ.

    Si vous vous demandez le but :
    - je reçois des fichiers csv d'un autre service (impossible de leur demander de modifier leur façon de les créer)
    - ces fichiers servent à alimenter un logiciel spécifique
    - or suite à un bug dans la nouvelle version de ce logiciel, il faut absolument que j'aille corriger quelques lignes dans les fichiers csv, mais cela sans en changer leur format, ni quoique ce soit d'autre, sinon l'importation de ces fichiers dans le logiciel plantera.

    J'ai essayé de plusieurs façons, je n'y arrive pas en passant par excel.

    A la main, je vais modifier par notepad, et là ça marche.
    Mais je ne peux pas piloter notepad par macro, je peux juste faire ouvrir chaque fichier, donner la main à l'utilisateur (en l'occurence moi, le temps que le bug du logiciel soit corrigé) ...

    J'ai plus de 100 lignes à corriger dans environ 60 fichiers, c'est la raison pour laquelle je souhaite faire une macro donc.

    Je m’apprêtais à occuper mon week-end à les faire manuellement une par une (avec le risque d'erreur que cela comporte), mais j'aurais quand même bien voulu savoir si ce n'est vraiment pas faisable par macro ?

    Si quelqu'un a une idée, je lui serais grandement reconnaissante !

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Déjà :
    A la main, je vais modifier par notepad, et là ça marche.
    di tu peux le faire via Notepad, tu peux le faire en utilisant l'instruction Open (rubrique Open, instruction de l'aide VBA)
    Quels sont les gestes que tu fais avec NotePad ?

  3. #3
    Membre averti
    Profil pro
    .
    Inscrit en
    Octobre 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : .
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2007
    Messages : 53
    Par défaut
    Je sais ouvrir le fichier avec notepad depuis la macro.

    Mais ensuite, je ne sais pas faire ceci dans notepad par macro :

    - rechercher un texte (constant) dans les lignes
    - pour chaque ligne où on trouve ce texte, aller changer la 13ième zone entre ";" : c'est une zone du type 0000012345.67 et je dois remplacer par : 00000123.4567 => (ça je sais le faire par macro) mais pas dans notepad, si je devais le faire sous excel, pas de soucis
    - enregistrer le fichier csv via notepad

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Si je te lis bien (si tu as bien exprimé les choses)
    - rechercher un texte (constant) dans les lignes
    est ce qui te poserait problème ?
    Quel "texte constant" ?
    - L'instruction Open (dont je t'ai parlé plus haut et que je t'ai invité à lire) te permet de lire ligne par ligne le contenu toto d'une ligne
    - La fonction Instr te permet de déterminer si toto contient une chaîne de caractères spécifiée
    - la fonction split te permet d'éclater une chaîne de caractères par rapport à un délimitateur (ici : ton ";")
    - la fonction replace te permet de changer un caractère (ici ton "," par ".")
    je souhaite voir ce que tu fais (ou au moins tentes de faire) avec cela.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    1. open for input....
    2. ligne=split(resultat,vbcrlf)
    3. pour récupérer ou modifier la 13 eme colonne c'est split (ligne(i),";")(12)dans la boucle sur les lignes
    4. ensuite une derniere boucle for et retranscription en texte avec open for output

    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre averti
    Profil pro
    .
    Inscrit en
    Octobre 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : .
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2007
    Messages : 53
    Par défaut
    Merci pour vos conseils,

    j'ai avancé, mais là je bloque parce qu'à la lecture de mon fichier input, il me lit tout le fichier comme une seule ligne, donc impossible de traiter comme je veux. Il est en EOF dès l& 1ére lecture.

    Mais comme c'est un autre problème, je suis en train de chercher à le résoudre, je ne vous dérange pas plus longtemps.

    Merci encore et je vous dis quand je suis au bout pour clore la discu

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

Discussions similaires

  1. [XL-2003] Par Macro, enregistrer le fichier sans les Macros
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 07/01/2011, 11h22
  2. [MySQL] Problème d'insertion de données dans une base MySql à partir d'un fichier csv
    Par kazabandi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/12/2010, 18h05
  3. Réponses: 5
    Dernier message: 27/05/2008, 18h43
  4. fichier csv par macro
    Par jnmab dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/12/2007, 23h31
  5. [Macro] ouverture d'un fichier csv par macro différent du double-clic
    Par Caro-Line dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/04/2007, 16h36

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