Bonjour,
Je maitrise mal la notion RANGE() CELLS()! J'ai développé une petite macro pour trier un tableau, celle ci fonctionne bien, mais je dois la reproduire une vingtaine de fois (tableaux toutes les 9 colonnes), j'ai donc opté pour une routine mais je me mélange les pédales entre les range() et cells() (erreur d"exécution 1004 la méthode range a échoué).
J'ai beau retirer, changer range en cells je n'y arrive pas.
Avez vous une idée?

Merci pour votre aide
Bonne soirée
Pascal

macro de départ:
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
 
Sub CLST1P1()
'
' CLS TOUR1 POULE1
'
Application.ScreenUpdating = False
Application.EnableEvents = False ' => désactive les événements
Call DEpro
 
    Sheets("TOUR1").Select
    Range("D6:H9").Select
    Selection.Copy
    Range("D17").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
 
    Range("D17:H20").Sort key1:=Range("E17"), key2:=Range("H17"), key3:=Range("F17"), order1:=xlDescending, Header:=xlYes
 
    Range("E17:H20").ClearContents
    Range("F13").Select
Application.EnableEvents = True ' => désactive les événements
 
 
End Sub
Ma routine:
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
29
30
31
32
Sub CLST1()
'
' CLS TOUR1 POULE1
'
Application.ScreenUpdating = False
Application.EnableEvents = False ' => désactive les événements
Call DEpro

'''''''''''''''''''''''''''''''''''''''''
Dim I As Integer
Dim L1 As Integer

L1 = 4
Sheets("TOUR1").Select
  For I = 1 To 10
      Range(Cells(6, L1), Cells(9, L1 + 4)).Select
      Selection.Copy
      Cells(17, L1).Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    
        Range(Cells(17, L1), Cells(20, L1 + 4)).Sort key1:=RANGE(Cells(17, L1 + 1)), key2:=Range(Cells(17, L1 + 4)), key3:=Range(Cells(17, L1 + 2)), order1:=xlDescending, Header:=xlYes
  
    Range(Cells(17, L1 + 1), Cells(20, L1 + 4)).ClearContents
    Cells(13, L1 + 2).Select

L1 = L1 + 9
  Next
           
End Sub