J'ai le prochain formulaire utilisateur développé dans vba, qui prend les informations d'une feuille de calcul pour afficher les informations
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) ???
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.
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:
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:
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:
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:
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: