Bonjour,
j'ai la très mauvaise habitude de ne pas déclarer mes variables si ce n'est pas nécessaire. Je laisse VBA déterminer lui-même le type de variable en fonction du contexte.
voici quelques commentaires dans le code.
Sub creesynthèse()
' on supprime la feuille synthèse si elle existe
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Synthèse").Delete
On Error GoTo 0
Application.DisplayAlerts = True
' wss fait référence à la feuille synthèse
' on ajoute une feuille
Set wss = Worksheets.Add
' on la nomme synthèse
wss.Name = "Synthèse"
' titres de colonnes
wss.Cells(1, 1) = "période"
wss.Cells(1, 2) = "R"
wss.Cells(1, 3) = "V"
wss.Cells(1, 4) = "résultat"
l = 1 : "numéro de ligne sur wss
' on parcourt toutes les feuilles, wsR référence la feuille en cours
For Each wsr In Worksheets
With wsr
If Right(.Name, 1) = "R" Then ' on sélectionne uniquement les feuilles se terminant par R
Set wsv = Worksheets(Left(.Name, Len(.Name) - 1) & "V") ' wsv fait référence à la feuille V du même groupe
j = 3 'numéro de première ligne à considérer sur wsR
For Each C In Array("B9", "B16", "B23", "B30", "B37", "G9", "G16") ' cellules qui nous intéressent sur wsV (total du jour)
l = l + 1
j = j + 1
wss.Cells(l, 1) = Left(.Name, Len(.Name) - 1) & " " & .Range("A" & j) ' nom du groupe + jour de la semaine
wss.Cells(l, 3) = wsv.Range(C) ' total du jour sur wsV
wss.Cells(l, 2) = .Range("K" & j) ' total du jour sur wsR
wss.Cells(l, 4) = wss.Cells(l, 2) - wss.Cells(l, 3) ' différence entre les 2 totaux
Next
End If
End With
Next
wss.Columns("A:D").AutoFit
Set wss = Nothing
Set wsv = Nothing
Set wsr = Nothing
End Sub