Sub Test()
Dim avecDate() As Variant, i As Long, j As Long, zoneTitre As Range, nbDates As Long, tmp As String, mem As Boolean
With ThisWorkbook.Sheets("Feuil1")
'récupérer la liste des titres (colonne B, Feuil1)
Set zoneTitre = .Range("B15:B" & .Range("B15").End(xlDown).Row)
'compter le nombre de dates en colonne G
nbDates = WorksheetFunction.Count(zoneTitre.Offset(0, 5))
'redimentionner les tableaux
ReDim avecDate(1 To nbDates)
'boucler sur chaque ligne de titre
For i = zoneTitre(1, 1).Row To zoneTitre(1, 1).Row + zoneTitre.Count - 1
'si il y a une date en colonne G
If .Range("G" & i).Text <> "" Then
'mémoriser la combinaison des colonnes B, C, D, E et F dans le tableau
j = j + 1
avecDate(j) = .Range("B" & i).Text & .Range("C" & i).Text & .Range("D" & i).Text & .Range("E" & i).Text & .Range("F" & i).Text
End If
Next i
'boucler sur chaque ligne de titre une deuxième fois
For i = zoneTitre(1, 1).Row + zoneTitre.Count - 1 To zoneTitre(1, 1).Row Step -1
'si il n'y a pas de date en colonne G
If .Range("G" & i).Text = "" Then
'mémoriser la combinaison des colonnes B, C, D, E et F
tmp = .Range("B" & i).Text & .Range("C" & i).Text & .Range("D" & i).Text & .Range("E" & i).Text & .Range("F" & i).Text
'vérifier si la combinaison est présente dans le tableau
mem = False
For j = LBound(avecDate) To UBound(avecDate)
If avecDate(j) = tmp Then mem = True
Next j
'si la combinaison était présente dans le tableau, supprimer la ligne
If mem Then .Rows(i).Delete
End If
Next i
End With
End Sub