Comparaison de listes

pingouinal

XLDnaute Occasionnel
Bonjour tout le monde,

J'ai un petit problème de formule dans Excel.
Je souhaite comparer deux listes et attribuer une valeur selon certaines conditions.
Je m'explique : j'ai en colonne A 4 noms et la même chose en colonne B.
Si les 4 noms de la colonne A correspondent aux 4 noms de la colonne B mais dans le désordre, je veux attribuer la valeur 1 à la colonne C.
Dans les noms il peut y avoir des doublons, mais pour que la colonne C ait la valeur 1, il faut absolument que les noms de A correspondent à ceux de B et qu'ils ne soient pas dans un ordre parfait (si un ou plusieurs nom est dans le bon ordre, C=1, mais si tous sont dans le bon ordre, C=0).

J'ai réussi à faire celà en énumérant dans une formule SI tous les cas possibles (d'après moi, mais j'en ai sûrement oublié), mais j'arrive à une formule de 968 caractères (un peu moins dans mon exemple mais comme mon fichier final fait plusieurs centaines de lignes, la formule s'allonge) et j'aurai besoin par la suite d'ajouter des choses à cette formule. Je cherche donc à trouver une formule (beaucoup) plus courte qu'un simple SI couplé à des ET et OU, mais j'avoue que je sèche.

Comme je pense ne pas être clair :D, je vous joins un fichier d'exemple.

D'avance merci à tous ceux qui pourront m'aider.

PS: j'aimerais si possible passer par formule et non par macro, et toujours si possible ne pas ajouter de colonnes intermédiaires pour les formules. ^_^'
 

Pièces jointes

  • Exemple.xls
    19.5 KB · Affichages: 126
  • Exemple.xls
    19.5 KB · Affichages: 131
  • Exemple.xls
    19.5 KB · Affichages: 127

CISCO

XLDnaute Barbatruc
Re : Comparaison de listes

Rebonsoir

Je vais modifier la formule pour tenir compte du pb soulevé par le dernier exemple.

Pour ce qui est des noms imbriqués les uns dans les autres, je te ferai un autre fichier comportant une formule évitant ce problème. Ce n'est pas trop dur à mettre en oeuvre. Par contre cela rallongera certainement le temps de calcul. De combien, je ne sais exactement. Il faudra faire un essai.

Petite remarque au passage. Le fait de nommer certaines parties de la formule fait diminuer le temps de calcul. Au besoin, on peut en nommer d'autres, incluses au besoin les unes dans les autres. Cela fera encore gagner du temps de calcul.

Vu l'heure, j'essayerai de te faire tout cela demain... Peut être... Faut bien que je bosse aussi un peu pour moi ;)

@ plus
 

pingouinal

XLDnaute Occasionnel
Re : Comparaison de listes

Vu l'heure, j'essayerai de te faire tout cela demain... Peut être... Faut bien que je bosse aussi un peu pour moi ;)

@ plus


Pas de problème.
Mon fichier peut bien attendre quelques jours, rassure-toi. Je te remercie déjà beaucoup pour ton aide, j'ai grandement avancé grâce à toi et j'ai bon espoir que le prochain fichier sera le bon.

Très bonne remarque pour le fait de nommer des plages qui accélère les calculs. Je vais essayer de travailler un peu dans cette voie mais c'est encore très flou pour moi vu que j'ai appris seulement ce soir qu'on peut y inclure une formule et des SI.

Bonne soirée.
 

CISCO

XLDnaute Barbatruc
Re : Comparaison de listes

Bonsoir

