Extraction des x plus grandes données sur tableau

Bonjour,

tout d'abord, merci à ceux qui tenteront de m'aider sur ce cas.

Jeune stagiaire, on m'a confié un rôle sur vba et comme surement 99% des posts, j'ai des difficultés sur ma réalisation.

Voici donc la description du projet :

sur une feuille data de mon Excel, je dispose de d'un large tableau de donnée comprenant des variations (+0,1% ; -5,2% ; +62% etc.) avec 2 données correspondantes : des noms et des dates.

J'ai ainsi de la colonne B1 à NZ1 des noms puis en ligne commençant de A2 à A4573 des dates.

Le but serait de lire chaque cellule de chaque colonnes de chaque lignes 1 à 1 afin d'y extraire les 50 plus grandes variations ainsi que les 50 plus petites variations. Celles-ci seraient misent dans 2 tableaux distincts (un pour les plus grands, un pour les plus petits) comprenant la valeur de la variation, sa date et son nom.

Le code remplirait donc le tableau avec les 50 premières valeurs lus, puis à la 51eme lu, si celle-ci est plus grandes que la dernière valeur des plus grandes, alors elle l'a remplacerait (même chose pour le tableau des valeurs plus petites).

J'ai à travers mes recherches trouvés quelqu'un ayant montré comment lire colonne par colonne d'une ligne puis passer à la suivante avec cette façon :

Sub For_Next_Plage()

Dim FL1 As Worksheet, Cell As Range, NoCol As Integer, NoLig As Long

Dim DerLig As Long, DerCol As Integer, Var As Variant

Set FL1 = Worksheets("Feuil2")

'Détermine la dernière ligne renseignée de la feuille de calculs

DerLig = Split(FL1.UsedRange.Address, "$")(4)

'Détermine la dernière colonne renseignée de la feuille de calculs

DerCol = Columns(Split(FL1.UsedRange.Address, "$")(3)).Column

For NoLig = 1 To DerLig

For NoCol = 1 To DerCol

Var = FL1.Cells(NoLig, NoCol)

Next

Next

End Sub

cependant je n'ai donc pas réussi à effectuer tous le reste du projet expliqué juste avant, bien que je me doute qu'il faille ajouter une autre boucle de calcul avec peut être for ou while.

Merci de votre retour et de toutes questions si je dois détailler plus.

Bonsoir,

Il suffit de trier le tableau par variations décroissantes, puis on prend les 50 premiers et les 50 derniers...

Cordialement.

Cette méthode ne m'affiche pas le nom et la date des valeurs et ne les transfères pas non plus dans les 2 autres tableaux.

Bonsoir,

Merci de joindre un fichier pour une aide adaptée du forum.

Cdlt.

J'étais entrain d'en faire un

je l'ai énormément réduit pour arriver en dessous des 1mo requis mais ça donne effectivement un visuel (il est vide de tous vba)

Merci encore de vouloir y jeter un coup d'oeil.

15excel-exemple.xlsx (15.39 Ko)
zhanties a écrit :

Cette méthode ne m'affiche pas le nom et la date des valeurs et ne les transfères pas non plus dans les 2 autres tableaux.

Elle ne le fait pas si tu ne le fais pas !

La méthode c'est le tri, qui te regroupe rapidement les 50 valeurs plus grandes et les 50 valeurs plus petites ! Tu n'as donc plus rien à parcourir pour les chercher, tu les as trouvées. Ton tableau étant trié, tu fais ce que tu veux avec les parties à récupérer...

Bon on va dire qu'il y a la méthode tri si tu insistes, mais celle-ci ne me convient pas, voulant du code, voila

Tu confusionnes à tour de bras !

Le code n'est pas une méthode, c'est la programmation de la méthode choisie pour l'exécuter autrement que manuellement.

Avant de penser code, on pense ce qu'on veut réaliser, comment, et en général quelle méthode sera à la fois la plus économique et la plus rapide...

C'est ainsi qu'on arrive au bout, à l'objectif dans de bonnes conditions. Si on commence par obsessionner sur le code... !

Mais je sais, mais là ce n'est pas adapté, sinon je l'aurai fais depuis longtemps.

et d'ailleurs je ne serai pas venu sur ce site aussi.

faire un tri est adapté sur une colonne mais pas sur une plage donnée comme dans l'exemple.

Je tiens cependant à préciser que je ne te contredis pas juste comme ça hein, car je vois absolument pas en quoi le tri résous mon problème.

par exemple le fait qu'une des plus grandes valeurs soit à la date 01/01/2000 en valeurs 1 alors que la valeurs 2 sur la même date (ligne) est une des plus petites fait déjà que le tri ne sera pas bon.

On pourrait bien aussi trier colonne par colonne séparément en rajoutant les dates collés à celles-ci ce qui serait long et inutile car au final il faut les 50 plus grandes valeurs totales et non les plus grandes par lignes.

Peut-être y vois tu mieux dans se que je voulais dire et l'utilité de l'utilisation VBA sur ce coup ^^

ou alors fait aussi probable, je m'y prend comme un manche, mais faire un tri n'est pourtant pas bien compliqué donc je pense mettre mal exprimé.

Il faudrait réviser ta conception du tri !

On ne trie pas des colonnes séparément, on trie toujours un tableau entier sur le contenu d'une colonne (comme critère principal).

Si on on trie le tableau sur la colonne des valeurs cherchées, en ordre décroissant par exemple, toutes les autres colonnes suivront et seront ordonnées selon les valeurs décroissantes de la colonne valeurs : ainsi les 50 premières lignes du tableau seront celles qui t'intéressent pour les plus grandes valeurs, et les 50 dernières celles qui t'intéressent pour les plus petites valeurs.

Cordialement.

Bonsoir,

au vu de votre "petit" fichier ce que vous cherchez à faire est ceci :

colonne valeur 1 trouver le % le plus petit puis trouver le % le plus grand = donne la variation la plus grande de la valeur 1.

Une sorte de ligne de totaux qui indique la variation max de la colonne.

Pour les valeurs 2 et jusqu'à NZ1 pas loin de 400 colonnes, ce serait la même chose.

Ensuite sur cette ligne vous voulez récupérez les 50 plus grandes variations, ainsi que le 50 plus petites.

Pour chacune des variation sélectionnées, vous voulez récupérer :

le nom de la valeur, ainsi que les dates mini et maxi qui ont données la variation maxi sur cette valeur.

La compréhension du problème est-elle bonne ?

@ bientôt

LouReeD


Un fichier de mon essai de compréhension :

@ bientôt

LouReeD

Rechercher des sujets similaires à "extraction grandes donnees tableau"