Sub aa()
Dim S As Worksheet
Dim R As Range
Dim var
Dim i&
Dim cpt& 'compteur
Dim Lig&
Dim Col&
Dim T()
'--- La feuille source ---
Set R = ActiveSheet.UsedRange
Set R = R.Resize(R.Rows.Count + 1, R.Columns.Count)
var = R
'--- Une nouvelle feuille pour afficher les résultats ---
Sheets.Add
Set S = ActiveSheet
'--- La colonne B ---
Lig& = 0
Col& = 1
For i& = 1 To UBound(var, 1)
cpt& = cpt& + 1
If var(i&, 1) <> "" Then
ReDim Preserve T(1 To 1, 1 To cpt&)
T(1, cpt&) = var(i&, 1)
Else
cpt& = 0
Lig& = Lig& + 1
Set R = S.Range(S.Cells(Lig&, Col&), S.Cells(Lig&, UBound(T, 2) + Col& - 1))
R = T
Erase T
End If
Next i&
'--- La colonne C ---
Lig& = 0
Col& = S.UsedRange.Columns.Count + 1
For i& = 1 To UBound(var, 1)
If var(i&, 1) <> "" Then
If var(i&, 2) <> "" Then
cpt& = cpt& + 1
ReDim Preserve T(1 To 1, 1 To cpt&)
T(1, cpt&) = var(i&, 2)
End If
Else
Lig& = Lig& + 1
If cpt& > 0 Then
Set R = S.Range(S.Cells(Lig&, Col&), S.Cells(Lig&, UBound(T, 2) + Col& - 1))
R = T
End If
cpt& = 0
Erase T
End If
Next i&
'--- La colonne J ---
Lig& = 0
Col& = S.UsedRange.Columns.Count + 1
For i& = 1 To UBound(var, 1)
If var(i&, 1) <> "" Then
If var(i&, 9) <> "" Then
cpt& = cpt& + 1
ReDim Preserve T(1 To 1, 1 To cpt&)
T(1, cpt&) = var(i&, 9)
End If
Else
Lig& = Lig& + 1
If cpt& > 0 Then
Set R = S.Range(S.Cells(Lig&, Col&), S.Cells(Lig&, UBound(T, 2) + Col& - 1))
R = T
End If
cpt& = 0
Erase T
End If
Next i&
'--- La colonne L ---
Lig& = 0
Col& = S.UsedRange.Columns.Count + 1
For i& = 1 To UBound(var, 1)
If var(i&, 1) <> "" Then
If var(i&, 11) <> "" Then
cpt& = cpt& + 1
ReDim Preserve T(1 To 1, 1 To cpt&)
T(1, cpt&) = var(i&, 11)
End If
Else
Lig& = Lig& + 1
If cpt& > 0 Then
Set R = S.Range(S.Cells(Lig&, Col&), S.Cells(Lig&, UBound(T, 2) + Col& - 1))
R = T
End If
cpt& = 0
Erase T
End If
Next i&
End Sub