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
| Dim NbCol As Integer, j As Integer, k As Integer
Dim NbLig As Long, i As Long
Dim Tot As Double
Dim Tb, Res()
Application.ScreenUpdating = False
With Worksheets("Feuil1")
NbLig = .Range("C4").End(xlDown).Row
NbCol = .Range("D3").End(xlToRight).Column
Tb = .Range(.Cells(3, 3), .Cells(NbLig, NbCol))
Tot = Application.Sum(.Range(.Cells(4, 4), .Cells(NbLig, NbCol)))
End With
For i = 2 To UBound(Tb, 1)
For j = 2 To UBound(Tb, 2)
If Tb(i, j) <> "" Then
k = k + 1
ReDim Preserve Res(1 To 3, 1 To k)
Res(1, k) = Tb(i, 1)
Res(2, k) = Tb(1, j)
Res(3, k) = Format(Tb(i, j) / Tot, "0.00%")
End If
Next j
Next i
If k > 0 Then
With Worksheets("Feuil3")
.UsedRange.Clear
.Range("A1:C1") = Array("X", "Y", "Occ")
.Range("A2").Resize(k, 3) = Application.Transpose(Res)
End With
End If |
Partager