Classement automatique de données sur Excel
Résolu
miche74
-
tontong Messages postés 2572 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Classement dynamique excel
- Tableau croisé dynamique excel exemple - Guide
- Liste déroulante excel - Guide
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
6 réponses
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
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
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
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
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
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
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 !
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 !
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
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.
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.
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
Patience !
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