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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
Private Sub CommandButton1_Click()
Dim kk As Integer 'index tableaufiltreprochainXXXX
Dim liste As New Collection
Dim i As Long, DerniereLigne As Long
Dim k, colonne As Variant
Dim nbinf, nbsup, nbegal As Long
Dim resultat() As Double
Dim typedepari As Integer
Dim a, b, c, d, aa As Integer
'initialization des divers variables
typedepari = 0
colonne = 0
aa = 0
a = 0
b = 0
c = 0
d = 0
kk = 0
UserForm4.TextBox1.Value = ""
UserForm4.TextBox3.Value = ""
UserForm4.TextBox4.Value = ""
nbegal = 0
nbinf = 0
nbsup = 0
If CheckBox1.Value = True Then CheckBox2.Value = False And CheckBox3.Value = False And CheckBox4.Value = False
If CheckBox2.Value = True Then CheckBox1.Value = False And CheckBox3.Value = False And CheckBox4.Value = False
If CheckBox3.Value = True Then CheckBox1.Value = False And CheckBox2.Value = False And CheckBox4.Value = False
If CheckBox4.Value = True Then CheckBox1.Value = False And CheckBox2.Value = False And CheckBox3.Value = False
If OptionButton1.Value = True And CheckBox1.Value = True Then typedepari = 5 'quintesomme
If OptionButton2.Value = True And CheckBox1.Value = True Then typedepari = 4 'quarte
If OptionButton3.Value = True And CheckBox1.Value = True Then typedepari = 3 'tierce
'ici on rajoute d'autre optionbutton
Worksheets("stat").Select ' selectionne la feuille stat
Select Case typedepari
Case 5 'somme qunte
'pour le quinte
DerniereLigne = Range("j65536").End(xlUp).Row 'la somme des chx arrivee au quinte
colonne = 10
infofiltre = "Somme pour le quinte"
Case 4 'somme
'pour le quarte
DerniereLigne = Range("k65536").End(xlUp).Row 'la somme des chx arrivee au quarte
colonne = 11
infofiltre = "Somme pour le quarte"
Case 3 'somme
'pour le tierce
DerniereLigne = Range("l65536").End(xlUp).Row 'la somme des chx arrivee au tierce
colonne = 12
infofiltre = "Somme pour le tierce"
'ici on rajoute d'autre choix
End Select
On Error Resume Next
For i = 2 To DerniereLigne
liste.Add Cells(i, colonne), CStr(Cells(i, colonne))
Next i
On Error GoTo 0
ReDim resultat(1 To 4, 1 To liste.Count)
For k = 1 To liste.Count
nbegal = 0
nbinf = 0
nbsup = 0
For i = 2 To DerniereLigne - 1
If Cells(i, colonne) = liste.Item(k) Then
If Cells(i, colonne) > Cells(i + 1, colonne) Then nbinf = nbinf + 1
If Cells(i, colonne) = Cells(i + 1, colonne) Then nbegal = nbegal + 1
If Cells(i, colonne) < Cells(i + 1, colonne) Then nbsup = nbsup + 1
End If
Next i
resultat(1, k) = liste.Item(k) 'a la valeur somme
resultat(2, k) = nbinf 'b
resultat(3, k) = nbegal 'c
resultat(4, k) = nbsup 'd
Next k
UserForm4.TextBox1.Value = ""
UserForm4.TextBox1.Value = infofiltre & vbCrLf 'affiche l'info sur quel filtre a été realise la stat
'affichage dans le textbox
For k = 1 To liste.Count
aa = resultat(1, k) ' la somme concernee
a = resultat(1, k) & "a été trouve " & (resultat(2, k) + resultat(3, k) + resultat(4, k)) 'la valeur somme
b = (FormatNumber((resultat(2, k) * 100) / (resultat(2, k) + resultat(3, k) + resultat(4, k)), 0))
c = (FormatNumber((resultat(3, k) * 100) / (resultat(2, k) + resultat(3, k) + resultat(4, k)), 0))
d = (FormatNumber((resultat(4, k) * 100) / (resultat(2, k) + resultat(3, k) + resultat(4, k)), 0))
'test que le textbox du % est bien rempli et qu'il est sup egal ou inf à b,c ou d
If UserForm4.TextBox2.Value > 0 And b > UserForm4.TextBox2.Value Or c > UserForm4.TextBox2.Value Or d > UserForm4.TextBox2.Value Then
Load UserForm4
UserForm4.TextBox1.Value = UserForm4.TextBox1.Value & "la valeur somme " & a & " fois : " & " "
If b > UserForm4.TextBox2.Value Then UserForm4.TextBox1.Value = UserForm4.TextBox1.Value & b & " % des valeurs qui suivent seront < "
If c > UserForm4.TextBox2.Value Then UserForm4.TextBox1.Value = UserForm4.TextBox1.Value & c & " " & " % des valeurs qui suivent seront = "
If d > UserForm4.TextBox2.Value Then UserForm4.TextBox1.Value = UserForm4.TextBox1.Value & d & " % des valeurs qui suivent seront > " '
'affiche la somme dans usf3 qui aura la somme suivante sup en fonction du % retenu
If d > UserForm4.TextBox2.Value And b < UserForm4.TextBox2.Value And c < UserForm4.TextBox2.Value Then 'test que le textbox du% et checkb somme sup est actif valde
UserForm4.TextBox3.Value = UserForm4.TextBox3.Value & aa & " " & vbCrLf 'affichag des somme retenues
'remplir le tablfiltresup
tablfiltreprochainsup(kk) = aa
kk = kk + 1
'MsgBox (" sup le k=" & kk)
End If
'affiche la sommme dans usf3 qui aura somme suivante inf en fonction du % retenu
If b > UserForm4.TextBox2.Value And c < UserForm4.TextBox2.Value And d < UserForm4.TextBox2 Then 'test que le txt box du % et checkb somme inf est actif valide
UserForm4.TextBox4.Value = UserForm4.TextBox4.Value & aa & " " & vbCrLf ' affichage des sommes retenues
'rempli le tablfiltreprochaninf
tablfiltreprochaininf(kk) = aa
kk = kk + 1
End If
UserForm4.TextBox1.Value = UserForm4.TextBox1.Value & vbCrLf ' saut le ligne dans le usf4.txt1
On Error Resume Next 'permet d'arreter le programme apres la premiere erreur située lors que l'indice i arrive à la derniere ligne de colonne
Else
If UserForm4.TextBox2.Value = 0 Then 'borne du % souhaite =0 alors on affiche tout
UserForm4.TextBox1.Value = UserForm4.TextBox1.Value & "Il y a eu pour la valeur somme " & a & "fois : " & " " & b & "%valeur < qui suivaient " & c & " " & "%valeur = qui suivaient " & d & "%valeur > qui suivaient " & vbCrLf
On Error Resume Next 'permet d'arreter le programme apres la premiere erreur située lors que l'indice i arrive à la derniere ligne de colonne
End If
End If
Next k
'affichage du contenu du tableau tablfiltresup
For II = LBound(tablfiltreprochainsup) To LBound(tablfiltreprochainsup) + kk - 1
'pour verifier que la tableaufiltreprochainXXXX est bien rempli
MsgBox ("affichage des somme au prochain tirg seront sup" & tablfiltreprochainsup(II))
Next II
For II = LBound(tablfiltreprochaininf) To LBound(tablfiltreprochaininf) + kk - 1
'pour verifier que la tableaufiltreprochainXXXX est bien rempli
MsgBox ("affichage des sommes au prochain tir sqeront inf " & tablfiltreprochaininf(II))
Next II
UserForm4.Show
End Sub |
Partager