Classement automatique de données sur Excel

Résolu
miche74 -  
tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche à effectuer un classement automatique de données dans un tableur Excel.
Exemple : j'ai 3 colonnes A-B-C, définies comme suit :
Colonne A = nom des données (nom1, nom2, nom3, etc.)
Colonne B = valeur arithmétique des données (en général comprises entre 1 et 50)
Colonne C = classement par rang des valeurs de B (ex.: 2, 4, 4, 1, 3, 2, etc.)(calculé avec la fonction RANG)
j'aimerais créer une 4e colonne (disons D) ou apparait le classement de la colonne C dont les lignes sont classées par ordre décroissant (1, 2, 3, etc..). Sachant que certains RANGS de la colonne C peuvent être identiques (ex. ci-dessus j'ai plusieurs rangs 2 et 4). Le résultat sera alors classé par ligne ainsi : 1, 2, 2, 3, 4, 4, etc.

Je précise que j'utilise bien Excel pour les fonctions courantes mais que je n'ai jamais effectué, ni utilisé de macros. En 1er lieu est-il possible de faire cette manipulation sans utiliser de macros ? ou si absolument nécessaire m'indiquer comment pratiquer.

Merci à vous d'avance



6 réponses

Ange420 Messages postés 423 Date d'inscription   Statut Membre Dernière intervention   235
 
Bonjour Miche74,
Il y a une chose simple à faire mais je ne sais pas si elle te conviendra.
En fait il suffit de copier la colonne C (je suis ton exemple) puis te positionner en colonne D et faire un collage spécial valeur.
Maintenant tu sélectionnes uniquement ta colonne D tu fais trier, continuer avec la sélection en cours pour ne pas trier toutes les colonnes mais seulement la D, et en ordre croissant.
Par contre ceci t'oblige à faire un copier coller en tant que valeurs dès que ton tableau grandit.
A toi de voir si c'est très contraignant où si cela te convient.
Tiens nous au courant.
Cordialement
2
miche74 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Ange420,
Oui sur le principe c'est cela mais je veux que le calcul se fasse automatiquement sans intervenir manuellement. En fait mon tableau représente le résultat à un questionnaire et la personne qui fait le questionnaire ne doit pas avoir de manips à faire dans excel, le résultat du classement doit s'afficher instantanément.
Par exemple :
on a Colonne A, écrit par ligne :
Cellule A1 : réponse1
Cellule A2 : réponse2
Cellule A3 : réponse3
Cellule A4 : Réponse4
Cellule A5 : Réponse5
Cellule A6 : réponse6

On aura Colonne B le Nbre de points obtenus par réponse , soit par ex. :
Cellule B1 : 2
Cellule B2 : 1
Cellule B3 : 1
Cellule B4 : 2
Cellule B5 : 4
Cellule B6 : 5

Colonne C (le rang de chaque réponse)
Cellule C1 : 3
Cellule C2 : 5
Cellule C3 : 5
Cellule C4 : 3
Cellule C5 : 2
Cellule B6 : 1

En colonne D le résulta devra s'afficher comme suit (lié avec la colonne A):
Cellule A6 : réponse6 - Cellule D6 : 1
Cellule A5 : réponse5 - Cellule D5 : 2
Cellule A1 : réponse1 - Cellule D1 : 3
Cellule A4 : réponse4 - Cellule D4 : 3 (ou 4 peu importe)
Cellule A2 : réponse2 - Cellule D2 : 5
Cellule A3 : réponse3 - Cellule D3 : 5 (ou 6 peu importe)

