Tri d'une feuille excel de longueur variable en visual basic

Résolu
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 - 27 août 2024 à 16:49
yg_be Messages postés 23171 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 septembre 2024 - 27 août 2024 à 18:07

Bonjour,

J'utilise une procédure pour trier une feuille Excel dont j'ai mis la longueur "en dur" dans une RANGE(). En l'occurence 1500 lignes.

Sub Trier_sur_Serial()

    ‘ Dim derLig As Integer
    ‘Sheets("Transactions").Select
    ‘Sheets("Transactions").Activate  
    ‘derLig = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1


    Columns("A:A").Select
    Range("A2").Activate
    ActiveWorkbook.Worksheets("Transactions").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Transactions").Sort.SortFields.Add2 Key:=Range( _
        "A3:A1500"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Transactions").Sort
        .SetRange Range("A2:H1500")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Je souhaite maintenant passer la valeur de l'entier derLig obtenu en début de routine (4 premières lignes en commentaires) à ma Range à la place de A1500 et H1500.

Pouvez vous m'aider car je ne trouve pas la syntaxe?

Merci par avance.

Claude
Macintosh / Safari 16.5.2

A voir également:

3 réponses

yg_be Messages postés 23171 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 septembre 2024 1 532
27 août 2024 à 17:15

bonjour,

à la place de

"A3:A1500"

tu peux écrire

"A3:A"+cstr(derLig)
0
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 1
27 août 2024 à 17:24

Merci yg_be. 

0
yg_be Messages postés 23171 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 septembre 2024 1 532
Modifié le 27 août 2024 à 18:08

plus propre:

derLig = Sheets("Transactions").Cells(Sheets("Transactions").Rows.Count, 1).End(xlUp).Row + 1

sinon:

derLig = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row + 1

Il est important de préciser la feuille aussi devant "Rows".

0