Tri VBA Excel

Il existe différentes façons de trier les données dans Microsoft Excel. Il y a une icône de tri sous le ruban de l'onglet Données Excel à partir de laquelle vous pouvez trier vos données en un tournemain et obtenir les résultats. Pourquoi faut-il alors écrire le code VBA complexe?

Vous devez garder cela à l'esprit à chaque fois, les codes VBA sont là pour automatiser les choses. Supposons que vous ayez des données qui sont mises à jour de temps en temps. Peut-être tous les jours, hebdomadaires, mensuels, etc. et vous avez besoin de vos données d'une manière spécifique triée. Dans de tels cas, la fonction VBA SORT peut être utilisée et apparaîtra comme un outil pratique pour votre référence.

VBA dispose d'une méthode Range.Sort pour trier les données pour vous. Où Range spécifie la plage de cellules que nous voulons trier par ordre croissant ou décroissant.

La syntaxe de Range.Sort est la suivante:

Où,

  • Clé - Colonne / plage que vous devez trier. Ex. Si vous souhaitez trier les cellules A1: A10, vous devez mentionner Plage (A1: A10)
  • Ordre - C'est le paramètre qui vous permet de trier les données dans l'ordre croissant ou décroissant.
  • En - tête - C'est le paramètre qui spécifie si votre colonne / plage a des en-têtes ou non.

Ces trois paramètres suffisent à nos travaux. Cependant, il existe d'autres paramètres tels que MatchCase, SortMethod, etc. que vous pouvez toujours explorer et voir comment ils fonctionnent.

Comment utiliser la fonction de tri Excel VBA?

Nous apprendrons comment le tri VBA peut être utilisé pour trier la colonne sans en-têtes, une colonne avec des en-têtes et plusieurs colonnes avec des exemples dans Excel.

Vous pouvez télécharger ce modèle Excel de tri VBA ici - Modèle Excel de tri VBA

Fonction de tri VBA - Exemple # 1

Tri d'une seule colonne sans en-tête

Supposons que vous ayez une colonne avec des noms comme indiqué ci-dessous et tout ce dont vous avez besoin est de trier ces données par ordre alphabétique croissant ou décroissant.

Suivez les étapes ci-dessous pour utiliser la fonction Trier dans VBA.

Étape 1: définir une nouvelle sup-procédure sous un module et créer une macro.

Code:

 Sub SortEx1 () End Sub 

Étape 2: utilisez la fonction Range.Sort pour pouvoir trier cette colonne dans l'ordre croissant.

Code:

 Sub SortEx1 () Range ("A1", Range ("A1"). End (xlDown)). Sort End Sub 

Ici, vous donnez une plage allant de la cellule A1 à la dernière cellule utilisée / non vide (voir la fonction .End (xlDown)) à la fonction Range.Sort.

Étape 3: Maintenant, saisissez les valeurs des arguments.

Code:

 Sub SortEx1 () Range ("A1", Range ("A1"). End (xlDown)). Sort Key1: = Range ("A1"), Order1: = xlAscending, Header: = xlNo End Sub 

Comme nous l'avons vu précédemment, Clé, Ordre et En-tête sont les arguments importants et nécessaires à fournir. Nous avons donné Range («A1») comme plage de début de colonne que nous devons trier. L'ordre est fourni comme croissant et l'en-tête comme non (ce qui signifie que la colonne n'a pas d'en-tête).

Ce code recherchera toutes les cellules non vides à partir de A1, puis les triera par ordre croissant à partir de la cellule A1.

Étape 4: exécutez ce code en appuyant sur F5 ou sur le bouton Exécuter manuellement et voyez la sortie.

Si vous pouvez comparer cela avec l'image au début de cet exemple, vous pouvez voir que les noms sont triés par ordre croissant.

Fonction de tri VBA - Exemple # 2

Tri d'une seule colonne avec en-tête

Supposons que vous ayez une colonne avec l'en-tête, comme illustré ci-dessous. Et vous vouliez trier cette colonne par ordre croissant ou décroissant.

Suivez les étapes ci-dessous pour utiliser la fonction Trier dans VBA.

Étape 1: définir une nouvelle sous-procédure sous un nouveau modèle pour stocker la macro.

Code:

 Sub SortEx2 () End Sub 

