XL 2019 Recherchev imbriqué (ou bien recherche et "ou" ou "et"...)

monsieurmarcadet

XLDnaute Junior
Bonjour chers amis,

Essayons d'être clair...

J'ai un fichier avec une liste de personnes avec, entre autre, 3 infos : Nom, Prénom et Date de Naissance. J'ai un autre fichier avec aussi des personnes, ces mêmes infos, mais des erreurs dans l'une de ces 3 infos.

Le but c'est de retrouver les lignes des personnes où il y a deux infos identique et une 1 infos fausse parmis les 3 colonnes. Par exemple sur mon fichier test, Jean Durant né le 03/06/1973 à gauche est né le 03/06/1976 à droite (j'ai tout mis dans un seul fichier pour la compréhension du fichier test). En bas, le résultat de la recherche, c'est à dire surligner les cellules différente.

Je pense que la solution est une espèce de recherchev imbriqué, mais je bloque.

S'il vous manque des infos, dites-le moi, j'ai l'impression de pas être clair...

Merci d'avance !!
 

Pièces jointes

  • test.xlsx
    9.9 KB · Affichages: 17

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @monsieurmarcadet, @JHA :), @R@chid :),

Un essai par VBA. Cliquez sur le bouton Hop!
Le résultat se trouve sur la feuille "Result".
le code de la macro se trouve dans le module Module1.

Le critère (exactement deux valeurs identiques) ne permet pas d'aboutir forcément à un résultat juste: :confused:

Si dans le premier tableau on a :

DurantJosiane
03/06/1973
DurantJean
03/06/1973
et si ces deux lignes sont présentes aussi dans le second tableau alors:
  • sur la ligne de Durant Josiane, le prénom sera surligné (résultat de la comparaison de Josiane avec Jean)
  • ET sur la ligne de Durant Jean, le prénom sera aussi surligné (résultat de la comparaison de Jean avec Josiane)
donc avec les jumeaux, triplets, quadruplets, etc, ça ne marche pas :p. D'autres cas aboutissent aux mêmes anomalies.
 

Pièces jointes

  • monsieurmarcadet- recherche diff- v2.xlsm
    22.3 KB · Affichages: 12
Dernière édition:

monsieurmarcadet

XLDnaute Junior
mapomme, ta macro marche impec je crois bien ! A vérifier avec de vrais données, mais ça m'a l'air top.

Et pour répondre à ta question, le 2e tableau, celui de droite, ne peut pas avoir des lignes exactement identiques au tableau de gauche, donc à priori, le coup des jumeaux ne devrait pas arriver.

J'aurais tout de même quelques ajustement à te demander (parce que j'ai beau lire ton VBA.... je suis paumé...) : Serait-ce possible de ne pas afficher les lignes qui existent à gauche mais pas à droite ? (aucune cellules coloriés).

De plus, je ne comprends pas la différence de couleur ?

En tout cas merci ! A JHA aussi merci, mais je n'ai pas trouvé la même facilité de fonctionnement qu'ici.
 

mapomme

XLDnaute Barbatruc
Supporter XLD

Pièces jointes

  • monsieurmarcadet- recherche diff- x1.xlsm
    26.7 KB · Affichages: 9

monsieurmarcadet

XLDnaute Junior
Bonjour mapomme !

C'est absolument nickel. Mais j'avais oublié un point important (je suis chiant hein...). Toutes les lignes de droites doivent apparaître sur la partie résultat : quelles aient des différences (donc colorés) ou non. J'arrive pas à savoir si ça complexifie beaucoup le truc. Si c'est le cas, tant pis, c'est déjà énorme ce que tu as fait !

Merci de ton aide !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @monsieurmarcadet,

Toutes les lignes de droites doivent apparaître sur la partie résultat : quelles aient des différences (donc colorés) ou non. J'arrive pas à savoir si ça complexifie beaucoup le truc.

Si j'ai bien compris, ça ne complique pas le code (juste 3 petites lignes à ajouter)
 

Pièces jointes

  • monsieurmarcadet- recherche diff- y1.xlsm
    27.1 KB · Affichages: 3

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Une dernière version plus élaborée.

Quand, sur la feuille "Result", on sélectionne une cellule, on affiche dans les colonnes N à O la ou les lignes de droite concernées par les différences.

Pour cela, on a rajouté une procédure dans module1 et 5 lignes de code dans le module de la feuille "Result".
 

Pièces jointes

  • monsieurmarcadet- recherche diff- z1.xlsm
    31.5 KB · Affichages: 8

monsieurmarcadet

XLDnaute Junior
Bonjour mapomme !

La dernière version est très sympa mais elle ne correspond pas tout à fait... Argl, j'ai l'impression d'être chiant... J'essaierais bien de peaufiner le VBA, mais... outch...

En fait, la sélection de cellule qui n'affiche que la ligne correspondante, c'est pas mal, mais il me faudrait toute la liste et surtout avec aussi les cellules fautives colorées, comme sur la partie de gauche. En fait l'idéal serait d'avoir 2 tableaux en miroir : A gauche, uniquement les lignes avec des erreurs (et colorés), à droite, toutes les lignes, avec les erreurs colorés. Et dans les tableaux, les mêmes colonnes : Nom, Prénom et Date de naissance.

A ce propos, mon fichier original a beaucoup plus de colonnes, pourrais-tu m'indiquer précisement à quel endroit du VBA je peux ajuster ça ? Autre question, est-ce que le fichier supporte le copier coller ? Et puis-je rajouter autant de ligne que je le souhaite ?

Un grand merci encore !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @monsieurmarcadet,
En fait, la sélection de cellule qui n'affiche que la ligne correspondante, c'est pas mal, mais il me faudrait toute la liste et surtout avec aussi les cellules fautives colorées, comme sur la partie de gauche. En fait l'idéal serait d'avoir 2 tableaux en miroir : A gauche, uniquement les lignes avec des erreurs (et colorés), à droite, toutes les lignes, avec les erreurs colorés. Et dans les tableaux, les mêmes colonnes : Nom, Prénom et Date de naissance.
Voir la version ci-jointe (si j'ai bien compris)

A ce propos, mon fichier original a beaucoup plus de colonnes, pourrais-tu m'indiquer précisement à quel endroit du VBA je peux ajuster ça ?
Compliqué de répondre.
Pour le tableau de gauche changer la ligne ci-dessous en remplaçant k par la dernière colonne du tableau de gauche
VB:
t1 = .Range("a1:k" & i) ' t1 => tableau de la plage des valeurs des données à gauche


Pour le tableau de droite changer les lignes ci-dessous en remplaçant n par la première colonne du tableau de droite
et p par la dernière colonne du tableau de droite ( normalement pour le tableau de droite, 3 colonnes sont suffisantes)
VB:
   i = .Cells(Rows.Count, "n").End(xlUp).Row    ' dernière ligne de la colonne N
   t2 = .Range("n1:p" & i) ' t2=> tableau de la plage des valeurs des données à droite


Autre question, est-ce que le fichier supporte le copier coller ?
Normalement OUI.


Et puis-je rajouter autant de ligne que je le souhaite ?
Normalement OUI.

nota: il faut bien sûr que les colonnes significatives restent aux même emplacements (ie colonne).
  • Pour le tableau de gauche : colonnes C, D et K
  • Pour le tableau de droite: on utilise les trois premières colonnes
 

Pièces jointes

  • monsieurmarcadet- recherche diff- a1.xlsm
    24.9 KB · Affichages: 4
Dernière édition:

Discussions similaires

Réponses
3
Affichages
207