Comment trier une plage en utilisant VBA dans Excel (6 exemples)

  • Partage Ça
Hugh West

Savoir comment trier une plage à l'aide de VBA dans Excel permet d'économiser du temps et des efforts dans nos calculs quotidiens. Bien qu'Excel fournisse une fonction de tri par défaut, en utilisant la fonction de tri de VBA, il est possible de trier les plages. Range.Sort méthode nous avons accès à plusieurs paramètres pour trier un ensemble de données avec plus d'options que d'habitude.

Télécharger le cahier d'exercices

Téléchargez ce cahier d'exercices pour vous entraîner pendant que vous lisez cet article.

Trier une plage dans Excel.xlsm

Introduction à l'instruction Range.Sort en Excel VBA

Objectif : Pour trier une plage de données de cellules.

Syntaxe :

expression Trier ( Clé1 , Ordre 1 , Clé2 , Type , Ordre 2 , Clé3 , Commande3 , En-tête , CommandePersonnalisée , MatchCase , Orientation , SortMethod , DataOption1 , DataOption2 , DataOption3 )

Ici, le expression représente un Gamme c'est-à-dire une cellule, une ligne, une colonne ou une sélection de cellules.

Arguments :

Nous devons fournir trois les principaux paramètres de l Range.Sort méthode. Ils sont...

Clé - La plage de cellules d'une ou plusieurs colonnes que nous devons trier.

Commandez - Indiquez l'ordre de tri, ascendant ou descendant.

En-tête - Déclare si les colonnes à trier ont un en-tête ou non.

6 exemples pour trier une plage dans Excel VBA

Dans cet article, nous utiliserons comme jeu de données une liste de noms de personnes avec leur date de naissance et leur âge. Nous appliquerons différentes méthodes pour trier le jeu de données. Parcourons l'article et pratiquons pour maîtriser ces méthodes.

1. Trier une plage à une colonne avec Excel VBA

Dans cet exemple, nous allons trier les gens de le plus ancien à le plus jeune Suivons les étapes de l'utilisation de l'outil de gestion de l'information. Gamme . Trier méthode qui trier le site Colonne d'âge sur ordre décroissant .

Des pas :

  • Allez à la Onglet Développeur dans le Ruban Excel à cliquez sur sur le Visual Basic

  • Choisissez ensuite le Option de module de la Onglet Insertion pour ouvrir un nouveau module .

Maintenant, nous allons mettre notre code dans trier le site Âge gamme de colonnes.

1.1 Colonne avec en-tête

Mettez le code suivant dans l'éditeur de code visuel.

 Sub SortRange() Range("D4:D11").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlYes End Sub 

Appuyez sur F5 ou cliquez sur le bouton Exécuter pour exécuter le code.

Explication :

Dans le code ci-dessus, nous avons mis-

Expression (objet Range)=Range("D4:D11") ; le site colonne d'âge avec un en-tête sur cellule D4 et valeurs sur D5:D11.

Clé = Range("D4") ; le site clé pour tri.

Order= xlDescending ; comme nous voulons trier valeurs de le plus grand à le plus bas nous fixons le ordre de tri comme en descendant.

En-tête =xlOui ; Dans la capture d'écran suivante, nous pouvons voir que l'option jeu de données a un en-tête pour chacun des colonnes.

1.2 Colonne sans en-tête

Mettez le code suivant dans l'éditeur de code visuel.

 Sub SortRange() Range("D4:D10").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Header:=xlNo End Sub 

Appuyez sur F5 ou cliquez sur le bouton Exécuter pour exécuter le code.

Explication :

Dans le code ci-dessus, nous avons mis-

Expression (objet Range)=Range("D4:D10") ; le site colonne d'âge sans un en-tête a valeurs sur D4:D10.

Clé = Range("D4") ; le site clé pour tri.

Order= xlDescending ; comme nous le souhaitons trier valeurs de le plus grand à le plus bas nous fixons le ordre de tri comme en descendant.

En-tête =xlNo ; Dans la capture d'écran suivante, nous pouvons voir que l'option jeu de données n'a pas en-tête.

Contenu connexe : Comment trier des colonnes dans Excel sans mélanger les données (3 façons)

