Trier les feuilles de calcul dans un classeur à l’aide VBA dans Microsoft Excel
Dans cet article, nous avons fourni des détails sur la façon de trier les feuilles de calcul dans le classeur dans l’ordre croissant ou décroissant, en fonction du nom de la feuille de calcul.
Dans le classeur joint, il y a deux modules: – Module1 contient la macro «SortWorksheets» qui est affectée au bouton «Soumettre» sur la feuille «Macro».
Cette macro trie toutes les feuilles de calcul sauf la première feuille de calcul qui est la feuille principale nommée «Macro».
Lorsque l’utilisateur clique sur le bouton «Soumettre», toutes les feuilles après la feuille «Macro» seront triées par ordre croissant ou décroissant selon le choix de l’utilisateur dans la liste déroulante.
Module2 contient deux macros «AscendingSortOfWorksheets» et «DecendingSortOfWorksheets». Lors de l’exécution de la macro «AscendingSortOfWorksheets», il triera toutes les feuilles de calcul présentes dans le classeur dans l’ordre croissant. Lors de l’exécution de la macro «DecendingSortOfWorksheets», il triera toutes les feuilles de calcul présentes dans le classeur dans l’ordre décroissant.
Explication logique
L’algorithme de tri à bulles est utilisé pour trier les feuilles de calcul dans le classeur.
L’algorithme de tri à bulles compare chaque élément du tableau avec un autre élément du tableau et les échange selon qu’il faut trier par ordre croissant ou décroissant. À chaque étape, la valeur la plus petite ou la plus grande apparaîtra en haut du tableau. L’algorithme se répète jusqu’à ce que tous les éléments soient triés.
Dans cet article, notre objectif est de trier les feuilles de calcul du classeur par leur nom. Le classeur que nous utilisons se compose de différentes feuilles de calcul portant des noms tels que Tableau de bord financier, Ressources humaines et Tableau de bord des ventes.
Pour atteindre cet objectif, nous avons utilisé l’algorithme de tri à bulles pour trier les feuilles de calcul.
Explication du code
SortWorksheets Macro
Cette macro s’exécutera lorsque l’utilisateur cliquera sur le bouton d’envoi. Cette macro triera toutes les feuilles de calcul du classeur par leurs noms à l’exception de la première feuille de calcul du classeur. Selon la valeur sélectionnée par l’utilisateur dans la zone de liste déroulante, il triera les feuilles de calcul dans l’ordre croissant ou décroissant.
Pour ajouter une zone de liste déroulante, suivez les étapes ci-dessous: -. Allez dans l’onglet Développeur> Cliquez sur Insérer> Cliquez sur l’icône de la zone de liste déroulante sous le contrôle du formulaire
-
Cliquez avec le bouton droit sur la zone de liste déroulante et cliquez sur le contrôle du format.
-
Allez dans l’onglet de contrôle, attribuez l’élément et liez la zone de liste déroulante avec la cellule XFC1.
ComboBoxValue = Range (« XFC1 »). La zone de liste déroulante Valeur de la feuille de calcul « Macro » est liée à la cellule XFC1. Ainsi, pour obtenir la valeur de la cellule XFC1, la variable ComboBoxValue est utilisée.
Pour i = 2 To SCount – 1 FOR boucle commence par la variable i, valeur commençant à 2 car nous voulons exclure la première feuille de calcul du classeur du tri.
Si ComboBoxValue = 1, la condition IF est utilisée pour vérifier s’il faut trier par ordre croissant ou décroissant. Si la valeur de ComboBoxValue est 1, puis triez par ordre croissant sinon par ordre décroissant.
Feuilles de travail triées par ordre croissant
Feuilles de travail triées par ordre décroissant
AscendingSortOfWorksheets et DecendingSortOfWorksheets
Les macros AscendingSortOfWorksheets et DecendingSortOfWorksheets peuvent être exécutées en appuyant sur la touche de raccourci Alt + F8 ou Allez dans l’onglet Développeur> Cliquez sur Macro> sélectionnez la macro et cliquez sur Exécuter. Ils trieront toutes les feuilles de calcul présentes dans le classeur. Ces macros peuvent également être exécutées sur d’autres classeurs.
Feuilles de travail triées après l’exécution de la macro AscendingSortOfWorksheets
Feuilles de travail triées par ordre croissant DecendingSortOfWorksheets macro
Veuillez suivre ci-dessous pour le code
Sub AscendingSortOfWorksheets() 'Sort worksheets in a workbook in ascending order Dim SCount, i, j As Integer 'For disabling screen updates Application.ScreenUpdating = False 'Getting total no. of worsheets in workbook SCount = Worksheets.Count 'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure If SCount = 1 Then Exit Sub 'Using Bubble sort as sorting algorithm 'Looping through all worksheets For i = 1 To SCount - 1 'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position For j = i + 1 To SCount If Worksheets(j).Name < Worksheets(i).Name Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub Sub DecendingSortOfWorksheets() 'Sort worksheets in a workbook in descending order Dim SCount, i, j As Integer 'For disabling screen updates Application.ScreenUpdating = False 'Getting total no. of worsheets in workbook SCount = Worksheets.Count 'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure If SCount = 1 Then Exit Sub 'Using Bubble sort as sorting algorithm 'Looping through all worksheets For i = 1 To SCount - 1 'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position For j = i + 1 To SCount If Worksheets(j).Name > Worksheets(i).Name Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub
Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.
Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]