VBA : Comment classer une liste de valeurs



Vous pouvez utiliser la syntaxe de base suivante pour classer une liste de valeurs dans Excel à l’aide de VBA :

Sub RankValues()
    Dim i As Integer

    For i = 2 To 11
    Range("C" & i) = WorksheetFunction.Rank(Range("B" & i), Range("B2:B11"), 0)
    Next i
End Sub

Cet exemple particulier classe les valeurs dans les cellules B2:B11 et affiche les classements dans les cellules C2:C11 .

Le dernier argument de 0 précise qu’il faut classer les valeurs par ordre croissant (la plus grande valeur reçoit un rang de 1, la deuxième plus grande valeur reçoit un rang de 2, etc.).

Pour classer les valeurs par ordre décroissant, remplacez simplement le 0 par 1 .

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : Comment classer les valeurs à l’aide de VBA

Supposons que nous ayons la liste suivante de joueurs de basket-ball ainsi que leurs points marqués :

Supposons que nous souhaitions calculer le rang de chaque valeur dans la colonne des points.

Nous pouvons créer la macro suivante pour ce faire :

Sub RankValues()
    Dim i As Integer

    For i = 2 To 11
    Range("C" & i) = WorksheetFunction.Rank(Range("B" & i), Range("B2:B11"), 0)
    Next i
End Sub

Lorsque nous exécutons cette macro, nous recevons le résultat suivant :

Le classement de chaque valeur dans la colonne des points est affiché dans la colonne C.

Par exemple:

  • Le joueur H avec 41 points a la valeur de points la plus élevée, il reçoit donc le rang 1 .
  • Le joueur C avec 40 points a la deuxième valeur de points la plus élevée, il reçoit donc le rang 2 .

Et ainsi de suite.

Pour classer les valeurs dans la colonne des points par ordre décroissant, nous pouvons changer le dernier argument de la méthode Rank de 0 à 1 :

Sub RankValues()
    Dim i As Integer

    For i = 2 To 11
    Range("C" & i) = WorksheetFunction.Rank(Range("B" & i), Range("B2:B11"), 1)
    Next i
End Sub

Lorsque nous exécutons cette macro, nous recevons le résultat suivant :

Le classement de chaque valeur dans la colonne des points est affiché dans la colonne C.

Par exemple:

  • Le joueur I avec 11 points a la valeur de points la plus basse, il reçoit donc le rang 1 .
  • Le joueur E avec 13 points a la deuxième valeur de points la plus basse, il reçoit donc le rang 2 .

Et ainsi de suite.

Remarque : Vous pouvez trouver la documentation complète de la méthode VBA Rank ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans VBA :

VBA : Comment compter les cellules avec un texte spécifique
VBA : Comment compter le nombre de lignes dans la plage
VBA : Comment écrire les fonctions COUNTIF et COUNTIFS

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *