Boucle référant à plusieurs feuilles

Bonjour,

J'ai une macro qui fonctionne, mais uniquement pour la dernière feuille.

    Dim h As Long
      Dim TCD As Worksheet
    Set TCD = Worksheets("TCD")
AR:
    On Error GoTo AR
    h = InputBox("Saisissez le nombre des mois (à part le mois actuel) à traiter ?")
    On Error GoTo 0

    For t = 0 To h
    For k = h + 2 To 2 Step -1
    TCD.Cells(1, k).Value = Sheets(ActiveSheet.Index - t).Range("K5")
    t = t + 1
    Next
    Next

    For t = 0 To h
    For l = 0 To h
    For k = h + 2 To 2 Step -1
    For i = 2 To TCD.Cells(Rows.Count, "A").End(xlUp).Row
    TCD.Cells(i, k).Value = Int(Application.WorksheetFunction.SumIf(Sheets(ActiveSheet.Index - t).Range("I6:I65536"), TCD.Cells(i, 1), Sheets(ActiveSheet.Index - l).Range("K6:K65536")))
    t = t + 1
    l = l + 1
    Next
    Next
    Next
    Next
    

Bonjour,

a première vue, je dirais qu'il y a un problème de logique, les instructions t=t+1 et l=l+1 me paraissent très bizarre dans une boucle for t et for l

que cherches-tu à faire dans ces boucles ? Peux-tu nous mettre ton fichier ? et les explications ?

Il me faut un boucle qui facilitera l'opération suivante :

  For i = 2 To d
    TCD.Cells(i, 2).Value = Int(Application.WorksheetFunction.SumIf(Sheets(ActiveSheet.Index - 3).Range("I6:I65536"), TCD.Cells(i, 1), Sheets(ActiveSheet.Index - 3).Range("K6:K65536")))
    TCD.Cells(i, 3).Value = Int(Application.WorksheetFunction.SumIf(Sheets(ActiveSheet.Index - 2).Range("I6:I65536"), TCD.Cells(i, 1), Sheets(ActiveSheet.Index - 2).Range("K6:K65536")))
    TCD.Cells(i, 4).Value = Int(Application.WorksheetFunction.SumIf(Sheets(ActiveSheet.Index - 1).Range("I6:I65536"), TCD.Cells(i, 1), Sheets(ActiveSheet.Index - 1).Range("K6:K65536")))
    TCD.Cells(i, 5).Value = Int(Application.WorksheetFunction.SumIf(Sheets(ActiveSheet.Index - 0).Range("I6:I65536"), TCD.Cells(i, 1), Sheets(ActiveSheet.Index - 0).Range("K6:K65536")))
    Next

bonjour,

une proposition

For i = 2 To d
 For k = 2 To 5
    TCD.Cells(i, k).Value = Int(Application.WorksheetFunction.SumIf(Sheets(ActiveSheet.Index - (5 - k)).Range("I6:I65536"), TCD.Cells(i, 1), Sheets(ActiveSheet.Index - (5 - k)).Range("K6:K65536")))
 Next k
Next i

ça marche

Merci

Rechercher des sujets similaires à "boucle referant feuilles"