Macro Excel sélection plus grands chiffres

Fermé
Holidays48 Messages postés 1 Date d'inscription jeudi 13 décembre 2007 Statut Membre Dernière intervention 13 décembre 2007 - 13 déc. 2007 à 11:09
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 18 sept. 2010 à 11:39
Bonjour,

Je cherche à mettre au point une macro sous excel qui me permette de faire la chose suivante. Je veux dire à Excel:
Parmi ces cellules, trouve les x plus grands nombres, copie les cellules, et colle les à tel emplacement sur cette autre feuille. Puis tu reviens sur la feuille initiale, tu copies une des cellules de la même ligne que les x plus grands nombres, et tu les colles à gauche de ces cellules copiées dans la feuille de destination (vous suivez toujours?).
Et même chose avec les quatre plus petits.
Je suis débutante dans ce domaine, et je n'ai pas trouvé de réponse sur internet. J'espère que quelqu'un pourra m'aider.
Merci
A voir également:

9 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
13 déc. 2007 à 22:11
Bonsoir,

Tu veux absolument faire une macro ?
Par formule tu peux faire ainsi:
dans 4 cellules en J par exemple tu saisis
J1: =GRANDE.VALEUR($A$1:$A$8;1)
J2: =GRANDE.VALEUR($A$1:$A$8;2)
J3: =GRANDE.VALEUR($A$1:$A$8;3)
J4: =GRANDE.VALEUR($A$1:$A$8;4)
Voilà tes 4 plus grandes valeurs.

A droite tu ecris:
K1: =EQUIV(J1;$A$1:$A$8;0)
K2: =EQUIV(J2;$A$1:$A$8;0)
K3: =EQUIV(J3;$A$1:$A$8;0)
K4: =EQUIV(J4;$A$1:$A$8;0)
Là tu connais leur position (ligne) dans la plage

Et avec index() tu peux recupérer la valeur qui t'interesse dans une autre colonne
L1: =INDEX($A$1:$D$8;K1;3) te retourne la valeur de la 3eme colonne C sur la même ligne que ta 1ère grande valeur.

Pour gagner de la place tu peux ecrire les 2 formules colonne K et L en une seule:
K1: =INDEX($A$1:$D$8;EQUIV(J1;$A$1:$A$8;0);3)


eric
10
Bonsoir
C'est avec grand intérêt que j'ai trouvé une partie d'une de mes préoccupations du moment. J'ai bien saisi les formules avec EQUIV, GRANDE.VALEUR et avec INDEX , j’ai par contre rencontré un problème, quand 2 valeurs sont identiques INDEX ou EQUIV marque la même valeur, en l’occurrence, la première rencontrée dans les cellules.
Peux tu m’expliquer comment remédier à ce problème. Merci d’avance
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212 > polo
11 mars 2008 à 21:05
Bonsoir,

peut--être que ton pb n'est pas exactement le même.
Là le but était de récupérer les 4 + grandes valeurs, les doublons ne genaient pas, qu'un 5 vienne de la 12 ou 15 ligne ça reste toujours un 5
Le mieux est de démarrer une nouvelle discussion en exposant bien ton pb.
eric
0
polo234 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
12 mars 2008 à 20:44
Merci pour ta réponse . Je poserai mon problème dans un autre forum
0
Nioubie > polo234
29 déc. 2008 à 19:15
Bonjour,

J'ai le même problème que vous concernant les doublons,

auriez-vous trouvé la solution ?
cela fait plusieurs heures que je cherche sans succés...

Merci d'avance pour votre aide
0
Ce sujet m'intéresse fortement donc je relance pour une petit explication:

Je moccupe d'un classement de foot dans une division.
Je veu sortire de la La meilleur attaque et défence du championnats.
Donc la formule : J1: =GRANDE.VALEUR($A$1:$A$8;1)
C'est parfait pour sortir le nombre le plus grand, mais je voudrai sortir a coté le nom de l'équipe automatiquement.

Exemple :

Meilleur attaque : Montpellier : 25

Merci
4
Oui, dans les grandes lignes, tu as bien compris.
Aujourd'hui, manuellement, je regarde mes chiffres un par un, et je copie les 4 plus grands, que je colle sur une autre feuille du classeur. Puis je reviens sur la première feuille, et je copie le libellé correspondant, que je colle sur l'autre feuille à côté des chiffres. Ensuite je refais la même chose avec les 4 plus petits.
Mais j'ai trouvé cet après midi une astuce pour faire une macro avec les fonctions que je connais. Donc j'ai fait une macro pour sélectionner les cellules qui contiennent les chiffres que je veux analyser (ils sont dans la même colonne, mais je dois exclure des sous-totaux), puis elle les colle à un autre endroit dans la feuille. Idem avec les libellés correspondant. Ensuite elle fait un tri croissant sur cette nouvelle colonne, sélectionne et copie les 4 premiers, les colle sur une autre feuille du classeur, revient sur la première feuille, et fait la même chose avec les libellés. Idem pour les 4 derniers. Ca marche comme ça parce que pour l'instant, il y a toujours le même nombre de chiffres à analyser, donc les 4 derniers sont toujours dans les mêmes cellules dans la colonne triée. Mais ça peut changer, donc il me faudrait vraiment une macro qui dise : parmi ces chiffres, trouve les 4 plus grands (et les 4 plus petits), copie les, et colle les sur une autre feuille.

