Classement d'une Série Aléatoire du + petit au plus grand

  • Initiateur de la discussion Initiateur de la discussion DADARODA
  • 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 !

Re : Classement d'une Série Aléatoire du + petit au plus grand

Bonjour Dadaroda,

Une proposition avec une ligne intermédiaire (et 2 cases supplémentaires pour que les formules restent valables quelque soient le nombre de caractères des préfixes et suffixes du moment qu'ils restent fixés).

Cordialement

KD
 

Pièces jointes

Re : Classement d'une Série Aléatoire du + petit au plus grand

Bonjour, salut KenDev,

En C4, suivant l'exemple, sans ligne intermédiaire mais par formule matricielle (à valider par Ctrl+Maj+Entrée) et à copier vers la droite :
Code:
="P"&PETITE.VALEUR(SUBSTITUE(SUBSTITUE($C$3:$AA$3;"P";"");".";"")*1;COLONNE()-2)&"."
 
Re : Classement d'une Série Aléatoire du + petit au plus grand

Bonjour DADARODA, salut KenDev, hoerwind,

Voici une solution qui effectue un tri alphanumérique de toute série aléatoire.

Comme exemple de formule aléatoire, entrer en C3 et tirer vers la droite :

Code:
=CAR(ALEA.ENTRE.BORNES(80;82))&TEXTE(ALEA.ENTRE.BORNES(1;99);"00")&"."
Formule en C4, à tirer vers la droite :

Code:
=Classe($C3:$AA3;COLONNE()-2)
Et dans Module1 (Alt+F11) ces macros :

Code:
Function Classe(plage As Range, ordre)
Dim temp()
temp = Application.Transpose(plage) 'pour vecteur horizontal
Call Tri(temp, 1, UBound(temp))
Classe = temp(ordre, 1)
End Function

Sub Tri(a(), gauc, droi) ' Quick sort de Jacques Boisgontier
Dim ref, g, d, temp
 ref = a((gauc + droi) \ 2, 1)
 g = gauc: d = droi
 Do
     Do While a(g, 1) < ref: g = g + 1: Loop
     Do While ref < a(d, 1): d = d - 1: Loop
     If g <= d Then
       temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
       g = g + 1: d = d - 1
     End If
 Loop While g <= d
 If g < droi Then Call Tri(a, g, droi)
 If gauc < d Then Call Tri(a, gauc, d)
End Sub
La macro Tri (qui permet de trier un vecteur) est de Jacques Boisgontier.

A+
 

Pièces jointes

Re : Classement d'une Série Aléatoire du + petit au plus grand

Re,

Une version en matriciel qui s'exécute probablement plus rapidement :

Code:
Function Classe(plage As Range)
Dim temp()
temp = Application.Transpose(plage) 'pour vecteur horizontal
Call Tri(temp, 1, UBound(temp))
Classe = Application.Transpose(temp)
End Function
Voir le mode d'emploi sur le fichier (2) joint.

A+
 

Pièces jointes

Re : Classement d'une Série Aléatoire du + petit au plus grand

Re,

J'ai exécuté cette macro sur chaque version (attention : un seul fichier ouvert) :

Code:
Sub Test()
Dim t, i
Application.ScreenUpdating = False
t = Timer
For i = 1 To 1000
  Calculate
Next
MsgBox Timer - t
End Sub
version (1) => 4,17 secondes
version (2) => 0,54 seconde

Cela sur mon ordi avec Excel 2003.

A+
 
Re : Classement d'une Série Aléatoire du + petit au plus grand

Bonjour le fil, le forum,

J'ai oublié de rappeler l'Aide d'Excel (touche F1) :

ALEA.ENTRE.BORNES
(...)
Si cette fonction n'est pas disponible et renvoie la valeur d'erreur #NOM?, installez et chargez la macro complémentaire Utilitaire d'analyse.

On pourrait n'utiliser que la fonction ALEA(), la formule en C3 serait seulement plus compliquée.

A+
 
Re : Classement d'une Série Aléatoire du + petit au plus grand

Re,

Si l'on veut que chaque terme de la série soit unique, entrer en B6 :

Code:
=NBVAL(C3:AA3)=SOMMEPROD(1/NB.SI(C3:AA3;C3:AA3))
Et dans le code de la feuille :

Code:
Private Sub Worksheet_Calculate()
If Not [B6] Then Calculate
End Sub
A+
 

Pièces jointes

Re : Classement d'une Série Aléatoire du + petit au plus grand

Merci pour vos réponse
je n'arrive pas a activé avec ctrl+maj+entr

La formule par intermédiaire me convient seulement il n'admet pas qu'une ou plusieurs population soit absent
je voudrai que cela fonctionne meme si il manque un ou plusieurs P. entre C3 et AA3
ma population n'admet que 25 mais il y a ceux qui n'arrive jamais donc non décompter

exemple P12. P7. P16. forfait donc au Tri ils ne doivent pas apparaitre donc

Merci de votre Support
 
Re : Classement d'une Série Aléatoire du + petit au plus grand

KenDev,

ça marche !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Excellent ..............

Un trés gand Merci à toi et a tous ceux qui on passé du temps sur ce sujet

Encore Merci !!!!!!!!!!!!!!!!!!
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
16
Affichages
505
Réponses
4
Affichages
229
Réponses
2
Affichages
266
Réponses
15
Affichages
525
Réponses
1
Affichages
454
Retour