XL 2010 Créer formule

  • Initiateur de la discussion Initiateur de la discussion stefer
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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....
 
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

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
82
Réponses
4
Affichages
407
  • Question Question
Microsoft 365 Tableau
Réponses
24
Affichages
1 K
Réponses
7
Affichages
914
Retour