Un premier fichier (bis bis) prenant en compte le problème constaté précédemment, et un second (ter) éliminant le problème des noms imbriqués les uns dans les autres (on ne recherche plus tel ou tel nom, par ex France, mais #France# dans la liste des noms. Ainsi, on ne peut pas trouver #Russie# dans #Bièlorussie#).

Il faut vérifier les résultats donnés par ces deux fichiers, car, même si maintenant c'est assez simple dans le principe, dans la pratique, il y a tellement de petites modifications à faire que j'y perd un peu mon latin...

Pour ce qui est de nommer certaines parties des formules, on verra un peu plus tard lorsque tu sera sûr que ces formules donnent les bons résultats.

@ plus
 

Pièces jointes

  • Exemple(1) 4 unseulnom bis bis.xls
    27 KB · Affichages: 53
  • Exemple(1) 4 unseulnom ter.xls
    28.5 KB · Affichages: 53

pingouinal

XLDnaute Occasionnel
Re : Comparaison de listes

Bonsoir CISCO,

Merci beaucoup pour ces deux fichiers.
Je viens de regarder le ter et effectivement le problème de nom de pays a l'air bien réglé.
Je vais donc m'atteler à une nouvelle phase de test pour voir si tous les cas sont bien inclus dans cette nouvelle formule.
Et si cela marche, je vais aussi essayé de renommer certaines parties pour réduire la formule et accélerer les calculs.

Je reviendrai faire un retour sur l'avancement des tests et des éventuels problèmes rencontrés.

Encore merci pour ton aide et bonne soirée.
 

pingouinal

XLDnaute Occasionnel
Re : Comparaison de listes

Bonjour CISCO,

Après différents tests, la formule a l'air de très bien fonctionner.
J'ai donc essayé de la copier à l'endroit où j'en ai besoin dans mon fichier final (le podium pronostiqué est en colonne D, le réel en colonne F et les points en colonne G), mais j'ai un problème pour modifier la partie appelée "sans identique".
Lorsque je vais voir ce qu'elle représente, j'ai la ligne suivante :

Code:
="#"&IF(Sheet1!C$4<>Sheet1!$I$4;Sheet1!$I$4&"#";"")&IF(Sheet1!C$5<>Sheet1!$I$5;Sheet1!$I$5&"#";"")&IF(AND(Sheet1!C$6<>Sheet1!$I$6;IF(Sheet1!C$7<>Sheet1!$I$7;Sheet1!C$7<>Sheet1!$I$6;TRUE));Sheet1!$I$6&"#";"");Sheet1!C$7<>Sheet1!$I$7

Je l'ai donc recopiée dans un autre nom (que j'ai utilisé dans ma formule en colonne H) en modifiant les cellules pour tomber sur ma nouvelle plage de donnée, mais la formule n'a plus l'air de marcher.
Dans l'exemple attaché, la formule devrait donner 8 (comme dans la cellule C8), mais elle donne 6.
Y a-t-il selon toi un problème avec la partie que j'ai renommée ou dois-je chercher ailleurs?

Par ailleurs, j'ai noté que la formule du podium à 3 n'était plus matricielle, mais semblait toujours donner le bon résultat. Etait-ce intentionnel d'enlever la partie matricielle (j'imagine que oui suite à l'apparition des #)? Si oui, je vais essayer de nommer certaines parties de la formule pour l'alléger et donc rendre les calculs un peu plus rapides.

D'avance merci pour ta réponse.
 

Pièces jointes

  • Exemple2.xls
    32.5 KB · Affichages: 55
  • Exemple2.xls
    32.5 KB · Affichages: 61
  • Exemple2.xls
    32.5 KB · Affichages: 60

CISCO

XLDnaute Barbatruc
Re : Comparaison de listes

Bonsoir

Exactement comme dans les formules écrites directement dans les cellules, dans les définitions de noms, il faut faire très attention aux $ utilisées pour rendre les références absolues ou relatives. Ainsi, sansidentique utilise systématiquement les 4 cellules au dessus de la cellule en cours, comme pronostic, et la plage I4:I7, comme résultats réels. Même si tu à cliqué sur W999.

Dans la pièce jointe, j'ai modifié la définition de nonidentique : tu avais oublié de recopier et/ou de transformer un ou deux termes tout à la fin. Le reste était bon, mais si la formule n'est pas complète, cela ne fonctionne pas:rolleyes:

Au passage, j'ai supprimé certains noms inutiles (sansidentiqueor, sansidentiqueargent...).

Pour ce qui est de ta deuxième remarque, il ni y a plus de calcul matriciel sur cette feuille depuis que j'ai remplacé la partie SI(ESTNUM(SOMME(EQUIV(C4:C7;E4:E7;0);EQUIV(E4:E7;C4:C7;0)));1;0), qui ne donnait pas toujours le bon résultat, par SI(SUBSTITUE(SUBSTITUE(....="#" qui permet de voir si tous les noms de la plage pronostic se trouvent dans la plage résultats réels, sans tenir compte de l'ordre, et réciproquement.

@ plus
 

Pièces jointes

  • Exemple2(2).xls
    29.5 KB · Affichages: 64

pingouinal

XLDnaute Occasionnel
Re : Comparaison de listes

Encore une fois merci pour ton aide CISCO.
Je vais transférer cela sur mon fichier source et par la même occasion essayer de la simplifier en nommant certaines parties (j'ai plusieurs centaines de podiums dans le fichier source :D).

J'espère que pour cette partie je saurais me débrouiller seul. ^_^'
 

Discussions similaires

Statistiques des forums

Discussions
312 755
Messages
2 091 725
Membres
105 058
dernier inscrit
axcelle