2. Utilisation du code VBA pour trier une plage de plusieurs colonnes dans Excel

Pour afficher le tri dans plusieurs colonnes nous devons modifier notre jeu de données un peu. Nous inséré quelques nouveau rangées Dans l'ensemble de données modifié, les lignes 7, 8, et 9 ont le même pour les date de naissance et âges mais trois noms différents . ces noms sont pas dans n'importe quel ordre spécifique de monter ou de descendre.

Dans cet exemple, nous allons classer les noms dans l'ordre suivant ordre ascendant Exécutons le code suivant dans l'éditeur Visual Basic :

 Sub SortRange() Range("B4:D12").Sort Key1:=Range("D4"), _ Order1:=xlDescending, _ Key2:=Range("B4"), _ Order2:=xlAscending, _ Header:=xlYes End Sub 

Explication :

Dans la capture d'écran ci-dessus, nous pouvons voir que les âges en colonne D sont trié sur descendant Nous avons ajouté deux paramètres supplémentaires dans notre code précédent.

Clé2 : =Range("B4") , la clé pour trier les noms.

Ordre2 : =xlAscending le commander pour raccourcir les noms .

Par conséquent, nous voyons le noms sur rangs 7, 8 et 9 sont maintenant par ordre alphabétique trié en ascendant l'ordre.

Dans la capture d'écran suivante, nous avons modifié l'élément valeur de la Paramètre de l'ordre 2 à trier le site noms sur descendant l'ordre.

Lire la suite : Comment trier plusieurs colonnes dans Excel (5 approches rapides)

3. Double-cliquer sur l'en-tête pour trier une plage de colonnes dans Excel VBA

La fonction de tri par défaut d'Excel ne permet pas de trier les valeurs d'une colonne par double-clic sur le site en-tête de colonne Mais en utilisant le code VBA, nous pouvons le faire. Illustrons cette fonctionnalité en appliquant le code suivant.

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim KeyRange As Range Dim ColCount As Integer ColCount = Range("A1:C8").Columns.Count Cancel = False If Target.Row = 1 And Target.Column <= ColCount Then Cancel = True Set KeyRange = Range(Target.Address) Range("A1:C8").Sort Key1:=KeyRange, Header:=xlYes End If End Sub 

Dans ce code, nous avons utilisé le Événement BeforeDoubleClick à désactiver le double habituel - cliquez sur qui consiste à lancer le édition Avec cet événement en cours d'exécution, si nous double - cliquez sur sur l'un des en-têtes de colonne il trie les données de la colonne dans ordre ascendant .

Lire la suite : VBA pour trier une colonne dans Excel (4 méthodes)

Lectures similaires :

  • Comment ajouter un bouton de tri dans Excel (7 méthodes)
  • Trier une liste unique dans Excel (10 méthodes utiles)
  • Comment utiliser la fonction de tri dans Excel VBA (8 exemples pertinents)
  • Trier les doublons dans Excel (colonnes et lignes)
  • Tri aléatoire dans Excel (Formules + VBA)

4. Trier une plage de colonnes en fonction de la couleur d'arrière-plan à l'aide d'Excel VBA

Nous pouvons trier une série de cellules dans une colonne. basé sur sur leur couleur de fond Pour ce faire, nous devons ajouter a paramètre nommé SortOn qui a un valeur xlSortOnCellColor Pour illustrer le tri, nous avons d'abord défini différents types d'indicateurs de performance. couleurs d'arrière-plan aux rangs de notre jeu de données .

Puis dans l'éditeur de code de base visuel copie le code suivant et appuyez sur F5 pour l'exécuter.

 Sub SortRangeByBackgroundColor() ActiveWorkbook.Worksheets("background").Sort.SortFields.Add2 Key:=Range("B4"), _ SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("background").Sort .SetRange Range("B4:D10") .Apply End With End Sub 

Dans la capture d'écran suivante, nous pouvons voir l'image de l'utilisateur. jeu de données trié en fonction de leur couleur de fond.

