RechercheV et Grande.Valeur en évitant les doublons

Bonjour la communauté,

Voici mon problème :

J'aimerai rechercher des valeurs maximales, notamment la première, deuxième, troisième, quatrième et cinquième.

Aucun souci pour la première valeur mais le soucis apparait lorsqu'il y a des doublons.

Exemple (voir PJ pour mieux comprendre) :

J'ai 6% de chance que le n°9 tombe ; 6% que le n°16 tombe ; ...

Avec ma formule, il me donne en première valeur 9 (normal !), mais en deuxième valeur il me donne à nouveau 9, alors qu'il devrait trouver 16. Comment faire pour qu'il ne m'affiche pas la valeur déjà trouvé avant ?

Merci par avance de vos réponses !

32classeur1.xlsx (14.12 Ko)

Bonjour,

Une piste avec une fonction perso matricielle (Ctrl+Maj+Entrée) :

16romain57.xlsm (22.77 Ko)

dont voici le code :

'fonction matricielle (elle retourne un tableau donc, à valider par
'Ctrl+Maj+Entrée après avoir sélectionné le nombre de cellule souhaitées
Function JOUER(Plage1 As Range, Plage2 As Range) As Integer()

    Dim Tbl() As Integer
    Dim T_Tri As Variant
    Dim Dico As Object
    Dim Cle As Variant
    Dim Cel As Range
    Dim Tempo
    Dim I As Integer
    Dim J As Integer
    Dim K As Integer

    Set Dico = CreateObject("Scripting.Dictionary")

    'dédoublonne
    For Each Cel In Plage1: Dico(Cel.Value) = "": Next Cel

    'affecte à un tableau
    T_Tri = Dico.Keys

    'effectue un tri croissant
    For I = 0 To UBound(T_Tri) - 1: For J = I + 1 To UBound(T_Tri)

            If T_Tri(I) < T_Tri(J) Then
                Tempo = T_Tri(J)
                T_Tri(J) = T_Tri(I)
                T_Tri(I) = Tempo
            End If

    Next J, I

    'vide pour remettre dans le bon ordre
    Dico.RemoveAll
    For I = LBound(T_Tri) To UBound(T_Tri): Dico(T_Tri(I)) = "": Next I

    'récup des valeurs...
    For Each Cle In Dico.Keys

        For I = 1 To Plage1.Count

            If Plage1(I).Value = Cle Then

                K = K + 1: ReDim Preserve Tbl(1 To K)
                Tbl(K) = Plage2(I).Value

            End If

        Next I

    Next Cle

    'et retourne un tableau
    JOUER = Tbl()

End Function

La fonction retourne un tableau qui va contenir toutes les valeurs de la seconde plage correspondantes aux valeurs de la première plage avec un tri décroissant donc, des valeurs les plus hautes au plus basses. Il n'est pas nécessaire d'indiquer le rang

Merci de votre réponse ! C'est exactement ce que je cherchais à faire mais je n'y connais pas grand chose, voir rien du tout en fonction matricielle.

Re,

content de t'avoir aidé !

bonjour

un essai sans vba

56romain.xlsx (28.95 Ko)

cordialement

Bonjour Tulipe,

Merci d'avoir pris le temps de répondre.

Vraiment intéressant sans VBA. Par contre, il n'y avait pas besoin de prendre la colonne N° Bonus

Pourrais tu m'expliquer comment tu as fais stp ? Si tu as le temps évidemment. J'aimerai bien comprendre, on ne sait jamais si je suis amené à le refaire !

Bonjour Tulipe,

Merci d'avoir pris le temps de répondre.

Vraiment intéressant sans VBA. Par contre, il n'y avait pas besoin de prendre la colonne N° Bonus

Pourrais tu m'expliquer comment tu as fais stp ? Si tu as le temps évidemment. J'aimerai bien comprendre, on ne sait jamais si je suis amené à le refaire !

Ok j'ai rectifié

et je t'ai mis une 2nde formule (en orange) qui fait tout d'un coup sans les 3 colonnes du vert

je t'ai aussi mis des explications mais c'est hard et a cause de Indirect on a pas de visibilité

50romain-2.xlsx (35.77 Ko)

cordialement

Rechercher des sujets similaires à "recherchev grande valeur evitant doublons"