Comment comparer deux tableaux Excel ?

Article mis à jour le

dans

Comparer deux tableaux Excel consiste à faire ressortir soit leurs éléments communs, soit leurs différences.

Les questions à se poser

Mais avant de commencer, il est important de bien déterminer ce que vous voulez faire. Pour cela, je vous invite à répondre à 3 questions :

Question 1 : voulez-vous comparer vos 2 tableaux Excel selon une ou plusieurs colonnes ?

Pour clarifier, considérons les 2 tableaux ci-dessous :

NomPrénom
BAUDOINClément
BAUDRYCéline
BAZINJérémy
BEAUMONTEliane
NomPrénom
BARTOLIChloé
BAUDOINClément
BAUDRYCéline
BAZINEric
BEAUMONTEliane

Si l’on compare les 2 tableaux uniquement sur la colonne « Nom », il n’y a qu’une seule différence : le nom « BARTOLI » est présent dans le second tableau, mais pas dans le premier.

Mais si l’on compare les 2 tableaux selon les 2 colonnes, il y a une différence de plus : le prénom de M. Bazin est différent dans chaque tableau.

De façon générale, comparer 2 tableaux selon X colonnes consiste à :

  1. Parcourir toutes les lignes du premier tableau et vérifier pour chaque ligne si le second tableau contient une ligne semblable, c’est-à-dire ayant exactement les mêmes valeurs dans les X colonnes (sans s’occuper des éventuelles colonnes supplémentaires).
  2. Refaire la même chose dans l’autre sens, c’est-à-dire en partant du second tableau.

Question 2 : cherchez-vous les similitudes ou bien les différences ?

Autrement dit, voulez-vous faire ressortir les éléments présents dans les 2 tableaux, ou au contraire les éléments présents dans un tableau et pas dans l’autre ?

Question 3 : Comment voulez-vous mettre en évidence les similitudes ou les différences ?

Il y a 3 façons de présenter le résultat de la comparaison :

  1. En utilisant des couleurs ou autres mises en forme
  2. En ajoutant une colonne de type VRAI / FAUX à chaque tableau, pour indiquer si chaque élément est également présent dans l’autre tableau. Vous pourrez ensuite filtrer les tableaux selon cette colonne pour plus de lisibilité.
  3. Générer des tableaux de résultats contenant uniquement les éléments communs ou différents

Nous allons voir maintenant des exemples concrets illustrant ces 3 cas de figure (avec 2 techniques différentes pour le dernier cas).

Exemple 1 : mettre en forme les différences

Prenons comme exemple les 2 tableaux de noms suivants :

2 tableaux Excel à comparer

Dans le premier tableau, tous les noms présents aussi dans le second tableau sont colorés en bleu.

Dans le second, tous les noms présents aussi dans le premier sont colorés en verts.

Les noms en blanc représentent donc les différences entre les 2 tableaux.

Pour faire cela, vous devez créer des mises en forme conditionnelles basées sur des formules.
Voici celle utilisée pour le premier tableau :

La formule est :

=ESTNUM(EQUIV($A2;INDIRECT("tabNoms2[Nom]");0))

Explications

INDIRECT permet de faire référence à la colonne Nom du second tableau, nommé tabNoms2.

EQUIV permet de rechercher dans tabNoms2 le numéro de la ligne qui contient la valeur de la cellule A2, c’est-à-dire la première cellule du tableau 1. La formule étant appliquée au tableau entier, Excel incrémentera automatiquement la référence $A2 en $A3, $A4… pour les autres lignes.

Sélectionnez bien le tableau 1 en entier avant d’ajouter la mise en forme conditionnelle pour qu’elle s’applique à toutes les lignes !

EQUIV renvoie une erreur #N/A lorsqu’aucune correspondance n’est trouvée. La fonction ESTNUM renvoie VRAI si son paramètre est une valeur numérique. Dans notre cas, elle renverra donc VRAI uniquement si une correspondance dans le second tableau a été trouvée.

La couleur de fond bleue choisie ici est alors appliquée à toutes les cellules pour lesquelles la formule renvoie VRAI.

Sur le même principe, voici la formule utilisée pour la mise en forme conditionnelle du second tableau :

=ESTNUM(EQUIV($C2;INDIRECT("tabNoms1[Nom]");0))

Si vous préférez inverser les couleurs, c’est-à-dire colorer les éléments différents, et laisser en blanc les éléments identiques, il vous suffit de remplacer ESTNUM par ESTNA. Cette fonction renvoie VRAI quand la valeur en paramètre est #N/A.

Remarques

  • Pour en savoir plus sur la fonction EQUIV, n’hésitez pas jeter un œil ici.
  • Si les notions de tableau nommé et de mise en forme conditionnelle ne vous sont pas familières, n’hésitez pas à demander mon ebook gratuit en cliquant sur le bouton dans la barre qui figure tout en haut de la page. Il vous aidera à maîtriser ces notions rapidement.
  • Enfin, cette page de doc Microsoft vous en apprendra plus sur les différentes fonctions EST…