En espérant avoir été plus claire...

Merci
1
nicodoudou Messages postés 48 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 20 mars 2008 44
14 déc. 2007 à 10:42
Bonne méthode donnée par Eric...

Cette méthode à l'avantage de ne pas passé par la boite noire Macro

Par contre les formule ne sont pas dynamiques cad si tu veux les dix plus grandes valeurs il faut recopier dix fois la formule

Mais le plus serait peut etre d'utiliser les formules données par Eric mais de les rentrer sur ta feuille via une macro..
Mais si tu veux copier toutes une ligne je pense qu'il faut mieux passer par une macro

A toi de voir

Ce que j'ai compris c'est:
Sur une liste de n lignes je cherche sur une colonne les x plus grandes valeurs
Et je copie dans une feuille "Max" les lignes des x plus grandes valeurs
Et je copie dans une feuille "Min" les lignes des x plus petites valeurs

Si c'est le cas envoie moi ton fichier

nicolas_doulin@yahoo.fr

A+
1

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

Posez votre question
nicodoudou Messages postés 48 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 20 mars 2008 44
13 déc. 2007 à 17:44
Compliqué ta description à la lire j'ai du mal à comprendre

Si j'ai compris sur une colonne tu veux trouver les x plus grands nombres, et il faut transférer ces lignes dans une feuille Excel???

Aujourd'hui comment fais tu manuellement pour faire cela??

A+

Nicolas
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
14 déc. 2007 à 11:46
Pour ce qui est de la valeur 1,2,3,4 on peut la rendre dynamique.
Si la 1ère formule est saisie sur la ligne 1 remplacer 1 par LIGNE() et recopier vers le bas.
En 2nde ligne LIGNE() retournera 2 etc
Je n'avais pas jugé utile de le mettre pour 4 valeurs...

J'ai oublié de le dire mais oui, pour la 2ème partie on fait pareil mais avec PETITE.VALEUR()


eric
0
nicodoudou Messages postés 48 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 20 mars 2008 44
14 déc. 2007 à 11:50
C'est vrai mais par expérience le problème avec une formule c'est que cela s'efface facilement alors qu'une formule mise par une macro c béton

A l'utilisatrice de choisir...

A+

PS: Eric cela fait plusieurs fois que je te vois sur les mêmes sujets que moi!!! Que fais tu exactement?? si tu veux me contacter en direct nicolas_doulin@yahoo.fr
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
25 juin 2009 à 18:10
Bonjour,

en lisant le post 3 intégralement tu as ta réponse.
equiv() te permet de trouver en quelle ligne est ta grande.valeur
index() te permet de ramener le contenu de la ligne voulue dans n'importe quelle colonne.

Si tu n'y arrives pas il faudra déposer un exemple de ton fichier (cijoint.fr et coller ici le lien fourni) car tout dépend de ta feuille.

eric
0
Bonjour,

Merci à toi eriic pour tes explications !!!
J'utilise actuellement la méthode que tu as donné avec les "=Grande.valeur" et "=INDEX($A$1:$D$8;EQUIV(J1;$A$1:$A$8;0);3)".

Puis j'utilise une formule "RechercheV() " afin de compléter toutes les information sur ma ligne.
Mais je me heurte à un pb. Comme j'ai plusieurs fois la même "Grande valeur" sur différentes lignes, la rechercheV m'indique toujours les même information (celle de la 1ere Grande.valeur.
Aurais-tu une solution

Merci d'avance
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
23 août 2010 à 15:56
Bonjour,

J'ai éventuellement une petite idée mais il faudrait un extrait de ton tableau pour voir si ça pourrait s'appliquer.
Dépose-le sur cijoint.fr et colle ici le lien fourni
eric
0
Bonjour eriiic,

Je n'ai pas le tableau actuellement, je suis en formation jusqu'au 11 oct. Je t'enverrai le lien dès que je retourne en entreprise.
A bientot
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
18 sept. 2010 à 11:39
Bonjour,

Heuuuu, poste toujours, mais depuis le temps je l'ai oubliée mon idée...
eric
0