N plus grandes valeurs d une colonne - gerer doublons

Bonjour a tous,

tout d'abord veuillez m'excuser pour l’absence d'accents dans ce message, j'ecris avec un clavier QWERTY...

Je vous explique mon probleme: j'ai ecrit un code qui me permet d'afficher les n plus grandes valeurs d'une colonne avec le nom d'une ville associee (n=3 dans le doc joint).

Je calcule donc pour chaque colonne les n plus grandes valeurs et j'affiche dans une autre colonne le classement obtenu avec des noms de villes correspondantes. Ca marche sans probleme mais par contre si une valeur apparait plusieurs fois le programme me met toujours le meme nom de ville..

Quelqu'un aurait-il une solution? J'imagine que je suis loin d'etre le premier a avoir ce probleme mais je n'ai rien trouve sur les forum..

Merci d'avance!

Bonjour,

Une solution (sans VBA pour l'exemple).

Un TCD basé sur ton tableau (issu d'une connexion externe) et un tri...

Cdlt.

Bonjour Jean-Eric,

merci pour cette reponse. Le probleme c'est que je dois l'integrer a un programme plus complexe qui ferait une serie de calculs une fois lance. Du coup avoir directement le classement avec VBA m'aurait evite de le surcharger mais effectivement ca pourrait etre une solution je vais creuser !

En fait j'avais peut etre mal explique mon probleme, je voulais classer les villes mais lorsque deux villes avaient le meme classement au lieu de mettre par exemple Paris et Londres en premiere position le programme affichait deux fois Paris.

Si d'autre personnes rencontrent le meme probleme voici la seule solution satisfaisante que j'ai trouve, c'est un peu de la bidouille: je supprime les doublons en les multipliant par une valeur tres faible (0.0001 ; 0.0002 ; etc.) Comme ca chaque valeur devient unique et dans mon cas ca ne change pas assez les valeurs pour biaiser mon resultat

Sub identifier_colonne()

  Dim x As Byte
    Dim Nombre As Variant
    Dim Ligne As Single

n = 0
For l = 3 To 4

For i = 2 To 10
        For j = 1 To 10
            If StrComp(Cells(i, l), Cells(i + j, l), vbTextCompare) = 0 Then
                Cells(i, l) = Cells(i, l) + 0.00001 * j 'MULTIPLICATION POUR ENLEVER DOUBLONS             
                End If   
Next
Next
            For x = 1 To 3 'boucle pour recuperer les 3 valeurs les plus elevees

                   'recupere la Xieme valeur la plus élevée dans la "l"eme colonne
            Nombre = Application.WorksheetFunction.Large(Columns(l), x)
                   MsgBox Nombre
                   'recherche le numéro de ligne pour la valeur trouvee
            Ligne = Application.Match(Nombre, Columns(l), 0)

                   'recupere le contenu de la 2eme (nom ville) et "l"eme colonne pour la valeur cible
             n = n + 1
               'affiche les resultats sur n lignes
            Cells(n, 6) = Cells(Ligne, 2)
            Cells(n, 7) = Cells(Ligne, l)
               Next
Next
Rechercher des sujets similaires à "grandes valeurs colonne gerer doublons"