Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Tri en fonction d'un Nb Maxi

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

Bonjour à tous,

A essayer en "N6"
Code:
=SIERREUR(RANG(K6;INDIRECT("$K$6:$K$"&5+$B$2);0);"")
Copier vers le bas

Edit: pour les doublons, tu peux essayer cette formule
Code:
=SIERREUR(RANG(K6;INDIRECT("$K$6:$K$"&5+$B$2);0)+NB.SI($N$5:$N5;$N5)-1;"")

JHA
 
Dernière édition:
Bonjour JBARBE, JHA,

Une formule un peu compliquée mais qui a l'avantage de ne pas utiliser de fonctions volatiles :
Code:
=(LIGNE()<LIGNE(K$6)+B$2)*SOMMEPROD((LIGNE(K$6:K$25)<LIGNE(K$6)+B$2)*(K$6:K$25-LIGNE(K$6:K$25)/"1E12">=K6-LIGNE()/"1E12"))
Sur le tableau source on peut dupliquer une ligne, il n'y aura pas de doublon de rang.

Edit : avec "1E12" la formule fonctionne bien jusqu'à un maximum de 1000 et un minimum de -999,999999999998 en colonne K.

S'il peut y avoir des nombres au-delà de ces limites il faut diminuer l'exposant.

A+
 

Pièces jointes

Dernière édition:
Bonjour JBARBE, JHA, le forum,

Comme je l'ai dit la méthode avec "1E12" (pour éliminer les doublons) a ses limites.

On peut l'éviter, le plus simple est alors d'utiliser 2 colonnes, avec et sans doublon.

Formule en N6 :
Code:
=(LIGNE()<LIGNE(K$6)+B$2)*SOMMEPROD((LIGNE(K$6:K$25)<LIGNE(K$6)+B$2)*(K$6:K$25>=K6))
Formule en O6 :
Code:
=MAX(N6-NB.SI(N6:N$25;N6)+1;)
Fichier (2).
j'ai enregistré en xls pour ceux qui n'ont que 2003 et antérieur !
Et justement pour eux les formules avec SIERREUR ne fonctionneront pas !!!

Bonne journée.
 

Pièces jointes

Re,

Merci JHA mais pourquoi utiliser ESTERREUR, ceci est bien plus simple :
Code:
=SI(LIGNE()>5+$B$2;"";RANG(K6;INDIRECT("$K$6:$K$"&5+$B$2);0)+NB.SI(INDIRECT("$k$6:$k$"&5+MIN(LIGNE()-5;$B$2));K6)-1)
A+
 
Re,

Finalement la solution la meilleure utilise 3 colonnes de résultats avec des formules très simples.

Je la préfère car il n'y a pas de formules volatiles et les calculs sont les plus rapides.

Fichier (3), voyez le post suivant pour les tests.

A+
 

Pièces jointes

Re,

Pour finir voici une solution VBA, le calcul est très rapide avec cette macro :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With [B5].CurrentRegion.Resize(, 9)
  If Intersect(Target, Union([B2], .Cells)) Is Nothing Then Exit Sub
  Application.ScreenUpdating = False
  If FilterMode Then ShowAllData 'si la feuille est filtrée
  .Cells(2, 13).Resize(Rows.Count - .Row) = "" 'RAZ
  If Int(Val([B2])) < 1 Then Exit Sub
  With .Cells(2, 1).Resize(Int(Val([B2])))
    .Columns(12) = .Columns(1).Value 'N° en colonne M
    .Columns(13) = .Columns(10).Value 'copie les valeurs de la colonne K en colonne N
    .Columns(12).Resize(, 2).Sort .Columns(13), xlDescending, Header:=xlNo 'tri sur la colonne N
    .Columns(13) = .Columns(1).Value 'N° en colonne N indiquant le classement
    .Columns(12).Resize(, 2).Sort .Columns(12), xlAscending, Header:=xlNo 'tri dans l'ordre initial
    .Columns(12) = "" 'RAZ de la colonne M
  End With
End With
End Sub
On notera qu'il faut 2 tris.

Fichiers joints.

Edit : j'ai ajouté les MFC.

A+
 

Pièces jointes

Dernière édition:
- 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
5
Affichages
253
Réponses
19
Affichages
681
Réponses
5
Affichages
175
Réponses
1
Affichages
363
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…