XL 2010 Créer formule

stefer

XLDnaute Junior
Bonjour,
Je voudrais avoir dans une sélection de chiffre le nombre le plus utilisé puis le second etc. Si 2 nombres ont été identiquement utilisé, cest le nombre le moins élevé qui prends le rang et le nombre le plus élevé qui prend le rang suivant. sir mon exemple excel, j'espère que ceci est plus claire!
Merci d'avance
 

Pièces jointes

  • Stat.xlsx
    9.6 KB · Affichages: 36

stefer

XLDnaute Junior
Bonsoir,
Merci d'avoir donné un résultat déja!
Je me suis mal exprimé moi ce que je veux cest dans les cellule jaune, le résultat des nbs les plus utilisés. La parti en dessous est un récapiculatif et montre que le chiffre 44 est le rang 1 etc....
 

job75

XLDnaute Barbatruc
Bonjour Stefer, tbft, mapomme, le forum,

Voyez le fichier joint et cette fonction VBA :
Code:
Function Classer(r As Range)
Dim d As Object, a, b, i&, c
Set d = CreateObject("Scripting.Dictionary")
For Each r In r: d(r.Value) = d(r.Value) + 1: Next
a = d.items: b = d.keys
For i = 0 To UBound(b): a(i) = a(i) - b(i) / 1000000: Next 'pour les ex-aequo
tri a, b, 0, UBound(a)
ReDim c(1, UBound(a)) 'base 0
For i = 0 To UBound(a): c(0, i) = b(i): c(1, i) = i + 1: Next
Classer = c 'matrice à 2 lignes
End Function

Sub tri(a, b, gauc, droi) ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) > ref: g = g + 1: Loop
    Do While ref > a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      temp = b(g): b(g) = b(d): b(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, b, g, droi)
If gauc < d Then Call tri(a, b, gauc, d)
End Sub
La fonction renvoie une matrice à 2 lignes, le tableau source peut-être agrandi sans difficulté.

A+
 

Pièces jointes

  • Stat(1).xlsm
    25.3 KB · Affichages: 32

job75

XLDnaute Barbatruc
Re,

Fichier (2) avec tirage aléatoire sur la plage A2:E1000 :
Code:
Private Sub CommandButton1_Click() 'bouton Nouveau tirage
Application.Calculation = xlCalculationManual 'calcul manuel
[A2:E1000] = "=RANDBETWEEN(1,99)" 'adapter les limites
[A2:E1000] = [A2:E1000].Value 'supprime les formules
Application.Calculation = xlCalculationAutomatic 'recalcul des formules
End Sub
A+
 

Pièces jointes

  • Stat(2).xlsm
    61.7 KB · Affichages: 28

job75

XLDnaute Barbatruc
Re,

S'il y a beaucoup de valeurs uniques le calcul des résultats sous G7:I7 prend beaucoup (trop) de temps.

Il faut éviter les recalculs inutiles de la fonction Classer, voyez ce fichier (3) avec 999 valeurs uniques.

Ce n'est pas très facile à comprendre, si vous avez des questions posez-les.

A+
 

Pièces jointes

  • Stat(3).xlsm
    90.6 KB · Affichages: 25

Discussions similaires

  • Question
XL pour MAC mise en forme
Réponses
2
Affichages
105
Réponses
4
Affichages
291

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 205
Membres
103 157
dernier inscrit
youma