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 182 183 184 185 186 187 188 189 190 191 192 193 194 195
|
l'objectif est d'exécuter un calcul dans le fichier2 et la feuil1, de récupérer le résultat pour le mettre dans le fichier1 .
Private Sub CommandButton1_Click()
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 As Integer
'il faut ouvrir le fichier faire procédure pour avoir accès au disque et fichier
Dim quelfichier
quelfichier = Application.GetOpenFilename() 'ouvre boite de recherche fichier
MsgBox quelfichier
'Déclaration des variables
Dim appExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel
'Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
''Set wbExcel = appExcel.Workbooks.Open("C:\MonFichierExcel.xls")
Set wbExcel = appExcel.Workbooks.Open(quelfichier)
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)
'initialization des divers variables
typedepari = 0
colonne = 0
a = 0
b = 0
c = 0
d = 0
UserForm4.TextBox1.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 OptionButton1.Value = True And CheckBox2.Value = True Then typedepari = 55 ' quintemultiplication
If OptionButton1.Value = True And CheckBox3.Value = True Then typedepari = 555 ' quinteunite
If OptionButton1.Value = True And CheckBox4.Value = True Then typedepari = 5555 ' quintediz
If OptionButton2.Value = True And CheckBox1.Value = True Then typedepari = 4 'quarte
If OptionButton2.Value = True And CheckBox2.Value = True Then typedepari = 44 'quartemultiplication
If OptionButton2.Value = True And CheckBox3.Value = True Then typedepari = 444 ' quarteunite
If OptionButton2.Value = True And CheckBox4.Value = True Then typedepari = 4444 ' quartesdiz
If OptionButton3.Value = True And CheckBox1.Value = True Then typedepari = 3 'tierce
If OptionButton3.Value = True And CheckBox2.Value = True Then typedepari = 33 'tiercemultiplication
If OptionButton3.Value = True And CheckBox3.Value = True Then typedepari = 333 'tierce unite
If OptionButton3.Value = True And CheckBox4.Value = True Then typedepari = 3333 'tierce diz
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"
Case 55 'multiplication
'pour le quinte
DerniereLigne = Range("m65536").End(xlUp).Row 'la somme des chx arrivee au quinte
colonne = 13
infofiltre = "multiplication pour le quinte"
Case 44 'multiplication
'pour le quarte
DerniereLigne = Range("n65536").End(xlUp).Row 'la somme des chx arrivee au quinte
colonne = 14
infofiltre = "multiplication pour le quarte"
Case 33 'multiplication
'pour le tierce
DerniereLigne = Range("o65536").End(xlUp).Row 'la somme des chx arrivee au quinte
colonne = 15
infofiltre = "multiplication pour le tierce"
Case 555 'unite
'pour le quinte
DerniereLigne = Range("p65536").End(xlUp).Row 'la somme des chx arrivee au quinte
colonne = 16
infofiltre = "unite pour le quinte"
Case 444 'unite
'pour le quarte
DerniereLigne = Range("Q65536").End(xlUp).Row 'la somme des chx arrivee au quinte
colonne = 17
infofiltre = "unite pour le quarte"
Case 333 'unite
'pour le tierce
DerniereLigne = Range("R65536").End(xlUp).Row 'la somme des chx arrivee au quinte
colonne = 18
infofiltre = "unite pour le tierce"
Case 5555 'diz
'pour le quinte
DerniereLigne = Range("s65536").End(xlUp).Row 'la somme des chx arrivee au quinte
colonne = 19
infofiltre = "dizaine pour le quinte"
Case 4444 'diz
'pour le quarte
DerniereLigne = Range("t65536").End(xlUp).Row 'la somme des chx arrivee au quinte
colonne = 20
infofiltre = "dizaine pour le quarte"
Case 3333 'diz
'pour le tierce
DerniereLigne = Range("u65536").End(xlUp).Row 'la somme des chx arrivee au quinte
colonne = 21
infofiltre = "dizaine pour le tierce"
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
resultat(2, k) = nbinf 'b
resultat(3, k) = nbegal 'c
resultat(4, k) = nbsup 'd
Next k
UserForm1.TextBox1.Value = ""
UserForm1.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
a = resultat(1, k) & "a été trouve " & (resultat(2, k) + resultat(3, k) + resultat(4, k))
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))
If UserForm4.TextBox2.Value > 0 And b > UserForm4.TextBox2.Value Or c > UserForm4.TextBox2.Value Or d > UserForm4.TextBox2.Value Then
UserForm4.TextBox1.Value = UserForm4.TextBox1.Value & "Il y a eu pour la valeur somme " & a & "fois : " & " "
If b > UserForm4.TextBox2.Value Then UserForm4.TextBox1.Value = UserForm4.TextBox1.Value & b & "%valeur < qui suivaient "
If c > UserForm4.TextBox2.Value Then UserForm4.TextBox1.Value = UserForm4.TextBox1.Value & c & " " & "%valeur = qui suivaient "
If d > UserForm4.TextBox2.Value Then UserForm4.TextBox1.Value = UserForm4.TextBox1.Value & d & "%valeur> qui suivaient "
UserForm4.TextBox1.Value = UserForm4.TextBox1.Value & vbCrLf
On Error Resume Next 'permet d'arrêter le programme après la premiere erreur située lorsque l'indice i arrive à la dernière ligne de la colonne
Else
If UserForm4.TextBox2.Value = 0 Then
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'arrêter le programme après la première erreur située lorsque l'indice i arrive à la dernière ligne de la colonne
End If
End If
Next k 'Voila le contenu de ma colonne j
End Sub |
Partager