web-dev-qa-db-fra.com

Tri des données de feuille de calcul par valeurs de colonne à l'aide d'Excel VBA

J'ai le prochain formulaire utilisateur développé dans vba, qui prend les informations d'une feuille de calcul pour afficher les informations

enter image description here

Je veux commander toutes les informations de manière aphabétique par segment, voici le code:

Function llenarDatosTabla()

    Dim vList As Variant
    Dim ws As Worksheet: Set ws = Worksheets(BD_PRODXSIST)

    ListBox1.Clear

    With ws
        If (IsEmpty(.Range("AA2").Value) = False) Then

            Dim ultimoRenglon As Long: ultimoRenglon = devolverUltimoRenglonDeColumna("A1", BD_PRODXSIST)

            vList = ws.Range("AA2:AA" & ultimoRenglon & ":AL2").Value

            If IsArray(vList) Then
                Me.ListBox1.List = vList
            Else
                Me.ListBox1.AddItem (vList)
            End If

        End If

        Me.ListBox1.ListIndex = -1

    End With




    Set vList = Nothing
    Set ws = Nothing
End Function

comment le faire trié par colonne 'AD' (SEGMENTO) ???

8
Jesus

Vous pouvez trier votre feuille de calcul Excel dans l'ordre croissant à l'aide de l'instruction VBA comme suit:

Columns("A:XFD").Sort key1:=Range("AD:AD"), order1:=xlAscending, Header:=xlYes

Remarque: dans la plage de colonnes Columns("A:XFD") au lieu de XFD entrez la dernière colonne utilisée correspondant à votre cas, par ex. Columns("A:DD").

J'espère que cela vous aidera.

11
Alexander Bell

Pour trier un tableau de données, utilisez Noms Excel conjointement avec la fonction CurrentRegion. Ceci est moins risqué que les références de colonne codées en dur et peut être effectué en deux étapes simples.

La raison pour laquelle il est préférable de spécifier des colonnes est que si vous vous trompez ou qu'elles changent plus tard, vous brouillerez vos données! Lorsque vous effectuez le tri, les cellules de toutes les colonnes omises restent où elles se trouvent, faisant partie des mauvaises lignes. Et c'est exactement ce qui se passera si vous ajoutez d'autres colonnes plus tard, sauf si vous pensez à mettre à jour votre VBA.

Voici les deux étapes simples pour utiliser cette approche. Pour cet exemple, j'ai choisi une table de données avec quatre colonnes et quatre lignes:

enter image description here

Nous allons trier par COL3 décroissant. Les cellules des trois autres colonnes partagent des valeurs identiques, ce qui nous permet de vérifier facilement qu'elles restent toutes avec les bonnes lignes.

Étape 1: choisissez une cellule dans le tableau de données qui ne sera probablement jamais supprimée, comme l'en-tête d'une colonne que vous avez l'intention de rendre permanente, et définissez un nom pour cette cellule. Vous pouvez définir le nom en sélectionnant la cellule et en tapant directement dans la liste déroulante Nom d'Excel au-dessus de la feuille de calcul. Ici, j'ai utilisé le nom RegionTag:

enter image description here

Immédiatement, CurrentRegion peut référencer la table de données entière juste à partir de cela. Vous pouvez le voir en action si vous codez une ligne de VBA pour sélectionner la table:

Range("RegionTag").CurrentRegion.Select

Voici le résultat:

enter image description here

C'est juste pour l'illustration, montrant la puissance de la combinaison Name/CurrentRegion. Nous n'avons pas besoin de sélectionner la table pour la trier.

Étape 2: définissez un deuxième nom, cette fois pour la colonne que vous souhaitez trier:

enter image description here

Assurez-vous que le nom fait référence à la colonne entière, sélectionnée en cliquant sur l'en-tête de colonne, plutôt qu'à une plage de cellules de la colonne.

C'est ça! Une fois ces deux noms définis, nous pouvons trier le tableau de données sans nous préoccuper de ses lignes et colonnes, même si d'autres sont ajoutés ultérieurement:

Range("RegionTag").CurrentRegion.Sort _
    key1:=Range("SortCol"), order1:=xlDescending, Header:=xlYes

Voici notre tableau de données trié à l'aide de la déclaration ci-dessus:

enter image description here

5
Reg Edit