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
| Sub CommandButton1_Click()
Dim Tablo, ArguFreq
Dim Contenu As String
Dim TempTab As Collection
Dim i As Byte, j As Byte
For i = 5 To 35
If Range("A" & i).Formula <> "" Then Contenu = Contenu & "+" & Range("A" & i).Formula
Next i
Contenu = Mid(Contenu, 3)
Contenu = Replace(Contenu, ",", ".")
Contenu = Replace(Contenu, "=", "") 'à enlever si on est sur que le signe = ne sera jamais présent dans les formules
If Len(Trim(Contenu)) > 0 Then
Tablo = Split(Contenu, "+")
Set TempTab = New Collection
On Error Resume Next
For i = 0 To UBound(Tablo)
If Tablo(i) <> "" Then TempTab.Add Tablo(i), Tablo(i)
Next i
ReDim ArguFreq(0 To TempTab.Count - 1, 0 To 1)
For i = 1 To TempTab.Count
ArguFreq(i - 1, 0) = TempTab.Item(i)
Next i
For i = 0 To TempTab.Count - 1
For j = 0 To UBound(Tablo)
If ArguFreq(i, 0) = Tablo(j) Then ArguFreq(i, 1) = ArguFreq(i, 1) + 1
Next j
Next i
Set TempTab = Nothing
Range("B2:D" & Range("D2").End(xlDown).Row).ClearContents
For i = 0 To UBound(ArguFreq, 1)
Range("B" & i + 2).Value = ArguFreq(i, 0)
Range("C" & i + 2).Value = ArguFreq(i, 1)
Range("D" & i + 2).Value = Range("B" & i + 2).Value * Range("C" & i + 2).Value
Next i
Range("C" & i + 2).FormulaR1C1 = "=sum(R[" & -i & "]C:R[-1]C)"
Range("D" & i + 2).FormulaR1C1 = "=sum(R[" & -i & "]C:R[-1]C)"
End If
End Sub |