Table des matières
Pour trier dans Excel avec VBA vous devez appliquer le Range.Sort Dans cet article, nous allons vous montrer comment trier la colonne dans Excel avec l'option Range.Sort méthode de VBA .
Télécharger le cahier d'exercices
Vous pouvez télécharger le classeur Excel d'entraînement gratuit à partir d'ici.
Trier une colonne avec VBA.xlsm
Méthode Range.Sort dans Excel VBA
Range.Sort méthode dans VBA trie une plage de valeurs dans Excel. Ici Gamme est une variable objet qui spécifie la plage de cellules que nous voulons trier par ordre croissant ou décroissant.
Vous trouverez ci-dessous les paramètres que vous devez connaître lorsque vous travaillez avec cette méthode.
Paramètre | Obligatoire/ Facultatif | Type de données | Description |
---|---|---|---|
Clé | En option | Variante | Spécifie la plage ou la colonne dont les valeurs doivent être triées. |
Commandez | En option | XlSortOrder | Spécifie l'ordre dans lequel le tri sera effectué.
|
En-tête | En option | XlYesNoGuess | Spécifie si la première ligne contient des en-têtes ou non.
|
4 méthodes de mise en œuvre de VBA pour trier une colonne dans Excel
Dans cette section, vous saurez comment trier une seule colonne avec et sans en-tête , plusieurs colonnes avec et sans en-tête et comment trier en double-cliquant simplement sur l'en-tête d'une colonne dans Excel.
1. Embed VBA pour trier une seule colonne sans en-tête dans Excel
Si vous voulez trier une seule colonne dans votre feuille de calcul Excel avec VBA puis suivez les étapes ci-dessous.
C'est notre colonne que nous allons trier avec VBA code.
Des pas :
- Appuyez sur Alt + F11 sur votre clavier ou allez dans l'onglet Développeur -> ; Visual Basic pour ouvrir Éditeur Visual Basic .
- Dans la fenêtre pop-up du code, dans la barre de menu, cliquez sur Insertion -> ; Module .
- Copiez le code suivant et collez-le dans la fenêtre de code.
Sub SortSingleColumnWithoutHeader() Range("B5:B15").Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Votre code est maintenant prêt à être exécuté.
Ici,
- Clé1:=Range("B5") → Spécifié B5 pour que le code sache quelle colonne trier.
- Ordre1:=xlAscending → Spécifier la commande comme xlAscending pour trier la colonne dans l'ordre croissant. Si vous voulez trier la colonne dans l'ordre décroissant, écrivez xlDescendant à la place.
- En-tête:= xlNo → Comme notre colonne n'a pas d'en-tête, nous l'avons spécifiée avec la balise xlNo option.
- Appuyez sur F5 sur votre clavier ou dans la barre de menu, sélectionnez Run -> ; Run Sub/UserForm Vous pouvez également cliquer sur le bouton petite icône Play dans la barre de sous-menu pour exécuter la macro.
Vous verrez que votre colonne est maintenant triés par ordre croissant .
Notez qu'ici, nous avons défini manuellement la plage de données en tant que Range("B5:B15") .
Si vous souhaitez modifier les données en ajoutant ou en supprimant des valeurs, vous pouvez mettre en œuvre le code suivant qui effectue une mise à jour automatique en fonction des cellules de l'ensemble de données.
Sub SortSingleColumnWithoutHeader() Range("B5", Range("B5").End(xlDown)).Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlNo End Sub
Remarquez qu'au lieu de définir la plage manuellement par Range("B5:B15") nous avons écrit, Gamme( "B5", Range("B5"). End(xlDown)) .
Cela permet de trier la colonne en fonction de la dernière cellule remplie consécutivement. S'il y a des cellules vides, les données ne seront prises en compte que jusqu'à la première cellule vide.
Lire la suite : VBA pour trier un tableau dans Excel (4 méthodes)
2. insérer une macro VBA pour trier une seule colonne avec en-tête
Dans la section précédente, nous avions un ensemble de données d'une seule colonne sans en-tête, mais maintenant nous avons a colonne avec un en-tête .
Cette fois-ci, nous allons apprendre comment le trier avec Macro VBA .
Des pas :
- De la même manière que précédemment, ouvrez Éditeur Visual Basic de la Développeur et Insérer a Module dans la fenêtre de code.
- Dans la fenêtre de code, copiez le code suivant et collez-le.
Sub SortSingleColumnWithHeader() Range("B5:B16").Sort Key1:=Range("B5"), Order1:=xlDescending, Header:=xlYes End Sub
Votre code est maintenant prêt à être exécuté.
Ici,
- Clé1:=Range("B5") → Spécifié B5 pour que le code sache quelle colonne trier.
- Ordre1:=xlDescending → Cette fois-ci, nous allons trier la colonne par ordre décroissant, donc spécifié l'ordre comme suit . xlDescendant .
- En-tête:= xlOui → Comme notre colonne a un en-tête cette fois-ci, nous l'avons spécifié avec la balise xlOui option.
- Exécuter ce code et vous obtiendrez le colonne avec en-tête triée par ordre décroissant .
Lire la suite : Comment trier une ListBox avec VBA dans Excel (Guide complet)
Lectures similaires :
- Comment trier les adresses IP dans Excel (6 méthodes)
- [Résolu !] Le tri d'Excel ne fonctionne pas (2 solutions)
- Comment ajouter un bouton de tri dans Excel (7 méthodes)
- Trier une plage en utilisant VBA dans Excel (6 exemples)
- Comment trier par nom dans Excel (3 exemples)
3. macro VBA pour trier plusieurs colonnes avec ou sans en-tête
Vous pouvez également triez plusieurs colonnes dans votre ensemble de données avec un code VBA.
Des pas :
- Comme nous l'avons montré précédemment, l'ouverture Éditeur Visual Basic de la Développeur et Insérer a Module dans la fenêtre de code.
- Dans la fenêtre de code, copiez le code suivant et collez-le.
Sub SortMultipleColumnsWithHeaders() With ActiveSheet.Sort .SortFields.Add Key:=Range("B4"), Order:=xlAscending .SortFields.Add Key:=Range("C4"), Order:=xlAscending .SetRange Range("B4:D15") .Header = xlYes .Apply End With End Sub
Votre code est maintenant prêt à être exécuté.
Ici,
.SortFields.Add Key:=Range("B4"), Order:=xlAscending
.SortFields.Add Key:=Range("C4"), Order:=xlAscending
Par ces deux lignes, nous définissons Cellule B4 et C4 pour trier les deux colonnes qui leur sont associées sur ordre ascendant .
Comme nous avons des en-têtes dans notre jeu de données, nous avons spécifié En-tête = xlYes sinon nous aurions écrit En-tête = xlNo dans le code.
- Exécuter ce code et vous obtiendrez le colonnes avec en-tête triées par ordre croissant .
4. Macro pour trier des données en double-cliquant sur l'en-tête dans Excel
Si vous voulez trier facilement les données en utilisant simplement double-cliquer sur l'en-tête vous pouvez le faire avec VBA code.
Des pas :
- Cliquez à droite sur sur le onglet de feuille .
- Dans la liste d'options qui apparaît, cliquez sur Afficher le code .
- La fenêtre de code apparaîtra, copiez le code suivant et collez-le dedans.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim iRange As Range Dim iCount As Integer iCount = Range("B4:D15").Columns.Count Cancel = False If Target.Row = 4 And Target.Column <= iCount Then Cancel = True Set iRange = Range(Target.Address) Range("B4:D15").Sort Key1:=iRange, Header:=xlYes End If End Sub
- Sauvez le code.
- Maintenant, retournez à la feuille de travail qui vous intéresse et si vous double-cliquez sur les en-têtes vous verrez que les colonnes se réorganisent.
Lire la suite : Comment trier et filtrer des données dans Excel (un guide complet)
Les choses à retenir
- Vous pouvez créer une plage nommée et l'utiliser à la place lorsque vous transmettez une plage de références de cellules à l'intérieur de l'instruction Trier Par exemple, si vous voulez trier la plage A1:A10 au lieu de le passer à chaque fois dans le code, vous pouvez créer une plage nommée, comme " SortRange " et l'utiliser avec le Range.Sort méthode comme Range("SortRange") .
- Si vous n'êtes pas sûr que votre jeu de données ait des en-têtes ou non, vous pouvez laisser le système le déterminer en utilisant la fonction xlGuess paramètre.
Conclusion
Cet article vous a montré comment trier la colonne dans Excel VBA J'espère que cet article vous a été très utile. N'hésitez pas à me demander si vous avez des questions sur le sujet.