Comparaison de colonnes

vdh_xavier

XLDnaute Junior
Bonjour à tous,

J'ai un problème lorsque j'essaye de comparer des colonnes dans excel.

Je vous envoie exemple, je pense que c'est le plus clair.

Colonne A Colonne B Colonne C Colonne D

Terminé Nom Prénom Terminé
Delarue Paul José
Delaxhe Jean Dossin
X Dupont José Delax
X Dossin Michael

En fait, je voudrais avoir un "X" dans la colonne A pour les personnes encodées en colonne D.
José et Dossin sont encodés en D et j'ai donc un "X" à gauche de leur nom.

La formule en colonne A (cellule A2) est =SI(NB.SI($D$2:$D$4;B2);"X";SI(NB.SI($D$2:$D$4;C2);"X";"")).

J'aimerais bien que Delax, qui est encodé en D mais à qui il manque 2 lettres, soit aussi considéré comme étant terminé et donc qu'il y ait un "X" à gauche de son nom.

Je n'arrive pas à dire à excel de regarder si une partie seule correspond (Delax < Delaxhe).

Je vous remercie d'avance pour votre aide.

Xavier
 

vdh_xavier

XLDnaute Junior
Re : Comparaison de colonnes

Je me rends compte que ça donne mal ici. Je vous envoie donc mon fichier pour plus de clarté.

De plus, j'ai oublié de préciser que je voudrais une comparaison complète de la colonne D par rapport aux colonnes B et C. Si une partie de D correspond à une partie de B ou C, alors "X". Je suppose qu'il faut définir un nombre de caractères, par exemple si 4 caractères correspondent alors mettre un "X".

Merci

Xavier
 

Pièces jointes

  • Test.xlsx
    10.2 KB · Affichages: 39
  • Test.xlsx
    10.2 KB · Affichages: 41
  • Test.xlsx
    10.2 KB · Affichages: 39

job75

XLDnaute Barbatruc
Re : Comparaison de colonnes

Bonjour Xavier,

Il faut en effet paramétrer le nombre de caractères que l'on cherche.

Et plutôt qu'une formule matricielle compliquée, mieux vaut une fonction VBA simple :

Code:
Function CHERCH$(txt1$, txt2$, plage As Range, n As Byte)
Dim i%, t$
For i = 1 To Len(txt1) - n + 1
  t = "*" & Mid(txt1, i, n) & "*"
  If Application.CountIf(plage, t) Then CHERCH = "X": Exit Function
Next
For i = 1 To Len(txt2) - n + 1
  t = "*" & Mid(txt2, i, n) & "*"
  If Application.CountIf(plage, t) Then CHERCH = "X": Exit Function
Next
End Function
Formule en A2 :

Code:
=CHERCH(B2;C2;D$2:D$4;H$1)
Fichier joint.

A+
 

Pièces jointes

  • Test(1).xls
    47.5 KB · Affichages: 77
  • Test(1).xls
    47.5 KB · Affichages: 72
  • Test(1).xls
    47.5 KB · Affichages: 77

job75

XLDnaute Barbatruc
Re : Comparaison de colonnes

Bonjour Xavier, le forum,

Voici quand même une solution par formule :

Code:
=REPT("X";SIGNE(SOMMEPROD(NB.SI(D$2:D$4;"*"&STXT(B2;LIGNE(INDIRECT("1:"&NBCAR(B2)-H$1+1));H$1)&"*"))+SOMMEPROD(NB.SI(D$2:D$4;"*"&STXT(C2;LIGNE(INDIRECT("1:"&NBCAR(C2)-H$1+1));H$1)&"*"))))
Fichier (2).

A+
 

Pièces jointes

  • Test(2).xls
    36 KB · Affichages: 34
  • Test(2).xls
    36 KB · Affichages: 40
  • Test(2).xls
    36 KB · Affichages: 33

job75

XLDnaute Barbatruc
Re : Comparaison de colonnes

Re,

Une autre formule, plus simple :

Code:
=REPT("X";SIGNE(SOMMEPROD(NB.SI(D$2:D$4;"*"&STXT(B2:C2&REPT("µ";99);LIGNE(INDIRECT("1:99"));H$1)&"*"))))
La durée d'exécution sera cependant plus longue.

Fichier (3).

A+
 

Pièces jointes

  • Test(3).xls
    36 KB · Affichages: 35
  • Test(3).xls
    36 KB · Affichages: 37
  • Test(3).xls
    36 KB · Affichages: 33

Statistiques des forums

Discussions
312 239
Messages
2 086 508
Membres
103 236
dernier inscrit
Menni