Comparaison selon plusieurs colonnes

Pour comparer deux tableaux Excel selon plusieurs colonnes avec cette technique :

  • Créez une colonne supplémentaire dans chaque tableau, qui rassemble les valeurs des colonnes à comparer.
  • Remplissez cette colonne supplémentaire à l’aide de la formule ci-dessous, où NomColonneX et NomColonneY sont les noms de la première et de la dernière colonne à comparer.
  • Puis utilisez cette colonne calculée dans la formule de la mise en forme conditionnelle que nous venons de voir plus haut.
=CONCAT([@NomColonneX]:[@NomColonneY])

Exemple 2 : filtrer les éléments différents

Peut-être préférez-vous filtrer les tableaux sur les éléments communs ou différents. Dans ce cas, vous devez ajouter une colonne dans chaque tableau, qui indique VRAI ou FAUX selon que l’élément est présent ou non dans l’autre tableau, comme ceci :

comparaison de 2 listes Excel

Une fois cette colonne ajoutée, il vous suffit de filtrer le tableau sur la valeur VRAI ou FAUX grâce au filtre automatique dans l’en-tête de colonne.

Cette technique présente 2 avantages :

  • Après filtrage, vous pouvez copier facilement les éléments différents en vue de constituer par exemple un 3ème tableau.
  • Vous pouvez ajouter un compteur pour les éléments communs ou différents dans la ligne de total.

La formule utilisée pour compter le nombre de valeurs VRAI dans le premier tableau est :

=NB.SI([Présent tab2];VRAI)

Remarques :

  • Si vous souhaitez filtrer simultanément les 2 tableaux, vous devez les placer l’un en dessous de l’autre, comme dans la figure ci-dessous. Sinon, vous ne pourrez pas voir tous les éléments.
  • Rien ne vous empêche de garder les mises en forme conditionnelles pour bien faire ressortir les différences.

Exemple 3 : Comparer deux tableaux Excel grâce à une macro

Dans certains cas, il est intéressant d’avoir le résultat de la comparaison des 2 tableaux sous forme d’un troisième tableau contenant uniquement les éléments similaires ou différents.

On peut automatiser la construction de ce tableau grâce à une macro VBA.

Voici tout d’abord 2 exemples illustrant le résultat souhaité :

Extraction des différences

Extraire les différences de 2 tableaux Excel avec une macro

Dans les tableaux à comparer, j’ai mis sur fond gris les différences, c’est-à-dire les éléments qui ne sont pas présents dans l’autre tableau. C’est juste pour les faire ressortir, afin que vous constatiez que le tableau que nous allons générer avec la macro contient bien uniquement ces éléments. La colonne « Tableau » permet de savoir lequel des 2 tableaux contient l’élément orphelin.

Plutôt sympathique, non ?

Extraction des éléments communs

Extraire les éléments communs de 2 tableaux Excel avec une macro

Cette fois, la macro extrait les éléments communs entre les 2 tableaux (ceux sur fond blanc).

Code et mise en œuvre de la macro

Pour voir le code VBA de la macro utilisée dans les exemples précédents, cliquez sur le bouton ci-dessous :

NB/ Cette macro permet de comparer deux tableaux Excel selon une ou plusieurs colonnes adjacentes.

Pour mettre en œuvre cette macro dans votre propre classeur, suivez les étapes suivantes :

  1. Faites un copier/coller du code dans un module VBA de votre classeur Excel au format xlsm
  2. Dans la fonction ComparerTableaux, modifiez les éléments suivants :
    • Les noms des feuilles contenant les 2 tableaux à comparer
    • Les noms des 2 tableaux, en reprenant ceux que vous avez spécifiés dans la zone « Nom du tableau » de l’onglet contextuel « Création de tableau » (cf. image ci-dessous)
    • Les numéros de la première et dernière colonne de la plage de colonnes à comparer (mettez des valeurs identiques pour comparer selon une seule colonne)
    • Le mode de comparaison (xDifferences ou xMatches), selon que vous souhaitez extraire les éléments différents ou les éléments communs.
  3. Dans la feuille Excel, cliquez à l’endroit où vous souhaitez générer le tableau de résultat
  4. Appuyer sur ALT + F8 pour ouvrir la boîte de dialogue des macros
  5. Sélectionnez la macro « ComparerTableaux » et cliquez sur Exécuter

Remarques

  • Si vous modifiez l’un des 2 tableaux à comparer, il faut supprimer le tableau de résultat de comparaison et le recréer.
  • Pour spécifier le nom d’un tableau, placez le curseur n’importe où dedans pour que l’onglet « Création de tableau » s’affiche, puis saisissez le nom dans la zone suivante et validez par Entrée :
Excel nom de tableau
Spécifier le nom d’un tableau dans l’onglet contextuel « Création de tableau » d’Excel

Exemple 4 : Comparer deux tableaux Excel avec Power Query

Power Query et un complément d’Excel très puissant pour charger et transformer des données. Il est intégré par défaut à Excel depuis sa version 2016.

Avec Power Query, vous pourrez générer facilement 3 tableaux de résultats contenant respectivement les éléments communs et les éléments spécifiques à l’un ou l’autre des tableaux à comparer. C’est sans doute la technique la plus puissante de toutes !

Utiliser Power Query présente en effets de gros avantages :

  1. Aucune formule Excel à écrire. Donc si vous n’êtes pas à l’aise avec les formules, ce n’est pas un problème.
  2. Pas besoin de macros, ce qui est un gage de sécurité. D’ailleurs depuis une mise à jour d’Office d’Octobre 2022, toutes les macros sont désormais désactivées par défaut. Ceci afin de lutter contre les problèmes de sécurité qu’elles génèrent, surtout en entreprise.
  3. Power Query vous permet de transformer au préalable les données de vos tableaux si besoin (ex : séparer ou regrouper des colonnes, transformer des colonnes en dates, prix…etc.). Ainsi, si vous recevez des données brutes, vous pourrez facilement les mettre en forme avant de les comparer. Et ce, avec une interface conviviale, sans avoir à écrire de formule.
  4. Après génération des tableaux de résultats de comparaison, si vos données d’origine changent, vous pourrez mettre à jour les résultats en un clic.

Cette technique pourrait faire l’objet d’un article à part entière. Mais j’ai préféré vous la présenter en vidéo pour plus de simplicité. La vidéo ci-dessous vous fera donc découvrir Power Query, et vous expliquera en détails comment comparer 2 tableaux Excel.

En synthèse

Vous avez vu comment comparer deux tableaux Excel pour en faire ressortir les éléments communs ou les différences, puis afficher le résultat de différentes manières.

Ces techniques fonctionnent même si les tableaux à comparer ne sont pas dans la même feuille, et vous pouvez également déplacer les tableaux sans problème.

Avez-vous essayé ces techniques ? Qu’en pensez-vous ? Partagez en commentaire.

Cyril Seguenot

Formez-vous sérieusement sur Excel à tout petit prix avec mon livre numérique

Livre numérique Excel Efficace spécial débutants

Commentaires

79 réponses à “Comment comparer deux tableaux Excel ?”

  1. Merci pour cet article clé en main ; ça aide bien. Les captures d’écran, pas à pas, sont bien utiles. Merci

  2. Avatar de Vince
    Vince

    Bonjour,
     
    C’est vraiment très intéressant et très bien expliqué !
    Cependant impossible de faire fonctionner cette macro malheureusement.
    VBA m’indique : type défini par l’utilisateur non défini

    1. Avatar de Cyril
      Cyril

      Bonjour,
      Merci pour votre retour. Il y avait en effet une erreur dans le code, que je viens de corriger. A la place de ComparisonType, il fallait mettre ComparisonMode. Merci de m’avoir permis de corriger cette erreur !

      1. bonjour,
        je n’arrivais pas à créer de le 3eme tableau
        il y a un souci avec le nom des tableau

        BuildComparisonResult ActiveSheet.ListObjects( » TK »), 1, _
                           ActiveSheet.ListObjects( » CCH »), 1, _
                           xDifferences, ActiveCell

        1. Avatar de Cyril
          Cyril

          Bonjour Lea,
          Quel soucis ?
          Il faut en effet mettre vos propres noms de tableaux dans le code surligné en jaune, comme je l’ai précisé…

          1. Avatar de Léa
            Léa

            J’ai bien mis les noms de mes deux TableauX « TK » et « CCH » mais ça ne fonctionne pas . La macro n’arrive pas S’exécuter.
            j’ai mis le nom des tableaux en haut de chaque tableau .
            et sur la macro entre les parenthèses et les guillemets.
            merci pour votre aide

          2. Avatar de Cyril
            Cyril

            Pour nommer un tableau, vous devez cliquer n’importe où dedans, puis saisir son nom dans la zone « Nom du tableau » du ruban contextuel « Création de tableau ». Valider bien votre saisie en appuyant sur Entrée.

          3. Avatar de Léa
            Léa

            Super merci encore

          4. Avatar de Corentin
            Corentin

            Bonjour et merci pour votre travail. Je ne sais pas si c’est mon navigateur qui déconne, mais je ne vois pas de ligne surligné en jaune, pouvez-vous m’indiquer peut être un numéro de ligne ou un autre moyen de la trouver ?

  3. Avatar de Cyril
    Cyril

    Pour info, je viens de mettre à jour cet article, car les animations des images GIF ne s’exécutaient pas.
    J’ai également optimisé le code VBA de la macro pour que la comparaison de gros tableaux soit plus performante, et pour mieux gérer les cas le résultat de la comparaison est vide.

  4. Avatar de Watters Véronique
    Watters Véronique

    Bonjour
    Très intéressant! Est-ce possible de comparer des chiffres au lieu de noms?
    Je compare des numéros de réservations.
    Merci pour votre aide!

    1. Avatar de Cyril
      Cyril

      Bonjour,
      Oui ça marche aussi avec des nombres sans soucis

  5. Avatar de Watters Véronique
    Watters Véronique

    Bon quelque chose que je pige pas! Je mets la formule du premier tableau dans une nouvelle r`gle de =ESTNUM(EQUIV($A2;INDIRECT(« tabNoms2[Nom] »);0)). je formate couleur bleue . Mais la couleur disparaît en sélectionnant le 2eme tableau, normal docteur ? Je persiste et signe la même procédure pour le deuxième tableau, avec une couleur différente, mais cette fois avec :=ESTNUM(EQUIV($C2;INDIRECT(« tabNoms1[Nom] »);0)) Quand je sélectionne le deuxième tableau et même résultat, pas de couleur et pas comaparaison…. qu’est-ce que je n’ai pas compris ? Merci Cyril!

    1. Avatar de Cyril
      Cyril

      Bonjour Véronique,
      Lorsque vous créez la mise en forme conditionnelle, vous devez faire attention auparavant à bien sélectionner le tableau entier auquel elle s’applique. Si besoin, regardez cette vidéo que j’ai faite sur les mises en forme conditionnelles 😉

  6. Avatar de Odrey
    Odrey

    Bonjour, j’aimerai savoir quelle formule vous utilisez pour l’exemple 2 (les vrai / faux).
    Votre tutoriel est très clair dans son ensemble. Merci pour le partage de connaissances.

    1. Avatar de Cyril
      Cyril

      Bonjour, c’est exactement la même formule que dans l’exemple 1, sauf qu’elle est appliquée à la colonne « présent tab2 » au lieu d’être utilisée dans une mise en forme conditionnelle.

      1. Avatar de Odrey
        Odrey

        Bonjour, je reprends mon travail sur un tableau de comparaison, et je n’ai pas saisi la formule à intégrer dans la colonne « Présent nomtab2 » (dans le 1er tableau)

  7. Avatar de Gian
    Gian

    Bonjour,

    J’aimerais savoir si votre code peut s’adapter pour comparer plus de 2 Tableaux ?
    En effet, j’extrait des données et une colonne correspond à un tableau. Je peux avoir plus de 2 colonnes à comparer.

    1. Avatar de Cyril
      Cyril

      Bonjour,
      Sans parler de code, quel résultat attendriez-vous d’une comparaison de 3 tableaux ? Uniquement les éléments communs ? Car sinon, je ne vois pas trop ce qu’on pourrait attendre…
      Pour chercher les éléments communs, vous pouvez faire 2 comparaisons successives entre le 1er et le 2ème tableau, puis entre le résultat et le 3ème tableau

  8. Avatar de Gauthier
    Gauthier

    Bonjour,

    Je reviens vers votre macro car elle m’intéresse pour un projet.
    Malheureusement, je bloque sur le point suivant, une erreur de synthaxe à la ligne 39… Une idée ?
    cf capture d’écran

    Merc d’avance !

    1. Avatar de Cyril
      Cyril

      Bonjour,
      Je ne vois pas de lien vers votre capture d’écran. Je ne peux donc malheureusement pas vous aider. Le mieux serait de mettre votre classeur Excel sur un Drive et de partager le lien…

      1. Avatar de Gauthier
        Gauthier

        ça fonctionne ?

        1. Avatar de Cyril
          Cyril

          J’ai trouvé le problème : pour une raison inconnue (sans doute la mise à jour du thème de mon site), tous les zéros avaient disparus dans l’extrait de code !
          Je viens tant bien que mal de régler le problème. Vous pouvez récupérer le code.

          1. Avatar de Gauthier
            Gauthier

            Incroyable ! Merci beaucoup pour votre réactivité et votre investissement !

          2. Avatar de Cyril
            Cyril

            Et merci à vous de m’avoir donné l’occasion de corriger ce problème ! 🙂

          3. Avatar de salma
            salma

            j ai le même prob comment je peux le corriger

  9. […] L’exemple ci-dessus montre une interface visuelle que j’ai créée pour la comparaison de tableaux de données à l’intérieur d’une feuille, selon la technique décrite dans cet article. […]

  10. Avatar de Clément
    Clément

    Bonjour,

    Merci pour ce support article et surtout cette macro !

    Cependant , j’aurais aimé l’adapter pour contrôler l’entièrreté de mes deux tableaux, pour ensuite créer un troisième tableau ou est indiqué les lignes qui ont été modifiées.

    Est-ce que cela est réalisable ?

    1. Avatar de Cyril
      Cyril

      Bonjour,
      Qu’est-ce qu’une ligne modifiée selon vous ? Et comment devrait-elle apparaître dans le 3ème tableau ?

  11. Avatar de Mike
    Mike

    Bonjour,

    Les deux tableaux que je désire comparer se trouvent dans deux feuilles différentes et j’aimerai que le tableau de comparaison s’affiche sur une autre page mais je ne parviens pas à adapter cela au code, Pouvez vous m’aider ?

    1. Avatar de Cyril
      Cyril

      Bonjour,
      Pour faire référence à une feuille particulière, utilisez la syntaxe Worksheets(« feuill1 ») au lieu de ActiveSheet, qui représente la feuille active.
      Vous pouvez faire ceci dans le code surligné en orange, en utilisant les noms de vos feuilles à la place de « feuill1 ». Exemple :

      BuildComparisonResult WorkSheets("Feuill1").ListObjects("tabNoms1"), 1, _
                         WorkSheets("Feuill2").ListObjects("tabNoms2"), 1, _
                         xDifferences, ActiveCell
      

      Le tableau de comparaison sera créé dans la feuille courante.

  12. Avatar de Larroque
    Larroque

    Bonsoir,
    J’ai moi aussi un problème dès le début de la macro avec le « BuildComparisonResult ActiveSheet.ListObjects » qui me donne une Run-time error 9: Subscript out of range. j’ai ajusté le nom des tableau mais rien n’y fait….

    1. Avatar de Cyril
      Cyril

      Bonjour,
      La réponse que j’ai apportée à la question de Mike ci-dessous pourra certainement vous aider…

  13. Avatar de Kamale
    Kamale

    Bonjour,
    Merci pour toutes ces infos. J’ai tenté de reproduire l’utilisation de la macro avec le même type de jeux de données (2 tableaux simples avec les mêmes noms de tableau que dans le script). Au lancement de la macro, j’ai l’erreur suivante en pj.

    Pourriez-vous m’aider svp?

    1. Avatar de Cyril
      Cyril

      Bonjour,
      Cette erreur provient certainement du type ComparisonMode qui n’est pas reconnu. Etes-vous sûr d’avoir bien recopié l’ensemble du code, notamment la déclaration du type énuméré ComparisonMode ?

  14. Avatar de Safouane
    Safouane

    je n’arrive pas exécuter la macro, le message suivant s’affiche :

  15. Avatar de Kalunna
    Kalunna

    Bonjour, merci pour cette macro très utile, très bien expliquée. Sauriez-vous s’il est possible de comparer 2 tableaux possédant chacun 2 colonnes ; la comparaison ne pourrait s’effectuer que sur les colonnes 1, mais dans le résultat, je voudrais récupérer les valeurs de la colonne 2 (colonne 1 = identifiant numérique // colonne 2 = une url)
    Merci d’avance

    1. Avatar de Cyril
      Cyril

      Bonjour,
      Merci pour votre retour 😉
      Oui, il suffit de modifier le code suivant dans la fonction CompareListObjects

      ' On récupère les valeurs des tableaux à comparer
      ar1 = list1.DataBodyRange.Value2
      ar2 = list2.DataBodyRange.Value2
      

      (on récupère les valeurs de toutes les colonnes des tableaux, et pas seulement de la première colonne)

      …et un peu plus bas :

      collMatch.Add ar1(i, 2)
      collDif.Add ar1(i, 2)
      

      (on stocke les valeurs de la 2ème colonne de chaque tableau)

      NB/ J’ai testé, ça fonctionne bien

      1. Avatar de Philippe
        Philippe

        Bonjour Cyril
        Débutant en macro, je plagie votre macro en essayant de la comprendre.
        Une interrogation supplémentaire : si je veux récupérer les valeurs des X colonnes, comment dois-je modifier la macro ? (différence comparée sur colonne 1 des tableaux 1 et 2 mais stockage et récupération des valeurs des 4 colonnes)
        J’ai essayé en mettant mais cela met les valeurs les unes en dessous des autres, et non colonne après colonne

        collDif.Add ar1(i, 1)
        collDif.Add ar1(i, 2)
        

        D’avance merci

  16. Avatar de Quentin
    Quentin

    Bonjour, merci pour cette macro très utile. Sauriez-vous pourquoi ma macro ne s’exécute pas entièrement?

    1. Avatar de Quentin
      Quentin

      désolé, voici ma capture d’écran

      1. Avatar de Cyril
        Cyril

        Bonjour Quentin,
        Le problème se produit dans le cas particulier où le tableau de résultats ne comporte qu’une ligne vide. Il faut modifier le code comme ceci pour ne plus être embêté :

          If Not .ListColumns(1).DataBodyRange Is Nothing Then
             .Sort.SortFields.Add2 Key:=.ListColumns(1).DataBodyRange
             .Sort.Apply
          End If
        

        Merci de m’avoir remonté ce problème. Je vais corriger le code dans l’article 😉

  17. Avatar de Tiger
    Tiger

    Bonjour,

    Les erreurs de syntaxes à la ligne 39 sont toujours présentes. J’ai vu qu’il s’agissait de la disparition des zéros dû à la MaJ du thème. Il y aurait moyen d’avoir le code corrigé ?

    Merci d’avance

    Tiger

    1. Avatar de Cyril
      Cyril

      Bonjour,
      Gasp ! Merci de m’avoir prévenu 😉 ça commence à être pénible ce truc…
      Je viens de corriger le code et je l’ai mis dans un fichier sur Google Drive pour que le problème ne se reproduise plus.

  18. Avatar de Kazaar
    Kazaar

    Bonjour,

    Merci pour cette macro !

    Selon vous, est-il possible de pouvoir comparer les deux tableaux, et faire apparaître dans le 3ème tableau les lignes entières qui ne sont pas des doublons ? Je n’ai pas réussis à trouver la solution…

    Merci beaucoup pour votre aide

  19. Avatar de Camille
    Camille

    Bonjour Cyril,

    Tout d’abord merci de votre tutoriel.

    Je m’arrache les cheveux sur un problème depuis ce matin. Je pensais avoir une bonne maitrise d’Excel, mais je m’aperçoit que les VBA est assez compliqué quand nous ne pratiquons plus depuis longtemps.

    Mon probleme est assez simple.

    J’ai deux bases de données (sur deux feuilles différentes d’un même classeur).

    L’idée serait de comparer mes deux bases deux donnée et créer un troisieme tableau sur une feuille supplémentaire avec les produits similaire se trouvant dans mes deux bases de donnée.

    j’ai pourtant copié le code, modifier les informations avec le nom de mes tableaux, mais j’ai toujours ce meme message d’erreur « l’indice n’appartient pas a la selection ».

    feuille 1 = Base de donnée des produits importés (3200 lignes)
    feuille 2 = Inventaire d’un point de vente (avec produits similaire)
    feuille 3 = Report dans un nouveau tableau des produits en commun dans la feuille 1 et feuille 2

    colonne c (code produit), critere pour comparaison des similitudes.

    j’espere avoir été assez précis. J’aimerais comprendre la logique meme sur un cas similaire avec une dizaine de produits. Ensuite je pense que je pourrais recopier la logique pour des tableaux plus volumineux.

    En vous souhaitant une excellente journée,

    Dans l’attente de vous lire.

    Camille

  20. Avatar de Océane
    Océane

    Bonjour,

    Je rencontre une erreur (voir ci joint) que je n’arrive malheureusement pas à résoudre malgré le fait d’avoir vérifié que j’avais bien le code en entier etc. Quelqu’un pourrait-il m’aider?

    1. Avatar de Cyril
      Cyril

      Bonjour Océane,
      Si l’erreur se produit dans la fonction BuildComparisonResult, comme je crois le deviner d’après le texte qui est derrière la boîte de dialogue, vérifiez que vos tableaux sont correctement nommés (les noms spécifiés dans le code doivent correspondre à ceux de vos tableaux). Vérifiez également que les N° de colonnes spécifiés dans le code sont corrects (=1 si vos tableaux ne comportent qu’une seule colonne).
      Dites-moi ce qu’il en est.

      1. Avatar de Océane
        Océane

        Bonjour,

        J’ai bien réussi à résoudre mon erreur. Merci à vous.
        Cependant je rencontre une nouvelle erreur (cf image) que je n’arrive pas à résoudre malgré de nombreuse tentative. Mon erreur viendrai, selon le mode debug de l’endroit surligné en jaune sur l’image.

        Avez-vous une idée de ce qui pourrais provoquer cette erreur lors de la compilation.

        Bien à vous,
        Océane

  21. Avatar de franck
    franck

    bonjour Cyril,

    merci pour ce code d’une grande utilité, toutefois étant loin d’être un expert en VBA, j’ai essayé de retranscrire cette macro dans mon cas de figure ; En l’espèce j’ai 2 tableaux de 6 colonnes chacun pour lesquels je souhaite comparer la dernière colonne.
    Bien qu’ayant rentré le nom correct des tableaux (tabNoms1 et tabNoms2) et modifier le nombre de colonne en début, je suis toujours confronté au même message d’erreur

    Pouvez vous m’aider ?

    en vous en remerciant par avance

    bien à vous

    franck

    1. Avatar de Cyril
      Cyril

      Bonjour Franck,
      Merci pour votre retour, car cela m’a permis de détecter un bug dans le code VBA : les N° de colonnes spécifiés pour la comparaison n’étaient pas pris en compte. La comparaison était systématiquement faite sur la première colonne de chaque tableau !
      J’ai corrigé le problème et je vous invite donc à retélécharger le code et refaire un essai.
      Si vous avez encore une erreur, merci de m’indiquer le message d’erreur qui s’affiche pour que je puisse vous aider.
      Bien à vous

      1. Avatar de franck
        franck

        bonjour Cyril,

        Avant tout, merci pour votre prompte réponse ; je vous sollicite de nouveau car j’ai toujours le pb d’indice:(

        je souhaite comparer les colonnes n°6 de chacun de mes tableaux (cf image jointe – colonne fluo), j’ai donc modifié le début de votre code en remplacant le 1 par 6,

        un grand merci pour votre aide

        bien à vous

        franck

        1. Avatar de Cyril
          Cyril

          Bonjour Franck,
          D’après vos captures d’écran, vous avez toujours l’ancienne version du code et non pas celle que je viens de corriger. Rafraichissez la présente page dans votre navigateur en appuyant sur CTRL + F5 pour être sûr de rafraîchir le cache svp, puis cliquez à nouveau sur le bouton noir « Afficher le code VBA de la macro ».
          Vous verrez que le code est maintenant stocké sur GitHub et non plus Google Drive.

          1. Avatar de franck
            franck

            bonjour Cyril,

            merci pour votre retour, j’ai rafraichi et effectivement Github est apparu, mais je rencontre toujours le même souci 🙁
            encore merci pour votre aide

            franck

          2. Avatar de Cyril
            Cyril

            Alors je pense qu’il y a un problème dans le nommage de vos tableaux… Quand vous cliquez dans un tableau, puis sur l’onglet « Création de tableaux », le nom du tableau qui apparaît dans la zone tout au début du ruban correspond-il bien à celui que vous avez mis dans le script VBA ?
            Sinon il faut m’envoyer votre fichier Excel par mail pour que je regarde (info@bureautique-efficace.com)

          3. Avatar de franck
            franck

            Cyril,

            bien vu, j’ai effectué un nommage de la zone de mon tableau et je n’ai pas utilisé l’outil « Tableau » pour le nommage.

            cela fonctionne. Un très grand merci pour votre aide

            franck

  22. Avatar de franck
    franck

    bonjour Cyril

    merci encore pour le code qui fonctionne à merveille, j’ai toutefois une interrogation complémentaire

    Est-il possible d’avoir sur le tableau comparatif (diff) outre la ref et le n° du tableau concerné, une 3ème colonne qui reprend le montant situé à la colonne suivante du tableau d’origine ?

    en vous remerciant pour votre aide

    franck

  23. Avatar de PRINCE
    PRINCE

    Bonjour Cyril,

    J’ai le même problème que d’autres avant moi, j’essaye de me baser sur ce que tu as pu leur donner comme conseil mais j’ai toujours le même message d’erreur qu’eux (« L’indice n’appartient pas à la sélection »).
    A vrai dire, je ne sais pas vraiment où l’on doit remplacer les noms initiaux du code par ceux de nos tableaux…

    Je t’ai fais parvenir mon fichier Excel sur la boîte mail info@bureautique-efficace.com, si tu pouvais y regarder cela me serait d’une grande aide.

    Dans l’attente de ta réponse,

    Bien à toi.

    Antoine

    1. Avatar de Cyril
      Cyril

      Bonjour Antoine,
      Je viens de mettre à jour l’article pour bien préciser comment spécifier les noms des tableaux. Je te laisse regarder et réessayer. Cela devrait résoudre ton problème je pense…
      Bien à toi

      1. Avatar de PRINCE
        PRINCE

        En effet, c’est tout bon.
        Un tout grand merci à toi…
        Bonne continuation.

        1. Avatar de Cyril
          Cyril

          Impec ! Content de t’avoir aidé 😉

  24. Avatar de Marie
    Marie

    Bonjour Cyril,

    Votre macro fonctionne vraiment bien et je vous remercie de l’avoir librement mise à disposition.

    Je souhaiterais comparer plusieurs colonnes dans deux tableaux. En l’occurrence, 8 colonnes au lieu d’une.

    Mais je ne sais pas du tout ce que je dois modifier dans le code, parce que je n’ai jamais fait ça.

    Pourriez vous m’aider s’il vous plait ?

    D’avance merci

    Marie.

    PS : je vous envoie mon fichier par mail.

    1. Avatar de Cyril
      Cyril

      Bonjour Marie,
      Je viens de mettre à jour l’article et le code de la macro pour pouvoir comparer 2 tableaux selon une ou plusieurs colonnes adjacentes. Je pense que ce sera utile pour pas mal de personnes 🙂
      Bien à vous

      1. Avatar de Marie
        Marie

        Bonjour Cyril,

        Je vous remercie une fois encore pour votre aide précieuse, votre réactivité ainsi que votre partage.

  25. Avatar de DaSilva
    DaSilva

    Bonjour Cyril,
    Je souhaiterais comparer une colonne (C) dans 3 ou plus tableaux. Mais quand je lance la macro donne l’erreur « Erreur sur les N° de colonnes »
    Pourriez-vous m’aider, svp?

    Merci d’avance.

    1. Avatar de Cyril
      Cyril

      Bonjour,
      D’après ce que je vois dans la capture d’écran, vos tableaux sont nommés Tableau1 et Tableau 2 et vous comparez les colonnes 4 à 6 de chacun d’eux.
      Si vous voulez comparer une seule colonne, il faut mettre deux fois le même numéro, en l’occurrence 1 et 1 pour comparer la première colonne (qui à l’air d’être la colonne C dans votre cas…)

  26. Avatar de Prévost Laura
    Prévost Laura

    Bonjour,
    Je vous remercie pour votre macro
    De mon côté elle fonctionne mais il faut que les colonnes comparé dans les deux feuille soient à la même colonne exemple colonne C donc je dois mettre 3, 3 dans la macro mais je voudrais comparer 2 colonnes mais pas à la même position exemple la C pour la feuille 1 et la colonne B pour la feuille 2
    Comment je pourrais faire ?

    1. Avatar de Cyril
      Cyril

      Bonjour,
      Vous pouvez par exemple intercaler une colonne vide dans le tableau de la seconde feuille pour que les colonnes à comparer soient à la même position dans els 2 tableaux. Puis supprimer cette colonne une fois la comparaison faite.

      1. Avatar de Prévost Laura
        Prévost Laura

        Enfaîte les deux tableau à comparer on déjà pas mal de colonnes je dirais une bonne vingtaine et j’ai 3 colonne à comparer aucune ne sont au même endroit entre les deux tableaux c’est la le problème mais je pense pourvoir le régler en copiant que les colonnes qui me concer à la limite.
        Mais j’ai un autre problème Enfaîte je doit comparer les colonnes par référence je vais vous joindre une capture pour vous expliquer
        La première capture est le tableau de référence
        La deuxième est celle que je doit comparer avec l’autre
        Mon but étant de comparer les article dont la référence est identique entre les deux tableaux et de relever les différences comme le calibre en rouge du produit de la clémentine qui est pas bon et de le faire apparait dans une autre feuille
        Par contre j’ai remarqué que les majuscule apparaissent en t’en que différence comme tomate en jaune.

        Comme vous pourvez le voir il y a des lignes en plus (en orange) sur la deuxième capture le but étant de ne pas s’occuper des ces lignes c’est pour la comparaison pas référence et aussi car par exemple la tomate n’est pas à la même ligne entre les deux tableaux je ne sais pas si j’ai étais claire
        C’est pour ça que j’ai voulue prendre votre macro mais je n’arrive pas a la modifier pour s’adapter à cette problématique.
        Merci de votre réponse

        1. Avatar de Prévost Laura
          Prévost Laura

          Voici la deuxième capture

        2. Avatar de Cyril
          Cyril

          Bonjour,
          Désolé, je n’ai pas compris le problème…
          En tout cas, pour régler l’ordre des colonnes, rien ne vous empêche de déplacer les colonnes à comparer pour qu’elles soient contigües et à la même position dans les 2 tableaux.
          Je vous conseille aussi de trier vos tableaux par référence, sinon ça devient très compliqué de s’y retrouver…
          Pour les problèmes de majuscules et minuscules, vous pouvez éventuellement corriger les majuscules manquantes si les lignes concernées ne sont pas trop nombreuses.
          Si vous ne vous en sortez pas avec la macro, je vous suggère d’utiliser Power Query, comme expliqué dans la vidéo. C’est un outil très puissant et la meilleure méthode pour comparer des tableaux

          1. Avatar de Prévost Laura
            Prévost Laura

            Bonjour,
            PowerPoint query est à télécharger ?
            Car je travail sur un ordinateur d’entreprise donc si oui ça va être compliqué surtout que l’excel doit être utilisé par plus personne

          2. Avatar de Cyril
            Cyril

            Non, Power Query est déjà intégré à Excel

          3. Avatar de Prévost Laura
            Prévost Laura

            A ca c’est intéressant et comment peut ont l’avoir il est dans les onglet ?

          4. Avatar de Cyril
            Cyril

            S’ils vous plait, regardez la vidéo qui figure à la fin du présent article. Tout y est expliqué en détails..

          5. Avatar de Prévost Laura
            Prévost Laura

            D’accord merci de votre aide

  27. Avatar de Clémence Humeau
    Clémence Humeau

    Bonjour !

    Je vous remercie pour ces tutos très clairs et utiles.
    Je cherche à utiliser la méthode de la macro pour identifier les lignes présente dans un tableau et absente dans l’autre (les 2 tableaux ont 3 colonnes).

    J’ai bien recopié le code VBA fourni, et ai nommé mes tableaux comme indiqué.

    Une fois la macro exécutée, l’outil m’indique ce message : « Erreur de compilation : Nom ambigu détecté : ComparisonMode ».

    Je ne suis pas experte en VBA et ne sait pas comment corriger ce problème, pourriez vous m’aider ?

    Bien à vous,

    1. Avatar de Cyril
      Cyril

      Bonjour,
      Je ne vois pas d’où peut venir ce problème. Je ne le reproduis pas et personne d’autre ne me l’a remonté. Avez-vous bien collé le code dans un module VBA ?
      Je suis désolé, mais je n’ai malheureusement pas le temps de vous aider plus en ce moment…
      Bien à vous

  28. Avatar de Mariel
    Mariel

    Excellent ! je vais essayer au travail !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Sommaire