Créer un mécanisme de tri dynamique, Excel VBA

Créer un mécanisme de tri dynamique, Excel VBA
Voici une explication détaillée et un code VBA pour créer un mécanisme de tri dynamique dans Excel. Ce code déterminera automatiquement la plage de données et triera les données selon une colonne spécifique, que vous pouvez ajuster à vos besoins.
Objectif
L’objectif est de créer un mécanisme de tri dynamique en VBA. La plage dynamique signifie que le code s’adapte automatiquement à toute modification de la plage de données (ajout ou suppression de lignes), garantissant ainsi que la plage correcte soit toujours triée sans avoir à définir manuellement la taille de la plage.
Explication détaillée
1. Déterminer la Plage Dynamique :
Nous devons trouver la plage de données de manière dynamique, c’est-à-dire sélectionner automatiquement toutes les cellules de la feuille de calcul qui contiennent des données. Cela se fait en identifiant la dernière ligne et la dernière colonne contenant des données dans la feuille de calcul.

2. Définir la logique de tri :
Une fois que nous avons la plage, nous pouvons la trier selon une colonne spécifique. Nous utiliserons la méthode
Sort d’Excel, qui permet de trier par ordre croissant ou décroissant.

3. Appliquer le tri :
Nous définirons la colonne de tri, et le code appliquera le tri sur la plage dynamique.

Code VBA détaillé

Sub TrierPlageDynamique()
Dim ws As Worksheet
Dim derniereLigne As Long
Dim derniereColonne As Long
Dim plageDeDonnees As Range
Dim colonneDeTri As Integer
' Définir l'objet Worksheet (vous pouvez changer ceci pour la feuille spécifique que vous utilisez)
Set ws = ThisWorkbook.Sheets("Feuille1")
' Trouver la dernière ligne avec des données dans la feuille (colonne A)
derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Trouver la dernière colonne avec des données dans la première ligne
derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
' Définir la plage dynamique
Set plageDeDonnees = ws.Range(ws.Cells(1, 1), ws.Cells(derniereLigne, derniereColonne))
' Choisir la colonne par laquelle trier (par exemple, colonne 2 - colonne B)
colonneDeTri = 2 ' Changez ceci pour le numéro de la colonne que vous voulez utiliser pour le tri
' Appliquer le tri à la plage
plageDeDonnees.Sort Key1:=ws.Cells(1, colonneDeTri), Order1:=xlAscending, Header:=xlYes
' Informer l'utilisateur que le tri est terminé
MsgBox "Données triées par la colonne " & colonneDeTri, vbInformation
End Sub

Explication du Code
1. Définir l’objet Worksheet :
Nous spécifions la feuille de calcul sur laquelle nous souhaitons effectuer le tri. Dans le code, « Feuille1 » est utilisé, mais vous pouvez le changer pour le nom spécifique de votre feuille.

Set ws = ThisWorkbook.Sheets("Feuille1")
2. Trouver la Dernière Ligne et Colonne :
Nous déterminons la dernière ligne et la dernière colonne avec des données dans la feuille de calcul.

  • derniereLigne trouve la dernière ligne dans la colonne « A » contenant des données (vous pouvez changer cette colonne si nécessaire).
  • derniereColonne trouve la dernière colonne dans la ligne 1 contenant des données.
derniereLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

3. Définir la Plage de Données :
En utilisant la dernière ligne et colonne, nous définissons la plage dynamique qui inclut toutes les données.

Set plageDeDonnees = ws.Range(ws.Cells(1, 1), ws.Cells(derniereLigne, derniereColonne))
4. Logique de Tri :
Le code trie les données en fonction de la colonne que vous spécifiez (dans cet exemple, la colonne 2 ou la colonne B).

  • Key1 spécifie la colonne par laquelle trier (par exemple, la colonne 2).
  • Order1 spécifie l’ordre du tri. xlAscending trie par ordre croissant. Utilisez xlDescending si vous voulez trier par ordre décroissant.
  • Header:=xlYes signifie que la première ligne contient des en-têtes et ne doit pas être triée avec les données.

plageDeDonnees.Sort Key1:=ws.Cells(1, colonneDeTri), Order1:=xlAscending, Header:=xlYes
5. Message de Fin :
Une fois le tri effectué, une boîte de message informera l’utilisateur que le tri est terminé.

MsgBox "Données triées par la colonne " & colonneDeTri, vbInformation
Personnalisations

  • Trier par Plusieurs Colonnes :
    Vous pouvez trier par plusieurs colonnes en étendant la méthode
    Sort. Par exemple, vous pouvez ajouter Key2 pour une colonne secondaire de tri.

plageDeDonnees.Sort Key1:=ws.Cells(1, colonneDeTri), Order1:=xlAscending, _Key2:=ws.Cells(1, 3), Order2:=xlDescending, Header:=xlYes

  • Trier par Ordre Décroissant :
    Changez
    Order1:=xlAscending en Order1:=xlDescending si vous voulez trier la plage en ordre décroissant.

plageDeDonnees.Sort Key1:=ws.Cells(1, colonneDeTri), Order1:=xlDescending, Header:=xlYes

  • Ajustement Dynamique de la Plage :
    La plage s’ajuste automatiquement en fonction des données, ce qui signifie que si vous ajoutez ou supprimez des lignes, le code s’en chargera sans modifications supplémentaires.

Conclusion
Ce code vous permet de créer un mécanisme de tri dynamique qui s’ajuste automatiquement à la plage de données de votre feuille de calcul. Il vous suffit de spécifier la colonne de tri et si vous souhaitez un ordre croissant ou décroissant. Cela rend le code très flexible pour différents ensembles de données dans Excel.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x