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 :

Macro Comparaison complexe


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut Macro Comparaison complexe
    Salut a tous,voila j'ai quelques soucis pour créer une macro vba.

    Je vous explique ce que je voudrais faire.

    j'import 2 tables d'une base de données sous excel.

    Je voudrais que ma macro, dans un premier temps, check les 2 tables ,récupère les informations de la donnée
    de référence qu'on veut(qu'on a rentrer en paramètre dans le code VBA ou dans une interface graphique^^) de la table 1 et de la table 2. Car cette donnée se retrouvera dans les 2 tables.Donc une macro de comparaison
    au niveau de la première colonne et si il trouve la donnée dans les 2 tables,il l'a récupère.

    Puis il va mettre ces 2 données dans une nouvelle feuille Excel,donc un export de ces données.
    En gros il va mettre les éléments de la donnée choisie de la table 1 dans une colonne,puis ceux de la donnée de la table 2 dans une 2eme colonne.

    Et Enfin,la macro va comparer les données,regarder si les données de la première colonne(table1) sont identiques a celles de la 2eme colonne(Table2).A1=B1?A2=B2?A3=B3?....
    si les données ont été mises en colonnes,car les mettre en lignes serait possible aussi.A1=A2?B1=B2?C1=C2?...

    Donc un string comparse.mais il y a beaucoup de lignes donc manuellement avec un =EXACT ca n'irai pas,écrire une centaine de =EXACT en vba c assez chiant.

    Voici 2 feuils pour illustrer tout ca.

    Feuill1:
    ------A-- ----B------------C--------D ----------------E ---------F
    1--Voiture---Couleur----Marque-----poids --------hauteur-------largeur
    2 ----1----- jaune----mercedes---4665456456-----1111111-----684949
    3 ----2-----vert--------bmw-----4655645646------222222------48949849
    4----3------rouge------peugeot----8897546------333333333---4984984894


    Feuille2:
    ------A-- ----B------------C--------D ----------------E ---------F
    1--Voiture---Couleur----Marque-----poids --------hauteur-------largeur
    2 ----1----- jaune----mercedes---4665456456-----1111111-----684949
    3 ----2-----vert--------bmw-----4655645646------222222------48949849
    4----3------gris------peugeot----8897546------333333333---4984984894

    Il faut imaginer qu'il y a plus de 100 colonnes et des milliers de lignes.Donc on voit bien que la première colonne représente le nom de la voiture, et les colonnes d'après se rapportent à cette voiture.
    Donc en gros j'ai importer ces 2 tables sur mon Excel.Elles sont identiques sauf au niveau de la cellule B4.Ce que je veux c'est dire à ma macro,je veux comparer la voiture 2 par exemple.
    Donc elle va checker les 2 tables,si elle voit que il y a La voiture 2 dans les 2 tables, elle récupère les données de la voiture dans Table1 et Table 2 et les met dans une 3ème feuille en colonne ou ligne.Et ensuite elle va comparer ces données et si une valeur est identique,elle va marqué "Ok" ,si pas identique "Not Ok".


    En Ligne:

    ----A --------B --------- C---------D--------------E ------------ F
    1 Voiture---Couleur----Marque------poids--------hauteur-------largeur
    2 2--------vert-------bmw-----4655645646----222222------48949849
    3 2--------vert-------bmw-----4655645646----222222------48949849
    4 Ok---------Ok--------Ok---------Ok------------Ok------------Ok


    En colonne:


    ----A --------B ---------------- C-----------------D
    1 Voiture------2----------------2-----------------Ok
    2 Couleur----vert--------------vert--------------Ok
    3 Marque----bmw--------------bmw---------------Ok
    4 poids------4655645646-------4655645646--------Ok
    5 hauteur---222222--------------222222----------Ok
    6 largeur----48949849----------48949849----------Ok


    Désolé pour ces tableaux faits a la main,je ne sais pas comment intégrer une image de tableau dans le post.
    Désolé pour les fautes aussi.

    Je remercie en tout cas ceux qui prennent le temps de me lire et de m'aider car je galère pas mal.

    Je suis à votre disposition pour toutes infos supplémentaires.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    Bonsoir,

    Ta macro elle servira juste à trier une bonne foi pour toute ton tableau?

    Ou bien tu veux effectuer une recherche?

    Par exemple tu as une liste qui t'affiche les voitures (1, 2, 3) et quand tu cliques dessus, la macro recherche dans les deux tables et te ressort les différentes lignes a savoir 2 lignes pour la voiture 3 (de ton exemple) une ligne voiture 3 = gris et une ligne voiture 3 = rouge (et les autres options sont identiques)...

    Voila, soit précis sur la manière dont vas être utilisé ta macro.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut
    Tu as raison c'était pas super précis désolé.

    Finalement voila ce que j'aimerais que ma macro fasse:

    -J'ai 2 tables Voiture1 et Voiture2 ouvert respectivement en Feuil1 et Feuil2,comme précédemment.

    Le but de la macro est qu'elle va checker ces 2 tables et va matcher et récupérer les lignes des même voitures.Mais la macro,quand elle va checker les tables ,elle va se basé que sur la colone A "voiture". Cad: si dans colonne A ("Voiture") il y a: 2 et dans colonne B ("Voiture") il y a :2 ,alors cette macro va copier ces 2 lignes dans 2 colonnes ou lignes d'une nouvelle feuille(Feuil3),et enfin va comparer cellules par cellules pour savoir si il y a des différences entre les 2 lignes.Comme les 2 derniers schémas.
    Par exemple je lui entre en parametre 2,donc elle va checker si dans Colonne A "voiture" de la premiere table il y aura 2 et de meme pour la 2eme table,si oui elle copie les lignes dans une feuil3 et compare,si non elle dit en gros impossible,"not found item" ou un truc dans ce style.

    Donc en gros c'est de la copie de ligne et de la comparaison.

    Après la question que je me pose est que dans ce cas il faut rentré un paramètre à savoir la référence qu'on veut que la macro prenne en compte.Et ca je sais pas comment faire.Si c'est un élément a modifier dans le code ou de l'interface graphique.

    Et autre chose sinon,dans ce cas,on compare que 2 lignes et donc qu'un seul élément "identique" a la fois.Je me demandais si cétait possible,au lieu de faire une macro autour d'un seul élément à entrer (pour la comparaison),qu'on puisse faire une macro qui va donc checker les 2 tables comme avant,mais qui va matcher tout les éléments identiques de la colonne "A voiture" et ceux de "B voiture" ,puis les exporter vers une feuille3 et les comparer comme précédemment.Au lieu d'avoir qu'une seule comparaison,on en aurait énormément.Ca donnerait ca au final:
    ----A --------B --------- C---------D--------------E ------------ F
    1 Voiture---Couleur----Marque------poids--------hauteur-------largeur
    2 2--------vert-------bmw-----4655645646----222222------48949849
    3 2--------vert-------bmw-----4655645646----222222------48949849
    4 Ok---------Ok--------Ok---------Ok------------Ok------------Ok
    5 3--------rouge-------peugeot-----blabla----toto--------------tata
    3 3--------rouge-------peugeot-----blabla----titi----------------tata
    4 Ok---------Ok--------Ok---------Ok--------Not Ok------------Ok
    ...

    J'espère avoir été un peu plus clair pour la première partie au moins.Je te remercie.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    Moi si je devais faire ca je traiterais l'affaire en sql...
    Je vai te preparer un pi truke pour que tu puisse voir ca!

    Mais quel est ton niveau? Tu as deja programmé?

  5. #5
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut
    Salut,
    Voici un exemple en SQL je ne sais pas si ça répond à ce que tu veux faire, mais tu peux t'en inspirer.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut
    Salut,désolé pour cette réponse tardive,je viens de rentrer.

    Merci pour ce que tu as fait , ca a l'air d'être béton.Je n'ai pas eu encore le temps de le tester.Je re-posterai demain et je te dirai ca.

    Merci encore en tout cas.

Discussions similaires

  1. [XL-2007] comparaison complexe de 2 colonnes sur 2 feuilles
    Par lth_iris dans le forum Excel
    Réponses: 6
    Dernier message: 12/05/2015, 13h51
  2. [WD-2007] [Résolu] Macro VBA complexe avec regex et tags à modifier dans tableau
    Par nicoladastra2 dans le forum VBA Word
    Réponses: 7
    Dernier message: 19/03/2014, 12h50
  3. Optimisation macro comparaison / Plantage
    Par Geoffray69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/07/2013, 10h00
  4. Macro : Comparaison 2 liste
    Par roidurif dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/11/2012, 23h09
  5. [XL-2010] Macro comparaison date
    Par wulfkind dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/12/2011, 11h25

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