Explication :

  • Dans cet exemple, nous avons nommé le feuille de travail " arrière-plan "Donc, dans le code, nous mettons " arrière-plan " comme notre nom de la feuille de calcul active.
  • Nous mettons B4 comme le clé et B4:D10 comme le gamme Le code va trier les données en fonction de la clé.
  • Comme nous n'avons pas spécifié le paramètre d'en-tête le code s'exécute pour l'option par défaut pas d'en-tête.
  • Nous avons fixé le commander comme ascendant, donc il a trié les données des valeurs les plus basses aux plus hautes. .

Lire la suite : Comment trier par couleur dans Excel (4 critères)

5. Appliquer le code VBA pour trier une série de colonnes en fonction de la couleur de la police

En appliquant le code VBA, nous pouvons trier notre ensemble de données sur la base de leur couleur de la police D'abord, nous devons colorier des rangs différents pour illustrer l'exemple.

Appliquez le code ci-dessous pour trier l'ensemble de données sur la base de la couleur de la police.

 Sub SortRangeByFontColor() ActiveWorkbook.Worksheets("fontcolor").Sort.SortFields.Add Range("B4"), _ xlSortOnFontColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(0, 0, 0) With ActiveWorkbook.Worksheets("fontcolor").Sort .SetRange Range("B4:D11") .Header = xlYes .Orientation = xlTopToBottom .Apply End With End Sub 

Explication :

  • Dans cet exemple, nous avons nommé le feuille de travail " fontcolor "Donc, dans le code, nous mettons " fontcolor " comme notre nom de la feuille de calcul active.
  • Nous mettons B4 comme le clé et B4:D11 comme le gamme Le code va trier les données en fonction de la clé.
  • Dans cet exemple, nous avons également spécifié le paramètre d'en-tête en tant que xlOui .
  • Ici, nous définissons le commander comme ascendant, donc il a trié les données des valeurs les plus basses aux plus hautes. .
  • La valeur de la SortOn Le paramètre est
  • Le site paramètre d'orientation détient la valeur xlTopToBottom car il est obligatoire.
  • Couleur à trier est en termes de RGB qui a une valeur de 0 à 255 .

Lire la suite : Comment trier deux colonnes dans Excel en fonction de la correspondance (correspondance exacte et partielle) ?

6. Modifier l'orientation d'une plage de tri à l'aide d'Excel VBA

Utilisation de la orientation nous pouvons changer la façon dont nous voulons trier les données. Dans cet exemple, nous avons transposé notre jeu de données pour trier il horizontalement .

Mettons le code suivant dans l'éditeur Visual Basic et appuyons sur F5 pour l'exécuter.

 Sub Orientation() Range("B4:H6").Sort Key1:=Range("B6"), _ Order1:=xlAscending, _ Orientation:=xlSortRows, _ Header:=xlYes End Sub 

Ici, nous trié les données basées sur le ligne d'âge sur ascendant commande de gauche à droite Dans le code, nous définissons le orientation comme xlSortRows .

Contenu connexe : Comment trier automatiquement plusieurs colonnes dans Excel (3 façons)

Les choses à retenir

  • Le site Paramètre SortOn que nous avons utilisé pour trier l'éventail de colonnes basé sur couleur de fond et couleur de la police ne peut être utilisé que par un objet de la feuille de calcul Nous ne pouvons pas l'utiliser avec un objet de la gamme .
  • Le site Événement BeforeDoubleClick trie les données uniquement dans ascendant.

Conclusion

Nous savons maintenant comment trier une plage en utilisant VBA dans Excel. Nous espérons que cela vous encouragera à l'utiliser avec plus de confiance. Si vous avez des questions ou des suggestions, n'oubliez pas de les poser dans la boîte de commentaires ci-dessous.

Hugh West est un formateur et analyste Excel très expérimenté avec plus de 10 ans d'expérience dans l'industrie. Il est titulaire d'un baccalauréat en comptabilité et finance et d'une maîtrise en administration des affaires. Hugh a une passion pour l'enseignement et a développé une approche pédagogique unique qui est facile à suivre et à comprendre. Sa connaissance approfondie d'Excel a aidé des milliers d'étudiants et de professionnels du monde entier à améliorer leurs compétences et à exceller dans leur carrière. Grâce à son blog, Hugh partage ses connaissances avec le monde, offrant des tutoriels Excel gratuits et une formation en ligne pour aider les particuliers et les entreprises à atteindre leur plein potentiel.