Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Classement d'une liste avec doublons/rang sans doublons

18 réponses
Avatar
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

10 réponses

1 2
Avatar
AV
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

http://www.cijoint.fr/cjlink.php?file=cj200811/cijoLd49iu.xls

Ave à tous
AV
Avatar
Fredo P.
Bonjour Mr Vallon
ça get gut?
Votre paire de lunette 9^9 fonctionne à merveille comme je vois!
o))
Avatar
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

http://www.cijoint.fr/cjlink.php?file=cj200811/cijoLd49iu.xls

Ave à tous
AV




Merci.

Il va falloir que je décortique tt ca pour voir comment ca marche.
Avatar
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

http://www.cijoint.fr/cjlink.php?file=cj200811/cijF1e0yK8.xls

;o)))
sans validation matricielle !!!
c'était ma contribution chirogourdiste au retour de AV


--
--
@+
;o)))
Avatar
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

http://www.cijoint.fr/cjlink.php?file=cj200811/cijF1e0yK8.xls

;o)))
sans validation matricielle !!!
c'était ma contribution chirogourdiste au retour de AV




Bien vu et sans doute plus simple à comprendre.

Merci
Avatar
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)))
Avatar
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
Avatar
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
Avatar
AV
> Bonjour Mr Vallon
ça get gut?



Sehr gut !
Danke

AV
Avatar
LargoWinch
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 ;)
1 2