Utilisation d'un indice dans un Range
Bonjour,
Je dois trier un classeur excel selon une colonne, mais ce classeur ne fait malheureusement pas toujours la même taille en termes de ligne.
J'ai donc setup une macro qui calcule le nombre de lignes de l'excel, appelons l'indice i.
Le sort fields se fait sur la range "H2:H" & i
Le sort se fait sur la range "A1:J" & i
Exemple i = 350 : "H2:H350" et "A1:J350"
J'ai logiquement créé deux strings : "H2:H" et "A1:J" auxquels je concatène i une fois calculé.
Sauf que rien n'y fait, en espionnant la valeur de mes strings, au lieu d'avoir par exemple "H2:H350", j'ai "H2:H 350" ce qui fait planter la suite du programme.
J'ai même essayé de supprimer l'espace créé avec .Trim, mais il semble artificiel et ne se supprime pas.
Peut-être n'ai-je pas la bonne approche ?
Merci beaucoup de votre aide, je mets mon code ci-dessous
Antdec
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
Sub Tri_prospect()
'
' Tri_prospect Macro
Dim i As Integer
i = 1
While Worksheets(1).Cells(i, 1).Value <> ""
i = i + 1
Wend
Dim interv1, interv2 As String
interv1 = Application.WorksheetFunction.Trim("H2:H" & Str(i))
interv2 = Application.WorksheetFunction.Trim("A1:J" & Str(i))
Cells.Select
ActiveWorkbook.Worksheets(1).Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets(1).Sort.SortFields. _
Add2 Key:=Range(interv1), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(1).Sort
.SetRange Range(interv2)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub |