Casse tête Chinois Excel

Fermé
nicoatlante - 9 nov. 2010 à 10:56
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 9 nov. 2010 à 19:53
Bonjour,

Voici mon problème :

Dans le fichier à l'adresse suivante
http://www.cijoint.fr/cjlink.php?file=cj201011/cijsrUCy2D.xls

, figure en colonne A les références de mes produits.
En première ligne, figurent le noms des fournisseurs ayant chiffré le coût pour ses références.
Et en jaune, figure le rang de chaque fournisseur en fonction du prix donné.

Ma problématique est la suivante :

Je cherche à établir dans le tableau ci-dessous un top 5 des meilleurs propositions des fournisseurs en mettant à chaque fois le nom du fournisseur en fonction du rang qu'il a pour chaque référence, car j'ai une 40aine de fournisseurs et plus de 100 différentes références.

Quelqu'un a-t-il la solution ?

Merci d'avance,

A voir également:

7 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 9/11/2010 à 15:32
Rebonjour
avant de parler de VBA qui semble bien compliqué pour ce cas,ou d'une adresse Mail, ci joint un modéle de ce que je vous proposais au début de la discussion, et qui vous à probablement échappé
(INDEX($B$1:$H$1;1;EQUIV(COLONNE()-1;$B2:$H2;0))
Crdlmnt
Ça peut être intéressant Anonymous, mais le fichier est où?

Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
3
pardon :
http://www.cijoint.fr/cjlink.php?file=cj201011/ciju7zKXlo.xls

c'est une autre technique que tu as utilisée. Le VBA est pour moi plus facile.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 9/11/2010 à 12:55
Bonjour
conforme à votre tableau placez en A28 à tirez sur tout le tableau:
=INDEX($B$1:$H$1;1;EQUIV(COLONNE()-1;$B2:$H2;0))
à condition que votre tableau reste bien à, la même place, sinon, ajustez COLONNE()-1 pour que la valeur en A28 soit égale à 1 (soit N° de colonne dans la feuille-X=1)
crdlmnt

Ps
vous aurez les mêmes parasites d'affichage , soit #NA lorsque le rang n'est pas affiché dans le tableau 1
vous pouvez éliminer le défaut avec:
=SI(ESTERREUR(INDEX($B$1:$H$1;1;EQUIV(COLONNE()-1;$B2:$H2;0)) ;"";INDEX($B$1:$H$1;1;EQUIV(COLONNE()-1;$B2:$H2;0)))

Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
J'ai créé le programme VBA qui va bien. Donne moi ton adresse mail que je t'envoie tout ca et que je t'explique
0
Bonjour,

Merci pour la réponse.
C'est pour le boulot et je n'ai pas accès à Hotmail depuis mon poste.
Peux-tu tout m'expliquer via le forum ou me donner ta réponse en chargeant le fichier qui va bien sur http://www.cijoint.fr/

Merci d'avance,

Cdt,
0
J'ai déposé le fichier avec le meme nom. J'ai inséré 2 boutons sur la feuille qui font appel a 2 programme VBA. Tu peux y accéder via l'onglet développeur. J'ai commenter le programme pour que tu puisses comprendre un peu ce que j'ai fait. voila. si tu as un soucis n'hésite pas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 nov. 2010 à 16:39
Bonjour,

Excusez l'incruste

La solution proposée par Vaucluse est indiscutablement la plus adaptée au problème.Il est inutile d'utiliser VBA surtout avec le code présenté ...

0
Bonsoir,

Merci Vaucluse pour ta réponse.
Ca me simplifie la vie, tu imagines pas.

Par contre, je n'ai jamais utilisé ce genre de formules.
Ca te dérangerait de m'expliquer le tout.

Merci encore en tout cas.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
9 nov. 2010 à 19:53
Bonsoir explications,( du moins j'espère)

=INDEX($B$1:$H$1;1;EQUIV(COLONNE()-1;$B2:$H2;0))

=INDEX(CHAMP;LIGNE;COLONNE)
ressort la valeur du champ dans la cellule dont la ligne est indiquée par le nombre LIGNE et la colonne par le nombre COLONNE

par exemple:
INDEX(A2:Z100;10;5) va ressortir la valeur dans la 10° ligne du champ et dans la cinquième colonne

EQUIV(VALEUR;champ ligne ou colonne;0)
ressort la position (N°) de ligne ou colonne) de la valeur cherchée dans le champ ligne ou colonne (une seule ligne ou colonne)
Nota: toutes ces références lignes et colonnes sont à considérer dans le champ, pas dans la feuille
(ex: la première colonne d'un champ X2:Z1000 est la colonne X)

La formule complète demande donc:
_De chercher dans le champ B1:H1 > INDEX($B$1:$H$1
_sur la première ligne ;1;

_et dans la colonne dont le rang est défini par:
EQUIV(COLONNE()-1;
dans le champ $B2:$H2;
le 0 est un code excel qui exige une valeur exacte et non une valeur proche.


car la valeur cherchée étant le rang 1dans la première colonne du tableau 2 dans la 2° etc
COLONNE() renvoi le N° de colonne (de la feuille cette fois) _colonne A =1 colonne B=2 etc...
ce qui permet donc de faire 1 avec COLONNE()-1 en B et ensuite d'incrémenter automatiquement en 2,3 4
La condition dans la formule complète évite l'affichage #NA lorsque les données cherchées b$^ne sont pas trouvé, la formule étant la même dans les deux items.

Lorsque la formule est tirée vers la gauche, les champs ne bougent pas, mais la valeur colonne()-1 s'incrémente de 1 à chaque pas
Lorsqu'elle est tirée vers le bas, la valeur COLONNE()-1 ne change pas, le champ B1:H1 non plus,seuls les N° de ligne du champ B2:H2 sont incrémenté pour correspondre à, la liste du 1° tableau.

Un peu long, j'espère avoir été clair mais je n'en suis vraiment pas sur!:-(

Pour éclaircir et comprendre, vous pouvez tester les items un par un dans un exemple:
=INDEX(Champ;ligne;colonne)
=EQUIV(Valeur;champ;0)
=COLONNE()
bonne soirée
Crdlmnt
0
Bonsoir Anonymous,

Merci pour ta réponse sous VBA.
J'ai regardé la macro, mais j'avoue ne rien comprendre.

Si j'ai bien compris, tu as créé une condition pour chaque fournisseur.
Mon problème est que j'ai plus de 40 fournisseurs en vrai.

Merci .
0