Eventuellement si on arrive à automatiser le classement à partir des points obtenus en colonne B, sans passer par le calcul du rang en colonne C, on peut arriver plus vite au résultat (j'ai essayé le calcul du rang en pensant qu'il serait plus facile d'arriver au but).

Si vous voyez comment faire (je le répète je ne sais pas utiliser les macros mais peut-être qu'une simple macro toute faite et facile à utiliser existe déjà ?),

Merci de votre aide
0
Ange420 Messages postés 423 Date d'inscription   Statut Membre Dernière intervention   235
 
Je ne fais pas de VB mais il y aura certainement une bonne âme qui va venir à ton secours.
Patience !
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonsoir,

Personnellement je n'ai pas compris ce que tu voulais.
Si sur le principe ce qu'à proposé ange est bon, et qu'en plus :
Cellule A6 : réponse6 - Cellule D6 : 1
Cellule A5 : réponse5 - Cellule D5 : 2
Cellule A1 : réponse1 - Cellule D1 : 3
Cellule A4 : réponse4 - Cellule D4 : 3 (ou 4 peu importe)
Cellule A2 : réponse2 - Cellule D2 : 5
Cellule A3 : réponse3 - Cellule D3 : 5 (ou 6 peu importe)

en D tu te retrouves avec, dans l'ordre les nombres de 1 à 6, soit le n° de la ligne (???)
Si tu pouvais déposer un fichier exemple sur cijoint.fr et coller le lien ici pour éclaircir...

eric
0
miche74 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Eric,

Merci pour ta réponse.
Afin de préciser ce que je veux faire, voici le fichier exemple que j'ai posté sur cijoint.fr avec le lien suivant. Je pense qu'ainsi ça sera plus clair.

http://www.cijoint.fr/cjlink.php?file=cj201102/cijI1Cwp08.xls


Merci d'avance
0
tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   1 062
 
Bonjour à tous,
On peut commencer par une solution simple avec une colonne auxiliaire qui contient le nombre de points modifiés d'une "poussière" pour éviter les doublons.
On traite ensuite la classement avec Index, Equiv, Grande.Valeur.
https://www.cjoint.com/?0ceoIYhNGlN
0
miche74 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Merci tontong pour ta réponse,
Je vais regarder ta solution plus en détail mais à 1ère vue cela semble marcher !

PS : je comprend dans les grandes lignes ce que tu as essayé de faire mais je ne comprends pas toute la formule avec Index, Equiv, Grande.Valeur que tu utilises, peux-tu me donners qlq infos complémentaires ? (c'est juste par curiosité intellectuelle et si je devais l'utiliser pour une autre application)
J'imagine qu'"Index" = se réfère à la plage de données à analyser, "Equiv.Grande.Valeur"=remplace les nombres entiers par les grandes valeurs calculées précédemment, afin de différentier ceux qui sont identiques? Mais pour la fin de la formule, je ne capte pas bien la structure.

En tous merci beaucoup à toi, je vais faire quelques scénarios pour vérifier si ça marche à tous les coups mais à priori ça devrait être le cas !
0
tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   1 062
 
Bonjour,
INDEX(tableau;no_ligne;no_col) renvoie la valeur située à l'intersection ligne_colonne.
Comme n°_ligne on prend EQUIV(GRANDE.VALEUR($F$6:$F$11;G19);$F$6:$F$11;0) c'est-à-dire la ligne où est la Xième plus grande valeur du champ F6:F11.
Les valeurs de X sont en G19:G24.
Ceci est une description globale et sommaire, l'aide Excel fournit plus de détails sur chaque fonction.
0
miche74 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Vérifications faites, ça marche EXTRA !
Merci à tous les interlocuteurs qui m'ont répondu
0

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

Posez votre question
sniipe
 
Bonjour à tous,

J'ai un problème très similaire, que j'ai presque réussi à résoudre grâce à ce sujet, mais j'ai besoin de votre aide pour le dernier petit morceau!

J'ai, de B11 à G11, des valeurs comprises entre 0 et 5.
Je veux avoir, de B12 à G12, le nom de la cellule selon l'ordre décroissant

Ex. :
Les valeurs de B11 à G11 sont 5, 4, 2, 0, 1, 3
B12 à G12 sera donc : B11, C11, G11, D11, F11, E11

Ca, j'y arrive, que ce soit avec un simple Rang() un peu amélioré, ou avec un Index(EQUIV(GRANDE.VALEUR())) comme ci-dessus.

Mon problème concerne les égalités. Si j'ai deux (ou plus) valeurs égales, je dois alors comparer la valeur en B10:G10 et les départager selon la décroissance à cette ligne 10.

Ex. :
B10 à G10 : 0, 0, 5, 3, 2, 4
B11 à G11 : 1, 2, 5, 3, 0, 5
B12 à G12 : D11, G11, E11, C11, B11, F11

Est-ce que là, quelqu'un a une idée?
NB : en cas de deuxième égalité, peu importe l'ordre final.
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

1) démarre ta propre question, plus de personnes la liront.
2) joint un fichier de travail (cjoint.com et coller le lien fourni)
eric
0
tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   1 062
 
Bonjour,
Je ne comprends pas "les départager selon la décroissance à cette ligne 10".
Comme B10 = C10 =0 je ne vois pas comment on pourrait départager des doublons situés en B11 et C11.

Le principe est le suivant:
On crée une ligne auxiliaire, la 15 par exemple, avec B15=B11-COLONNE(B11)/10000 recopié jusqu'en G15.
Puis on fait un Index(EQUIV(GRANDE.VALEUR())) par rapport à cette ligne 15.
Pour utiliser la ligne 10 on pourrait avoir B15=B11-B10/10000 ou B15=B11+B10/10000 mais il ne faut pas avoir de doublon sur la ligne 10.
eriiic a raison: si je n'avais pas connu le sujet d'origine je n'aurais pas pu répondre.
0