Bonjour à tous,

j'utilise cette boucle afin d'éviter de répéter mon code.

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
Dim LastLig As Long
Dim i As Byte
Application.ScreenUpdating = False
 
With Sheets("VENTE")
   LastLig = .Cells(Rows.Count, "AJ").End(xlUp).Row
   With .Range("Q5")
      .AutoFilter
      .AutoFilter Field:=17, Criteria1:="Wave"
      .AutoFilter Field:=7, Criteria1:="EL01"
      .AutoFilter Field:=3, Criteria1:="1"
      .AutoFilter Field:=4, Criteria1:="2010"
   End With
   For i = 0 To 5
      .Range("E5").AutoFilter Field:=5, Criteria1:=i + 7
      Sheets("Elsa").Range("E32").Offset(0, i).Value = Application.Sum(.Range("T5:T" & LastLig).SpecialCells(xlCellTypeVisible))
   Next i
   .Range("E5").AutoFilter
End With
Par contre j'ai différentes valeurs à calculer pour le critère 17 et avec différentes feuilles.

Donc au lieu de:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Sheets("Elsa").Range("K244").Offset(0, i).Value = Application.Sum(.Range("T5:T" & LastLig).SpecialCells(xlCellTypeVisible))
   Next i
j'aimerais pouvoir mettre une variable à la place du nom de la feuille pour m'éviter de le répéter tout le long.
ex :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Dim s As String
s = "Elsa"
Sheets("s").Range
etc..Mais le problème c'est que ça me sort toujours une erreur et que ça n'éxécute pas

Comment peut-on remplacer le nom d'une feuille par une variable String ?

Merci d'avance à tous pour votre aide