formateur informatique

Trouver les différences de données avec Excel

Accueil  >  Bureautique  >  Excel  >  Excel Avancé  >  Trouver les différences de données avec Excel
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Identifier toutes les différences de données

La solution que nous proposons de développer consiste à repérer très précisément les informations qui diffèrent entre deux sources de données. Il ne s'agit pas d'identifier l'enregistrement complet pour lequel des informations auraient évoluer. Il s'agit bien d'alerter sur la donnée spécifiquement et potentiellement modifiée au sein de chaque enregistrement.

Alertes visuelles dynamiques sur les différences de données entre deux bases Excel

Les différences de casse ne sont pas considérées quant à elles.

Source et présentation de la problématique
Pour la mise en place de la solution, nous proposons de réceptionner un classeur Excel offrant des données à comparer. Le classeur réceptionné est muni de deux feuilles nommées respectivement Base1 et Base2. Elles proposent chacune une petite source de données. A priori, les deux tableaux sont identiques. Mais ils regorgent de petites différences dues à des changements de codes postaux ou à des fautes dans la saisie des prénoms par exemple. Certains clients sont aussi présents dans une source et absents dans l'autre.

Pour simplifier la mise en oeuvre de la formule alambiquée, les deux tableaux possèdent un nom.
  • En haut de la fenêtre Excel, cliquer sur l'onglet Formules pour activer son ruban,
  • Dans la section Noms définis du ruban, cliquer sur le bouton Gestionnaire de noms,
Gestionnaire des noms des tableaux Excel pour simplifier la construction des formules destinées à les comparer

La boîte de dialogue du gestionnaire de noms apparaît. Et comme vous pouvez le voir, les deux tableaux sont reconnus sous les noms respectifs BdTab1 et BdTab2.
  • Cliquer sur le bouton Fermer de la boîte de dialogue pour revenir sur la feuille,
Ici, les bornes des tableaux sont considérées comme strictes. Mais pour des plages mouvantes et des comparaisons évolutives, il suffirait d'exploiter la fonction Excel Decaler comme nous l'avions appris à l'occasion d'une formation.

Identifier chaque différence
Pour mettre en valeur chacune des disparités trouvées d'un tableau à un autre, nous devons bâtir une règle de mise en forme conditionnelle. La première colonne est considérée comme le champ de référence. En effet, dans une base de données digne de ce nom, chaque enregistrement est référencé par un identifiant unique. Pour l'étude, nous considérons donc qu'aucune différence ne peut être décelée dans cette rangée.

A partir de chacune des données de cette colonne, l'idée consiste à trouver sa position en ligne dans l'autre base de données. Et pour cette ligne, chaque élément de ses champs doit être comparé. Si des différences sont observées, elles doivent être relevées par format dynamique.

Pour bâtir cette règle de mise en forme conditionnelle, nous avons besoin d'utiliser les deux fonctions de recherche Index et Equiv :

=Index(BD_de_recherche; ligne; colonne)
=Equiv(Valeur_cherchée; Colonne_de_recherche; Mode_de_recherche)


La fonction Index permet d'extraire d'une base de données (BdTab2) à passer en premier paramètre, l'information située au croisement d'une ligne, à passer en deuxième paramètre, et d'une colonne à passer en troisième paramètre.

L'indice de ligne dépend du nom cherché dans l'autre source de données. Nous récupèrerons cet indice grâce à la fonction Equiv en lui passant la cellule du nom cherché en premier paramètre.
  • Sélectionner les données du tableau de la feuille Base1, soit la plage de cellules B3:D20,
  • Dans la section Styles du ruban Accueil, cliquer sur le bouton Mise en forme conditionnelle,
  • En bas de la liste des propositions, choisir l'option Nouvelle règle,
  • Dans la boîte de dialogue qui suit, sélectionner le type : Utiliser une formule pour ...,
  • Puis, cliquer dans la zone de saisie juste en dessous pour l'activer,
  • Taper alors le symbole égal (=) pour initier la syntaxe de la règle,
  • Saisir la fonction d'extraction suivie d'une parenthèse, soit : Index(,
  • Saisir le nom du tableau de recherche, soit : BdTab2,
  • Taper un point-virgule (;) pour passer dans l'argument de la ligne,
  • Saisir la fonction cherchant cet indice, suivie d'une parenthèse, soit : Equiv(,
  • Désigner la première valeur cherchée en cliquant sur la cellule B3 de la feuille Base1,
  • Enfoncer deux fois la touche F4 du clavier, ce qui donne : $B3,
Ainsi, nous la libérons en ligne et la conservons figée en colonne. Nous le disions, la première colonne est considérée comme celles des références. Nous cherchons donc à trouver sa position dans la seconde base de données. En libérant cette cellule en ligne, nous les passerons toutes en revue pour les rechercher tour à tour.
  • Taper un point-virgule (;) pour passer dans l'argument de la colonne de recherche,
  • En bas de la fenêtre Excel, cliquer sur l'onglet Base2 pour activer sa feuille,
  • Désigner alors l'ensemble des références pour la recherche, soit : Base2!$B$3:$B$20,
  • Taper un point-virgule suivi du chiffre 0, soit : ;0, pour une recherche exacte,
  • Fermer alors la parenthèse de la fonction Equiv,
A ce stade, nous sommes censés avoir retourné à la fonction Index, l'indice variable de ligne de l'élément cherché, afin de comparer chacune de ses valeurs de colonne avec celles de l'autre base de données. Il nous reste à lui fournir l'information sur l'indice de colonne pour effectuer le croisement de la donnée à extraire et à comparer. Et c'est précisément là que réside l'astuce. Pour un même nom, toutes ses colonnes (Ici il y en a deux : Le prénom et le CP), doivent être passées en revue dans la première base à la recherche de correspondances dans la seconde.
  • Taper un point-virgule (;) pour passer dans l'argument de la colonne de la fonction Index,
  • Taper la fonction donnant l'indice d'un champ, suivie de deux parenthèses, soit : Colonne(),
En paramètre, nous aurions très bien pu lui passer la cellule B3 complètement défigée, de la feuille Base1. Mais, en l'absence de paramètre, elle considère la cellule active. Elle suit donc le raisonnement chronologique de la mise en forme conditionnelle qui passe en revue toutes les cellules de la sélection. C'est ainsi pour un enregistrement dont la ligne a été trouvée, que ses colonnes vont être analysées.

En revanche, la fonction Colonne retourne une information absolue. Pour elle, la colonne B est placée à l'indice 2. Or, il s'agit de la première colonne de notre tableau. Nous devons corriger cet écart.
  • A la suite de la syntaxe, retrancher une unité, soit : -1,
  • Puis, fermer la parenthèse de la fonction Index,
Désormais, pour chaque champ analysé de chaque enregistrement, nous devons vérifier si une correspondance est trouvée avec l'extraction effectuée depuis le tableau de la feuille Base2.
  • Terminer la syntaxe par l'inégalité suivante : <>B3,
Nous prenons soin et c'est fondamental, de complètement défiger la première cellule pour la comparaison. Cette cellule désigne le premier nom du tableau de la feuille Base1. De cette manière, au fil des extractions d'informations pour chaque enregistrement repéré, les données sont comparées colonne à colonne. Si l'inégalité est vérifiée, cela signifie qu'une différence est isolée. Nous devons la faire ressortir.
  • Cliquer sur le bouton Format situé en bas de la boîte de dialogue,
  • Dans la boîte de dialogue qui suit, activer l'onglet Remplissage,
  • Dans la palette de couleurs, choisir un rouge foncé,
  • Activer alors l'onglet Police de la boîte de dialogue,
  • Avec la liste déroulante, choisir un gris très clair pour la couleur du texte,
  • Valider ces attributs de format avec le bouton Ok,
Règle de mise en forme conditionnelle Excel pour identifier visuellement les différences entre deux tableaux

Nous sommes de retour sur la première boîte de dialogue qui illustre parfaitement le contexte. Dès lors qu'une différence est décelée entre les deux bases de données, les cellules correspondantes du premier tableau doivent être mises en valeur.
  • Cliquer sur le bouton Ok pour valider la création de la règle de mise en forme conditionnelle,
De retour sur la feuille, des cellules surgissent instantanément. Prenons l'exemple du dernier enregistrement repéré en ligne 15. Il s'agit de Madame Sarbaque. La règle alerte sur une incohérence décelée au niveau du code postal.
  • En bas de la fenêtre Excel, cliquer sur l'onglet Base2 pour atteindre sa feuille,
L'enregistrement de cette personne se situe cette fois en ligne 12. Le prénom est fort logiquement identique mais le code postal a changé. Sa valeur 13500 est passée à 06500. Notre solution est donc parfaitement fonctionnelle pour isoler précisément les données ayant été modifiées pour des enregistrements a priori identiques. Et nous allons le prouver une fois encore.
  • Sur la feuille Base2, sélectionner la cellule C11,
Il s'agit du client Douche Raël. Il existe bien dans le tableau de la feuille Base1. Nous proposons de modifier le prénom en supprimant les accents.
  • Donc, en C11, saisir le prénom Rael,
  • Après validation, revenir sur la feuille Base1,
Comme vous pouvez le voir, la donnée de cet enregistrement y est désormais repérée comme erronée ou plutôt non concordante.

Marquer dynamiquement et visuellement les différences de saisies dans les enregistrements de deux tableaux Excel

La formule de la règle de mise en forme conditionnelle que nous avons bâtie est donc la suivante :

=INDEX(BdTab2; EQUIV($B3; Base2!$B$3:$B$20; 0); COLONNE()-1)<>B3

Pour repérer des enregistrements totalement existants, souvenez-vous, il s'agit d'exploiter la fonction SommeProd. Grâce à son raisonnement matriciel, elle permet de recouper des critères sur des colonnes respectives :

=SOMMEPROD((Base2!$B$3:$B$20=$B3) * (Base2!$C$3:$C$20=$C3))=0

Nous avions démontré son efficacité à l'occasion d'une formation destinée à comparer deux bases de données.

Bien sûr et pour terminer, afin d'identifier toutes les données du second tableau qui diffèrent dans le premier, il convient d'adapter la syntaxe de la règle de mise en forme conditionnelle.

=INDEX(BdTab1; EQUIV($B3; Base1!$B$3:$B$20;0); COLONNE()-1)<>B3

Les recherches ne sont plus effectuées dans le tableau BdTab2 ni dans la première colonne de la feuille Base2 pour la fonction Equiv. Il s'agit donc de les remplacer respectivement par BdTab1 et Base1.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn