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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| Sub Transfert()
Dim LastLig As Long, i As Long, j As Long, k As Long
Dim tablo(), S() As Double, T() As Double
Dim Temp As String
With Sheets("Feuil1")
'Remplisssage de tablo avec les 3 colonnes dont on a besoin
LastLig = .Cells(Rows.Count, 1).End(xlUp).Row
ReDim tablo(1 To 3, 1 To LastLig - 1)
For i = 2 To LastLig
tablo(1, i - 1) = .Range("A" & i).Value 'Nom
tablo(2, i - 1) = .Range("E" & i).Value 'Type
tablo(3, i - 1) = .Range("K" & i).Value 'Quantité
Next i
'-------------------------------------------------Tri tablo en fonction du type
For i = 1 To UBound(tablo, 2)
For j = 1 To UBound(tablo, 2) - 1
If tablo(2, j) > tablo(2, j + 1) Then
For k = 1 To UBound(tablo, 1)
Temp = tablo(k, j)
tablo(k, j) = tablo(k, j + 1)
tablo(k, j + 1) = Temp
Next k
End If
Next j
Next i
End With
'-----------------------------------Initialisation
j = 1: ReDim T(1): ReDim S(1)
S(1) = 1: T(1) = tablo(3, 1)
'-----------------------------------Dénombrement par type
For i = 1 To UBound(tablo, 2) - 1
If tablo(2, i + 1) = tablo(2, i) Then
S(j) = S(j) + 1
T(j) = T(j) + tablo(3, i + 1)
Else
j = j + 1
ReDim Preserve S(j)
ReDim Preserve T(j)
S(j) = 1
T(j) = tablo(3, i + 1)
End If
Next i
'---------------------------------Transfert vers feuil2 des sommes
With Sheets("Feuil2")
.Cells.ClearContents
For j = 1 To UBound(T)
If j = 1 Then
LastLig = 2
Else
LastLig = .Cells(Rows.Count, 1).End(xlUp).Row + S(j - 1) + 1
End If
.Range("A" & LastLig) = "Nbre: " & S(j) & " (" & T(j) & ")"
Next j
'-----------------------------Transfert vers feuil2 des noms
i = 1: j = 3
Do
If .Range("A" & j) = "" Then
.Range("A" & j).Value = tablo(1, i)
i = i + 1
End If
j = j + 1
Loop Until i = UBound(tablo, 2) + 1
End With
End Sub |
Partager