Classement d'une liste avec doublons/rang sans doublons
18 réponses
LargoWinch
Bonjour,
je suis confronté a un bête problème, que je souhaite résoudre sans VBA
si possible.
Soit une matrice représentant (par exemple), une liste de composants
suivis de leurs prix, dans lesquels peuvent se trouver des doublons.
Ex :
C1 100
C2 80
C3 110
C4 100
Sur un autre onglet, je souhaite avoir la liste triée par prix de mes
composants (plus le prix), sachant que si je bouge un prix dans le 1er
onglet, cela bouge le classement du 2ieme.
Ex : ou (indiféremment)
C2 80 C2 80
C1 100 C4 100
C4 100 C1 100
C3 110 C3 110
J'ai beau essayer de jongler avec les RechercheV, les Equiv, les Rang,
pas moyen d'avoir une jolie liste triée lorsqu'il y a des doublons,
toutes ces fonctions ramenant la même valeur/rang en cas de doublon,
donc je me paie soit des doublons, soit des #NA.
Evidemment, dans la vraie vie, mes colonnes ne sont pas cote à cote...
Ma question peut en fait aussi se résumer à : comment attribuer un rang
unique aux éléments d'une liste contenant des doublons ?
Merci.
--
Largo
"C'est pas parce qu'il sont nombreux a avoir tort qu'il ont forcément
raison" - Coluche
Avec plages nommées ("Composants" - "Prix") et une BD bien organisée ! (en ligne 1 les noms de champs, pas de lignes vides..etc) Pour avoir les Prix triés : * SELECTION PREALABLE d'une plage d'un nombre de lignes équivalent à celui de la BD * =INDEX(Prix;EQUIV(Prix+LIGNE(Prix)/9^9;PETITE.VALEUR(Prix+LIGNE(Prix)/9^9;LIGNE(Prix)-1);0)) * Validation par Ctrl+maj+entrée
Pour avoir les Composants triés : * SELECTION PREALABLE d'une plage d'un nombre de lignes équivalent à celui de la BD * =INDEX(Composants;EQUIV(Prix+LIGNE(Prix)/9^9;PETITE.VALEUR(Prix+LIGNE(Prix)/9^9;LIGNE(Prix)-1);0)) * Validation par Ctrl+maj+entrée
Avec plages nommées ("Composants" - "Prix") et une BD bien organisée ! (en ligne
1 les noms de champs, pas de lignes vides..etc)
Pour avoir les Prix triés :
* SELECTION PREALABLE d'une plage d'un nombre de lignes équivalent à celui de la
BD
*
=INDEX(Prix;EQUIV(Prix+LIGNE(Prix)/9^9;PETITE.VALEUR(Prix+LIGNE(Prix)/9^9;LIGNE(Prix)-1);0))
* Validation par Ctrl+maj+entrée
Pour avoir les Composants triés :
* SELECTION PREALABLE d'une plage d'un nombre de lignes équivalent à celui de la
BD
*
=INDEX(Composants;EQUIV(Prix+LIGNE(Prix)/9^9;PETITE.VALEUR(Prix+LIGNE(Prix)/9^9;LIGNE(Prix)-1);0))
* Validation par Ctrl+maj+entrée
Avec plages nommées ("Composants" - "Prix") et une BD bien organisée ! (en ligne 1 les noms de champs, pas de lignes vides..etc) Pour avoir les Prix triés : * SELECTION PREALABLE d'une plage d'un nombre de lignes équivalent à celui de la BD * =INDEX(Prix;EQUIV(Prix+LIGNE(Prix)/9^9;PETITE.VALEUR(Prix+LIGNE(Prix)/9^9;LIGNE(Prix)-1);0)) * Validation par Ctrl+maj+entrée
Pour avoir les Composants triés : * SELECTION PREALABLE d'une plage d'un nombre de lignes équivalent à celui de la BD * =INDEX(Composants;EQUIV(Prix+LIGNE(Prix)/9^9;PETITE.VALEUR(Prix+LIGNE(Prix)/9^9;LIGNE(Prix)-1);0)) * Validation par Ctrl+maj+entrée
Bonjour Mr Vallon ça get gut? Votre paire de lunette 9^9 fonctionne à merveille comme je vois! o))
LargoWinch
AV a écrit :
Salut à tous
Avec plages nommées ("Composants" - "Prix") et une BD bien organisée ! (en ligne 1 les noms de champs, pas de lignes vides..etc) Pour avoir les Prix triés : * SELECTION PREALABLE d'une plage d'un nombre de lignes équivalent à celui de la BD * =INDEX(Prix;EQUIV(Prix+LIGNE(Prix)/9^9;PETITE.VALEUR(Prix+LIGNE(Prix)/9^9;LIGNE(Prix)-1);0)) * Validation par Ctrl+maj+entrée
Pour avoir les Composants triés : * SELECTION PREALABLE d'une plage d'un nombre de lignes équivalent à celui de la BD * =INDEX(Composants;EQUIV(Prix+LIGNE(Prix)/9^9;PETITE.VALEUR(Prix+LIGNE(Prix)/9^9;LIGNE(Prix)-1);0)) * Validation par Ctrl+maj+entrée
Il va falloir que je décortique tt ca pour voir comment ca marche.
AV a écrit :
Salut à tous
Avec plages nommées ("Composants" - "Prix") et une BD bien organisée ! (en ligne
1 les noms de champs, pas de lignes vides..etc)
Pour avoir les Prix triés :
* SELECTION PREALABLE d'une plage d'un nombre de lignes équivalent à celui de la
BD
*
=INDEX(Prix;EQUIV(Prix+LIGNE(Prix)/9^9;PETITE.VALEUR(Prix+LIGNE(Prix)/9^9;LIGNE(Prix)-1);0))
* Validation par Ctrl+maj+entrée
Pour avoir les Composants triés :
* SELECTION PREALABLE d'une plage d'un nombre de lignes équivalent à celui de la
BD
*
=INDEX(Composants;EQUIV(Prix+LIGNE(Prix)/9^9;PETITE.VALEUR(Prix+LIGNE(Prix)/9^9;LIGNE(Prix)-1);0))
* Validation par Ctrl+maj+entrée
Avec plages nommées ("Composants" - "Prix") et une BD bien organisée ! (en ligne 1 les noms de champs, pas de lignes vides..etc) Pour avoir les Prix triés : * SELECTION PREALABLE d'une plage d'un nombre de lignes équivalent à celui de la BD * =INDEX(Prix;EQUIV(Prix+LIGNE(Prix)/9^9;PETITE.VALEUR(Prix+LIGNE(Prix)/9^9;LIGNE(Prix)-1);0)) * Validation par Ctrl+maj+entrée
Pour avoir les Composants triés : * SELECTION PREALABLE d'une plage d'un nombre de lignes équivalent à celui de la BD * =INDEX(Composants;EQUIV(Prix+LIGNE(Prix)/9^9;PETITE.VALEUR(Prix+LIGNE(Prix)/9^9;LIGNE(Prix)-1);0)) * Validation par Ctrl+maj+entrée
Il va falloir que je décortique tt ca pour voir comment ca marche.
Modeste
Bonsour® LargoWinch avec ferveur ;o))) vous nous disiez :
je suis confronté a un bête problème, que je souhaite résoudre sans VBA si possible. Soit une matrice représentant (par exemple), une liste de composants suivis de leurs prix, dans lesquels peuvent se trouver des doublons.
Sur un autre onglet, je souhaite avoir la liste triée par prix de mes composants (plus le prix), sachant que si je bouge un prix dans le 1er onglet, cela bouge le classement du 2ieme.
Ma question peut en fait aussi se résumer à : comment attribuer un rang unique aux éléments d'une liste contenant des doublons ?
Indépendament d'un quelconque tri préalable une solution serait de dédoublonner les prix en faisant intervenir une valeur unique audela de la 3éme décimale afin de ne pas modifier l'affichage monétaire
c-a-d ajout de 2 colonnes(Plg_PrixD et Plg_Rang) prix dédoublonné = prix affiché-(fraction du N° de ligne) PrixD=Prix-(ligne()/100000) (sans impact sur l'affichage format monnaie)
chaque prix aura alors un rang unique ( le N° de ligne est unique) =Rang(PrixD;Plg_PrixD)
il suffit ensuite d'utiliser la combinaison INDEX/EQUIV pour obtenir le résultat voulu
;o))) sans validation matricielle !!! c'était ma contribution chirogourdiste au retour de AV
-- -- @+ ;o)))
Bonsour® LargoWinch avec ferveur ;o))) vous nous disiez :
je suis confronté a un bête problème, que je souhaite résoudre sans VBA si possible.
Soit une matrice représentant (par exemple), une liste de composants
suivis de leurs prix, dans lesquels peuvent se trouver des doublons.
Sur un autre onglet, je souhaite avoir la liste triée par prix de mes
composants (plus le prix), sachant que si je bouge un prix dans le 1er
onglet, cela bouge le classement du 2ieme.
Ma question peut en fait aussi se résumer à : comment attribuer un
rang unique aux éléments d'une liste contenant des doublons ?
Indépendament d'un quelconque tri préalable
une solution serait de dédoublonner les prix en faisant intervenir une valeur unique audela de la 3éme décimale afin de ne pas modifier l'affichage monétaire
c-a-d
ajout de 2 colonnes(Plg_PrixD et Plg_Rang)
prix dédoublonné = prix affiché-(fraction du N° de ligne)
PrixD=Prix-(ligne()/100000) (sans impact sur l'affichage format monnaie)
chaque prix aura alors un rang unique ( le N° de ligne est unique)
=Rang(PrixD;Plg_PrixD)
il suffit ensuite d'utiliser la combinaison INDEX/EQUIV pour obtenir le résultat voulu
Bonsour® LargoWinch avec ferveur ;o))) vous nous disiez :
je suis confronté a un bête problème, que je souhaite résoudre sans VBA si possible. Soit une matrice représentant (par exemple), une liste de composants suivis de leurs prix, dans lesquels peuvent se trouver des doublons.
Sur un autre onglet, je souhaite avoir la liste triée par prix de mes composants (plus le prix), sachant que si je bouge un prix dans le 1er onglet, cela bouge le classement du 2ieme.
Ma question peut en fait aussi se résumer à : comment attribuer un rang unique aux éléments d'une liste contenant des doublons ?
Indépendament d'un quelconque tri préalable une solution serait de dédoublonner les prix en faisant intervenir une valeur unique audela de la 3éme décimale afin de ne pas modifier l'affichage monétaire
c-a-d ajout de 2 colonnes(Plg_PrixD et Plg_Rang) prix dédoublonné = prix affiché-(fraction du N° de ligne) PrixD=Prix-(ligne()/100000) (sans impact sur l'affichage format monnaie)
chaque prix aura alors un rang unique ( le N° de ligne est unique) =Rang(PrixD;Plg_PrixD)
il suffit ensuite d'utiliser la combinaison INDEX/EQUIV pour obtenir le résultat voulu
;o))) sans validation matricielle !!! c'était ma contribution chirogourdiste au retour de AV
-- -- @+ ;o)))
LargoWinch
Modeste a écrit :
Bonsour® LargoWinch avec ferveur ;o))) vous nous disiez :
je suis confronté a un bête problème, que je souhaite résoudre sans VBA si possible. Soit une matrice représentant (par exemple), une liste de composants suivis de leurs prix, dans lesquels peuvent se trouver des doublons.
Sur un autre onglet, je souhaite avoir la liste triée par prix de mes composants (plus le prix), sachant que si je bouge un prix dans le 1er onglet, cela bouge le classement du 2ieme.
Ma question peut en fait aussi se résumer à : comment attribuer un rang unique aux éléments d'une liste contenant des doublons ?
Indépendament d'un quelconque tri préalable une solution serait de dédoublonner les prix en faisant intervenir une valeur unique audela de la 3éme décimale afin de ne pas modifier l'affichage monétaire
c-a-d ajout de 2 colonnes(Plg_PrixD et Plg_Rang) prix dédoublonné = prix affiché-(fraction du N° de ligne) PrixD=Prix-(ligne()/100000) (sans impact sur l'affichage format monnaie)
chaque prix aura alors un rang unique ( le N° de ligne est unique) =Rang(PrixD;Plg_PrixD)
il suffit ensuite d'utiliser la combinaison INDEX/EQUIV pour obtenir le résultat voulu
;o))) sans validation matricielle !!! c'était ma contribution chirogourdiste au retour de AV
Bien vu et sans doute plus simple à comprendre.
Merci
Modeste a écrit :
Bonsour® LargoWinch avec ferveur ;o))) vous nous disiez :
je suis confronté a un bête problème, que je souhaite résoudre sans VBA si possible.
Soit une matrice représentant (par exemple), une liste de composants
suivis de leurs prix, dans lesquels peuvent se trouver des doublons.
Sur un autre onglet, je souhaite avoir la liste triée par prix de mes
composants (plus le prix), sachant que si je bouge un prix dans le 1er
onglet, cela bouge le classement du 2ieme.
Ma question peut en fait aussi se résumer à : comment attribuer un
rang unique aux éléments d'une liste contenant des doublons ?
Indépendament d'un quelconque tri préalable
une solution serait de dédoublonner les prix en faisant intervenir une valeur unique audela de la 3éme décimale afin de ne pas modifier l'affichage monétaire
c-a-d
ajout de 2 colonnes(Plg_PrixD et Plg_Rang)
prix dédoublonné = prix affiché-(fraction du N° de ligne)
PrixD=Prix-(ligne()/100000) (sans impact sur l'affichage format monnaie)
chaque prix aura alors un rang unique ( le N° de ligne est unique)
=Rang(PrixD;Plg_PrixD)
il suffit ensuite d'utiliser la combinaison INDEX/EQUIV pour obtenir le résultat voulu
Bonsour® LargoWinch avec ferveur ;o))) vous nous disiez :
je suis confronté a un bête problème, que je souhaite résoudre sans VBA si possible. Soit une matrice représentant (par exemple), une liste de composants suivis de leurs prix, dans lesquels peuvent se trouver des doublons.
Sur un autre onglet, je souhaite avoir la liste triée par prix de mes composants (plus le prix), sachant que si je bouge un prix dans le 1er onglet, cela bouge le classement du 2ieme.
Ma question peut en fait aussi se résumer à : comment attribuer un rang unique aux éléments d'une liste contenant des doublons ?
Indépendament d'un quelconque tri préalable une solution serait de dédoublonner les prix en faisant intervenir une valeur unique audela de la 3éme décimale afin de ne pas modifier l'affichage monétaire
c-a-d ajout de 2 colonnes(Plg_PrixD et Plg_Rang) prix dédoublonné = prix affiché-(fraction du N° de ligne) PrixD=Prix-(ligne()/100000) (sans impact sur l'affichage format monnaie)
chaque prix aura alors un rang unique ( le N° de ligne est unique) =Rang(PrixD;Plg_PrixD)
il suffit ensuite d'utiliser la combinaison INDEX/EQUIV pour obtenir le résultat voulu
;o))) sans validation matricielle !!! c'était ma contribution chirogourdiste au retour de AV
Bien vu et sans doute plus simple à comprendre.
Merci
Modeste
Bonsour® LargoWinch avec ferveur ;o))) vous nous disiez :
Bien vu et sans doute plus simple à comprendre.
;o))) hormis les {1,2,3,4} qu'il faut adapter à chaque redimensionnement de la BD :-(( il s'agit intrinsequement de la meme méthode que celle proposée par AV
la validation matricielle permet de se passer des 2 colonnes intermédiaires. les deux colonnes intermediaires peuvent etre disposées ailleurs ou bien masquées
le petit plus ;o))) ( ce n'est pas évident d'améliorer une proposition de AV ) est dans le repositionnement possible des cibles en fonction des lignes d'entetes-cibles (plages nommées)
-- -- @+ ;o)))
Bonsour® LargoWinch avec ferveur ;o))) vous nous disiez :
Bien vu et sans doute plus simple à comprendre.
;o)))
hormis les {1,2,3,4} qu'il faut adapter à chaque redimensionnement de la BD :-((
il s'agit intrinsequement de la meme méthode que celle proposée par AV
la validation matricielle permet de se passer des 2 colonnes intermédiaires.
les deux colonnes intermediaires peuvent etre disposées ailleurs ou bien masquées
le petit plus ;o))) ( ce n'est pas évident d'améliorer une proposition de AV )
est dans le repositionnement possible des cibles en fonction des lignes d'entetes-cibles (plages nommées)
Bonsour® LargoWinch avec ferveur ;o))) vous nous disiez :
Bien vu et sans doute plus simple à comprendre.
;o))) hormis les {1,2,3,4} qu'il faut adapter à chaque redimensionnement de la BD :-(( il s'agit intrinsequement de la meme méthode que celle proposée par AV
la validation matricielle permet de se passer des 2 colonnes intermédiaires. les deux colonnes intermediaires peuvent etre disposées ailleurs ou bien masquées
le petit plus ;o))) ( ce n'est pas évident d'améliorer une proposition de AV ) est dans le repositionnement possible des cibles en fonction des lignes d'entetes-cibles (plages nommées)
-- -- @+ ;o)))
AV
>....;une solution serait de dédoublonner les prix en faisant intervenir une valeur unique audela de la 3éme décimale afin de ne pas modifier l'affichage monétaire...
Pffff.... Et ça fait quoi la partie de la formule : "...Prix+LIGNE(Prix)/9^9..." hein ? RePfff...
...ajout de 2 colonnes(Plg_PrixD et Plg_Rang)
Et en plus faut rajouter des colonnes ? Repffff :-) AV
>....;une solution serait de dédoublonner les prix en faisant intervenir une
valeur unique audela de la 3éme décimale afin de ne pas modifier l'affichage
monétaire...
Pffff....
Et ça fait quoi la partie de la formule : "...Prix+LIGNE(Prix)/9^9..." hein ?
RePfff...
...ajout de 2 colonnes(Plg_PrixD et Plg_Rang)
Et en plus faut rajouter des colonnes ?
Repffff
:-)
AV
>....;une solution serait de dédoublonner les prix en faisant intervenir une valeur unique audela de la 3éme décimale afin de ne pas modifier l'affichage monétaire...
Pffff.... Et ça fait quoi la partie de la formule : "...Prix+LIGNE(Prix)/9^9..." hein ? RePfff...
...ajout de 2 colonnes(Plg_PrixD et Plg_Rang)
Et en plus faut rajouter des colonnes ? Repffff :-) AV
AV
> Il va falloir que je décortique tt ca pour voir comment ca marche.
Si on se met tous à décortiquer les bagnoles... Pfff...
:-) AV
> Il va falloir que je décortique tt ca pour voir comment ca marche.
Si on se met tous à décortiquer les bagnoles...
Pfff...
Il va falloir que je décortique tt ca pour voir comment ca marche.
Si on se met tous à décortiquer les bagnoles... Pfff...
:-) AV
Mais si je veux comprendre pour pouvoir réutiliser sans faire appel au forum à chaque fois, il faut que je décortique. J'espère juste que je saurai remonter après ;)
AV a écrit :
Il va falloir que je décortique tt ca pour voir comment ca marche.
Si on se met tous à décortiquer les bagnoles...
Pfff...
:-)
AV
Mais si je veux comprendre pour pouvoir réutiliser sans faire appel au
forum à chaque fois, il faut que je décortique. J'espère juste que je
saurai remonter après ;)
Il va falloir que je décortique tt ca pour voir comment ca marche.
Si on se met tous à décortiquer les bagnoles... Pfff...
:-) AV
Mais si je veux comprendre pour pouvoir réutiliser sans faire appel au forum à chaque fois, il faut que je décortique. J'espère juste que je saurai remonter après ;)