Étape 2: Utilisez des feuilles («Exemple # 2») pour spécifier de quelle feuille sont vos données.

Code:

 Sub SortEx2 () Sheets ("Example # 2") End Sub 

Étape 3: utilisez la plage («A1»). Triez devant la ligne de code ci-dessus pour en faire une fonction de tri.

Code:

 Sub SortEx2 () Sheets ("Example # 2"). Range ("A1"). Sort End Sub 

Étape 4: Fournissez Key1 en tant que plage («A1») pour trier les données de la cellule A1, Order1 afin de trier les données dans l' ordre croissant ou décroissant et Header sur Oui afin de permettre au système de savoir que la première ligne est l'en-tête de votre Les données.

Code:

 Sub SortEx2 () Sheets ("Example # 2"). Range ("A1"). Sort Key1: = Range ("A1"), Order1: = xlAscending, Header: = xlYes End Sub 

Étape 5: exécutez ce code en appuyant sur F5 ou sur le bouton Exécuter manuellement et consultez la sortie.

Ici, les données de l'exemple # 2 du classeur Excel donné sont triées dans l'ordre croissant étant donné qu'elles ont un en-tête. Ce qui signifie que, lors du tri de ces données, la première ligne (qui contient le nom Emp ) est négligée car elle est considérée comme un en-tête pour ces données dans la colonne A.

Vous pouvez également trier les mêmes données dans l'ordre décroissant des alphabets. Tout ce que vous avez à faire est de changer l'ordre de croissant à décroissant.

Étape 6: changez order1 en ordre décroissant afin de trier les données dans l'ordre décroissant.

Code:

 Sub SortEx2 () Sheets ("Example # 2"). Range ("A1"). Sort Key1: = Range ("A1"), Order1: = xlDescending, Header: = xlYes End Sub 

Étape 7: Exécutez le code et voyez une sortie comme indiqué ci-dessous.

Vous pouvez voir que les données sont triées par ordre décroissant.

Fonction de tri VBA - Exemple # 3

Tri de plusieurs colonnes avec des en-têtes

Jusqu'à présent, nous avons expliqué comment trier les données d'une seule colonne dans l'ordre croissant ou décroissant (sans en-tête et avec en-tête). Que faire si vous avez des données que vous devez trier en fonction de plusieurs colonnes? Est-il possible d'écrire un code pour le même?

La réponse est: "Oui, cela peut sûrement être fait!"

Supposons que vous disposiez des données ci-dessous:

Vous vouliez d'abord trier ces données par nom Emp puis par emplacement. Suivez les étapes ci-dessous pour voir comment nous pouvons le coder dans VBA.

Étape 1: Définissez une nouvelle sous-procédure pour ajouter une macro sous un nouveau module.

Code:

 Sub SortEx3 () End Sub 

Étape 2: utilisez une instruction With… End With pour ajouter plusieurs conditions de tri dans une seule boucle.

Code:

 Sub SortEx3 () avec ActiveSheet.Sort End Sub 

Étape 3: Maintenant, utilisez SortFields.Add pour ajouter les multiples conditions de tri dans la même feuille de calcul.

Code:

 Sub SortEx3 () With ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending End Sub 

Étape 4: Décidez de la plage de feuilles à trier et de l'en-tête À l'étape suivante.

Code:

 Sub SortEx3 () With ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlYes End Sub 

Étape 5: Utilisez .Apply pour appliquer toutes ces choses sous avec l'instruction et fermez la boucle en écrivant Fin avec.

Code:

 Sub SortEx3 () With ActiveSheet.Sort .SortFields.Add Key: = Range ("A1"), Order: = xlAscending .SortFields.Add Key: = Range ("B1"), Order: = xlAscending .SetRange Range ("A1 : C13 ") .Header = xlYes .Apply End With End Sub 

Étape 6: exécutez ce code en appuyant manuellement sur F5 ou sur le bouton Exécuter et consultez la sortie.

Dans ce code, ActiveSheets.Sort aide le système à identifier la feuille sous laquelle les données doivent être triées. SortFields.Add permet d'ajouter deux conditions de tri avec leur ordre (croissant dans les deux cas). SetRange permet au système de définir la plage de A1 à C13. Vous pouvez également augmenter cette plage. Les instructions Apply permettent au système d'appliquer toutes les modifications apportées dans la boucle With.

Enfin, vous obtiendrez les données qui sont triées sur la base du nom Emp d'abord, puis par emplacement.

Choses dont il faut se rappeler

  • Sous Tri VBA, vous pouvez créer des plages nommées au lieu de références de cellule et les utiliser. Ex. Si vous avez créé la plage nommée pour la cellule A1: A10 en tant que «EmpRange», vous pouvez l'utiliser sous Range.Sort comme Range («EmpRange»).
  • Vous pouvez trier les données dans l'ordre croissant et décroissant comme dans Excel.
  • Si vous n'êtes pas sûr que vos données aient un en-tête ou non, vous pouvez utiliser xlGuess dans la section En-tête pour laisser le système deviner si la première ligne de données est un en-tête ou non.

Articles recommandés

Cela a été un guide pour le tri Excel VBA. Nous avons discuté ici du tri VBA et de l'utilisation de la fonction de tri VBA Excel, ainsi que d'exemples pratiques et d'un modèle Excel téléchargeable. Vous pouvez également consulter nos autres articles suggérés -

  1. Guide rapide pour trier par numéro Excel
  2. Utilisation de la fonction de correspondance VBA
  3. Comment trier la colonne dans Excel?
  4. VBA en boucle | MS Excel

Catégorie: