1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| Option Explicit
Sub test()
Dim Recap(), Tablo(), DerniereLigne As Long, DerniereColonne As Integer
Dim NoCol As Integer, NoLigne As Long, NoC As Integer, n As Long
Dim Existe As Boolean, k As Integer, l As Integer, i As Integer, j As Integer
NoCol = 2 '1ère colonne de la série 'ne change pas, peut être une constante
NoLigne = 6 '1ère ligne de la série
DerniereLigne = Cells(Columns(NoCol).Cells.Count, NoCol).End(xlUp).Row
'Remplissage du tablo avec les deux lignes suivantes
ReDim Tablo(0)
ReDim Preserve Recap(0 To 1, 0)
Do While NoLigne <= DerniereLigne
DerniereColonne = Cells(NoLigne, Rows(NoLigne).Cells.Count).End(xlToLeft).Column
For NoC = NoCol To DerniereColonne
n = n + 1
ReDim Preserve Tablo(n)
Tablo(n) = Cells(NoLigne, NoC)
Next
NoLigne = NoLigne + 1
DerniereColonne = Cells(NoLigne, Rows(NoLigne).Cells.Count).End(xlToLeft).Column
For NoC = NoCol To DerniereColonne
n = n + 1
ReDim Preserve Tablo(n)
Tablo(n) = Cells(NoLigne, NoC)
Next
NoLigne = NoLigne + 1
'Création de la série
For i = 1 To UBound(Tablo)
For j = 1 To k
Existe = Recap(0, j) = Tablo(i)
l = j
If Existe Then Exit For
Next
If Not Existe Then
k = k + 1
ReDim Preserve Recap(0 To 1, k)
Recap(0, k) = Tablo(i)
Recap(1, k) = Recap(1, k) + 1
ElseIf Existe Then
Recap(1, l) = Recap(1, l) + 1
End If
Next
ReDim Tablo(0)
n = 0
Loop
For i = 1 To k
Cells(DerniereLigne + 2, i + 1) = Recap(0, i)
Cells(DerniereLigne + 3, i + 1) = Recap(1, i)
Next
End Sub |
Partager