Sub Synthese()
Dim xRg As Range, xCopyTo As Range, sh As Worksheet
Sheets("Synthèse").Range("A4:A" & Rows.Count).EntireRow.Delete
'On enlève le filtre auto s'il y en a un
If Sheets("Synthèse").AutoFilterMode Then Sheets("Synthèse").AutoFilterMode = False
For Each sh In Worksheets
If sh.Name <> "Synthèse" Then
With sh
Set xRg = .Range("D" & Rows.Count).End(xlUp)
If xRg.Row > 3 Then
Set xCopyTo = Sheets("Synthèse").Range("D" & Rows.Count).End(xlUp).Offset(1)
' Si le n° de ligne où copier est égal à 4, cela signifie qu'on effectue la copie
' d'un premier tableau de projet. Dans ce cas, on n'insère pas de ligne supplémentaire.
' Si le n° de ligne où copier est sup. à 4, cela signifie qu'on effectue la copie
' d'un second (ou plus) tableau de projet. Dans ce cas, on grise la ligne
' puis on décale xCopyTo d'une ligne et on y fait la copie.
If xCopyTo.Row <> 4 Then
' la ligne insérée vide prend la couleur de l'en-tête
Sheets("Synthèse").Range("B" & xCopyTo.Row & ":K" & xCopyTo.Row).Interior.Color = _
Sheets("Synthèse").Range("B3").Interior.Color
' on décale xCopyTo d'une ligne vers le bas pour y faire la copie
Set xCopyTo = xCopyTo.Offset(1)
End If
' on fait la copie
.Range("A4:K" & xRg.Row).Copy xCopyTo.Offset(, -3)
End If
End With
End If
Next sh
End Sub
Sub FiltreAuto()
Dim maZone As Range
' si la feuille est en mode autofiltrée, on efface le filtre auto
If Sheets("Synthèse").AutoFilterMode Then
' si la feuille est en mode autofiltrée, on efface le filtre auto
Sheets("Synthèse").AutoFilterMode = False
Else
' si la feuille n'est pas en mode autofiltrée:
' on définit la zone à filtrer
Set maZone = Sheets("Synthèse").Range("D" & Rows.Count).End(xlUp)
' on filtre auto la zone
Sheets("Synthèse").Range("A3:K" & maZone.Row).AutoFilter
End If
End Sub