XL2000 : Comment utiliser une Macro Visual Basic pour trier tableaux dans Excel

Traductions disponibles Traductions disponibles
Numéro d'article: 213818 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Dans Microsoft Excel 2000, il n'existe aucune méthode directe pour trier un tableau de valeurs avec un Microsoft Visual Basic pour applications macro ou procédure. Cet article décrit deux algorithmes différents que vous pouvez utiliser pour trier des tableaux : Tri de la sélection et la Bulle trier.

Plus d'informations

Microsoft fournit des exemples de programmation à des fins d'illustration uniquement, sans garantie expresse ou implicite, y compris, sans que cela soit limitatif, les garanties implicites de qualité marchande et/ou d'adéquation à un usage particulier. Cet article suppose que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du support technique Microsoft peuvent vous aider à comprendre la fonctionnalité d'une procédure particulière, mais ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques.
Si vous ne maîtrisez que partiellement la programmation, il convient contacter un partenaire certifié Microsoft ou les services de conseil Microsoft. Pour plus d'informations, visitez ces sites Web de Microsoft :

Microsoft certifié partners - https://partner.microsoft.com/global/30000104

Avis de Microsoft Services - http://support.microsoft.com/gp/advisoryservice

Pour plus d'informations sur les options de support technique disponibles et sur la façon de contacter Microsoft, reportez-vous au site Web de Microsoft à l'adresse suivante : http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Méthode 1: Sélection du tri

Même si un tri de la sélection est entre la plus simple des tris à programmer, elle tend à exécuter plus lentement que le tri Bubble sur tableaux de grande taille de données.

Pour effectuer une sélection d'un tableau comportant entre 1 et n nombre d'éléments, localisez l'élément le plus large de 1 à n. S'il s'agit pas d'élément n, échanger l'élément le plus large avec élément n. Ensuite, recherchez l'élément le plus large de 1 à n-1 et, s'il s'agit pas d'élément n-1, échanger l'élément le plus large avec élément n-1. Ensuite, recherchez l'élément le plus large de 1 à n-2 et, s'il s'agit pas d'élément n-2, l'élément le plus large avec élément n-2 d'exchange et ainsi de suite.

Voici un exemple d'un tri de sélection avec un tableau de type Variant de Visual Basic.
  1. Tapez ou collez le texte suivant dans une feuille de module : option base 1
    Function SelectionSort(TempArray As Variant)
        Dim MaxVal As Variant
        Dim MaxIndex As Integer
        Dim i, j As Integer
    
        ' Step through the elements in the array starting with the
        ' last element in the array.
        For i = UBound(TempArray) To 1 Step -1
    
            ' Set MaxVal to the element in the array and save the
            ' index of this element as MaxIndex.
            MaxVal = TempArray(i)
            MaxIndex = i
    
            ' Loop through the remaining elements to see if any is
            ' larger than MaxVal. If it is then set this element
            ' to be the new MaxVal.
            For j = 1 To i
                If TempArray(j) > MaxVal Then
                    MaxVal = TempArray(j)
                    MaxIndex = j
                End If
            Next j
    
            ' If the index of the largest element is not i, then
            ' exchange this element with element i.
            If MaxIndex < i Then
                TempArray(MaxIndex) = TempArray(i)
                TempArray(i) = MaxVal
            End If
        Next i
    
    End Function
    
    Sub SelectionSortMyArray()
        Dim TheArray As Variant
    
        ' Create the array.
        TheArray = Array(15, 8, 11, 7, 33, 4, 46, 19, 20, 27, 43, 25, 36)
    
        ' Sort the Array and display the values in order.
        SelectionSort TheArray
        For i = 1 To UBound(TheArray)
            MsgBox TheArray(i)
        Next i
    
    End Sub
    					
  2. Pour exécuter la macro, cliquez sur le menu Outils, pointez sur macro, puis cliquez sur macros.
  3. Sélectionnez la macro SelectionSortMyArray, puis cliquez sur exécuter.

Méthode 2: Bubble trier

Un tri Bubble est plus difficile à programmer que le tri de sélection, mais il a tendance à exécuter plus rapidement et plus efficacement avec les grandes baies de données.

Pour effectuer un tri en bulles, évaluer 1 pour les éléments n-1 dans le tableau où vous comparez chaque élément avec celui après lui (en d'autres termes, élément 1 est comparé à élément 2, élément 2 est comparé à élément 3 et ainsi de suite). Si un élément est supérieur à l'élément après celui-ci, ces deux éléments sont échangés. Continuez ce processus jusqu'à ce qu'il n'y ait aucun échanges plus d'éléments. Voici un exemple d'un tri en bulles avec un tableau de type Variant de Visual Basic.
  1. Tapez ou collez le code suivant dans une feuille de module : option base 1
    Function BubbleSort(TempArray As Variant)
        Dim Temp As Variant
        Dim i As Integer
        Dim NoExchanges As Integer
    
        ' Loop until no more "exchanges" are made.
        Do
            NoExchanges = True
    
            ' Loop through each element in the array.
            For i = 1 To UBound(TempArray) - 1
    
                ' If the element is greater than the element
                ' following it, exchange the two elements.
                If TempArray(i) > TempArray(i + 1) Then
                    NoExchanges = False
                    Temp = TempArray(i)
                    TempArray(i) = TempArray(i + 1)
                    TempArray(i + 1) = Temp
                End If
            Next i
        Loop While Not (NoExchanges)
    
    End Function
    
    Sub BubbleSortMyArray()
        Dim TheArray As Variant
    
        ' Create the array.
        TheArray = Array(15, 8, 11, 7, 33, 4, 46, 19, 20, 27, 43, 25, 36)
    
        ' Sort the Array and display the values in order.
        BubbleSort TheArray
        For i = 1 To UBound(TheArray)
            MsgBox TheArray(i)
        Next i
    End Sub
    					
  2. Pour exécuter la macro, cliquez sur le menu Outils, pointez sur macro, puis cliquez sur macros.
  3. Sélectionnez la macro SelectionSortMyArray, puis cliquez sur exécuter.
Remarque : les deux de ces exemples trier dans l'ordre croissant. Pour effectuer un tri de la sélection dans l'ordre décroissant, modifier ">"au"<» dans la ligne suivante de laFonction SelectionSort :
If TempArray(j) > MaxVal Then
				
pour effectuer un tri Bubble dans l'ordre décroissant, modifier ">» pour un" < "dans la ligne suivante de laFonction BubbleSort :
If TempArray(i) > TempArray(i + 1) Then
				

Propriétés

Numéro d'article: 213818 - Dernière mise à jour: jeudi 23 novembre 2006 - Version: 3.5
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Excel 2000 Standard
Mots-clés : 
kbmt kbdtacode kbhowto kbinfo kbprogramming KB213818 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 213818
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com