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 :

Merge CSV et fichier excel [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 48
    Points
    48
    Par défaut Merge CSV et fichier excel
    Bonjour,

    Alors voilà, j'ai un fichier CSV (séparateur ","). Il contient deux colonnes : la première qu'on appellera "ID", la seconde "Message".
    J'ai aussi un fichier excel avec dans un onglet la même construction: colonne A "ID" et colonne B "Message".

    Ce fichier excel se veut être le référent tandis que le CSV est amené à être souvent modifié.

    J'aimerais pouvoir lire le CSV et fusionner les données dans le fichier excel. A savoir ne rajouter dans le fichier excel que les "nouvelles" données présente dans le CSV (en se basant sur la colonne "Message"), donc si une ligne contient un "message" qui existe déjà dans le fichier excel, on n'y touche pas.

    J'ai bien la solution "lourde" qui est de faire une recherche (find) pour chaque ligne du CSV, mais je me demandais s'il y avait une solution plus élégante et peut-être moins gourmande (le fichier CSV peut faire facilement 3/4000 lignes).

    De même, pour lire le CSV je ne sais pas si le plus "efficace" est de l'ouvrir dans une autre feuille excel ou de l'enregistrer dans un Array par exemple. L'optimisation du code serait un plus non négligeable.


    Merci de votre aide !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Copie le CSV sous les données du classeur Excel et utilise la méthode "RemoveDuplicates" sur la colonne "Messages" (en supposant que les valeurs de cette colonne soient uniques).

    PS. "RemoveDuplicates" est disponible à partir d'Excel 2007. C'est toujours une bonne chose de préciser sa version d'Excel.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  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 677
    Points
    18 677
    Par défaut

    Bonjour, bonjour !

    Citation Envoyé par DarkGriffin Voir le message
    J'ai bien la solution "lourde" qui est de faire une recherche (find) pour chaque ligne du CSV, mais je me demandais s'il y avait une solution plus élégante et peut-être moins gourmande (le fichier CSV peut faire facilement 3/4000 lignes).
    La méthode Range.Find n'est pas du tout une solution lourde si elle est utilisée comme dans l'aide VBA intégrée !

    Il y a aussi la fonction de feuille de calculs EQUIV (voir l'aide d'Excel, en VBA c'est Application.Match).
    Et enfin la possibilité d'utiliser l'objet Dictionary (consulter l'aide VBA).
    Pour ces deux possibilités, de nombreux exemples dans les discussions de ce forum …

    Voir aussi le tutoriel Utiliser les variables tableaux en VBA Excel
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  4. #4
    Invité
    Invité(e)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 92
    Points : 48
    Points
    48
    Par défaut
    Merci à tous, en effet j'ai oublié de préciser que j'étais en excel 2010. Je vais essayer diverses méthodes pour trouver celle qui me convient. Merci

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

Discussions similaires

  1. Enregistrement fichier excel dans une base mysql (pas csv)
    Par morph12345 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 27/03/2006, 10h01
  2. Ecrire un fichiers CSV à partir de 3 fichiers Excel
    Par yas2006 dans le forum Documents
    Réponses: 22
    Dernier message: 14/03/2006, 14h10
  3. [CSV] Ecrire et Lire un fichier Excel depuis PHP
    Par cocaetjusdorange dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2006, 11h10
  4. Réponses: 1
    Dernier message: 02/02/2006, 14h26
  5. conversion de fichier Excel en csv ,
    Par bounette dans le forum Excel
    Réponses: 2
    Dernier message: 26/01/2005, 08h42

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