Sub combin()
Dim i As Long, J As Long, K As Long, L As Long, Ligne As Long
Dim G1 As Long, G2 As Long, G3 As Long, G4 As Long, Nonvide
G1 = Range("A1").End(xlDown).Row: If G1 > 7 Then G1 = 7
Nonvide = Nonvide + Evaluate("COUNTIF(" & Range("A2:A" & G1).Address & ",""<>"""""")")
G2 = Range("B1").End(xlDown).Row: If G2 > 7 Then G2 = 7
Nonvide = Nonvide + Evaluate("COUNTIF(" & Range("B2:B" & G2).Address & ",""<>"""""")")
G3 = Range("C1").End(xlDown).Row: If G3 > 7 Then G3 = 7
Nonvide = Nonvide + Evaluate("COUNTIF(" & Range("C2:C" & G3).Address & ",""<>"""""")")
G4 = Range("D1").End(xlDown).Row: If G4 > 7 Then G4 = 7
Nonvide = Nonvide + Evaluate("COUNTIF(" & Range("D2:D" & G4).Address & ",""<>"""""")")
If Nonvide <> 24 - Evaluate("COUNTIF(" & Range("A2:D7").Address & ","""")") Then
MsgBox " présence de colonnes vides ou cellules vides intercalées ==> STOP!"
Exit Sub
End If
Range("E2:I65536").ClearContents
Ligne = 2
For i = 2 To G1
For J = 2 To G2
For K = 2 To G3
For L = 2 To G4
Range("E" & Ligne) = Range("A" & i)
Range("F" & Ligne) = Range("B" & J)
Range("G" & Ligne) = Range("C" & K)
Range("H" & Ligne) = Range("D" & L)
Ligne = Ligne + 1
Next L
Next K
Next J
Next i
End Sub