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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager