Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2011, 13h24   #1
Invité de passage
 
Homme Ludovic
Etudiant géologue (M2)
Inscription : octobre 2011
Messages : 36
Détails du profil
Informations personnelles :
Nom : Homme Ludovic

Informations professionnelles :
Activité : Etudiant géologue (M2)

Informations forums :
Inscription : octobre 2011
Messages : 36
Points : 1
Points : 1
Par défaut Dépassement de capacité et oubli des valeurs calculées

Bonjour,

Je suis en M2 Géosciences et je dois réaliser un programme avec des notions vues en cours.
Mais là mon programme bug sans que je ne sache pourquoi...

En faite j'ai plusieurs commandbutton. Dans un "commandbutton" j'ai fait des calculs de moyenne, ecart-type, variance... et ça marche très bien.
Mais quand dans un autre "commandbutton" je désire utiliser ces valeurs pour faire un graphe avec une droite de régression il me met une erreur "dépassement de capacité", et quand je veux printer dans ce button une des valeurs calculées précedemment il ne print rien...
Du coup j'ai refait mon programme en y incluant un module où je rends toutes ces valeurs publiques mais rien à faire ça ne marche toujours pas !!!

Cela pourrait venir de quoi ?

Merci
LudOL56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 13h59   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 958
Points : 30 958
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Citation:
Envoyé par LudOL56 Voir le message
Cela pourrait venir de quoi ?
De la qualité de ma boule de cristal.
On fait comment pour deviner le problème sans code, message d'erreur, etc. ?


Et merci de mettre un titre plus adéquat avec la question, celui-ci est trop généraliste et ne cerne pas le problème. De plus le mot Help est inutile, on s'en doute.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 14h07   #3
Invité de passage
 
Homme Ludovic
Etudiant géologue (M2)
Inscription : octobre 2011
Messages : 36
Détails du profil
Informations personnelles :
Nom : Homme Ludovic

Informations professionnelles :
Activité : Etudiant géologue (M2)

Informations forums :
Inscription : octobre 2011
Messages : 36
Points : 1
Points : 1
Le problème c'est que mon code est un peu long...

Code :
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
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
Private Sub Command1_Click()
 
Dim NOM_FICHIER As String
Dim FICHIER As String
Dim a As Integer
Dim n°obj(1 To 1000) As Integer
Dim xc(1 To 1000) As Integer
Dim yc(1 To 1000) As Integer
Dim s(1 To 1000) As Integer
Dim d(1 To 1000) As Integer
Dim xx(1 To 1000) As Integer
Dim yy(1 To 1000) As Integer
Dim class(1 To 1000) As Integer
Dim angle°(1 To 1000) As Integer
Dim ligne As String
Dim moyenne1 As Integer
Dim moyenne2 As Integer
Dim moyenne3 As Integer
Dim moyenne4 As Integer
Dim moyenne5 As Integer
Dim moyenne6 As Integer
Dim moyenne7 As Integer
Dim variance1 As Integer
Dim variance2 As Integer
Dim variance3 As Integer
Dim variance4 As Integer
Dim variance5 As Integer
Dim variance6 As Integer
Dim variance7 As Integer
Dim Ecart_type1 As Integer
Dim Ecart_type2 As Integer
Dim Ecart_type3 As Integer
Dim Ecart_type4 As Integer
Dim Ecart_type5 As Integer
Dim Ecart_type6 As Integer
Dim Ecart_type7 As Integer
 
 
CHEMIN$ = File1.Path
FICHIER$ = File1.filename
NOM_FICHIER = CHEMIN$ + "\" + FICHIER$
'Print NOM_FICHIER
 
somme = 0
            Open NOM_FICHIER For Input As #1
            Input #1, TOTAL
            Line Input #1, ligne2
            'Print ligne1
            'Print ligne2
            'Print ligne3
            'Print TOTAL; " DONNÉES"
 
            Print
 
'Calcul des Moyennes
 
            For n = 1 To TOTAL
            Input #1, n°obj(n), xc(n), yc(n), s(n), d(n), xx(n), yy(n), angle°(n)
            somme = somme + angle°(n)
            Next n
            moyenne1 = somme / TOTAL
            Print "la moyenne des angles est de "; moyenne1; "degrés"
 
            somme = 0
 
            For n = 1 To TOTAL
            somme = somme + xc(n)
            Next n
            moyenne2 = somme / TOTAL
            Print "la moyenne des xc est de "; moyenne2
 
            somme = 0
 
            For n = 1 To TOTAL
            somme = somme + yc(n)
            Next n
            moyenne3 = somme / TOTAL
            Print "la moyenne des yc est de "; moyenne3
 
            somme = 0
 
            For n = 1 To TOTAL
            somme = somme + s(n)
            Next n
            moyenne4 = somme / TOTAL
            Print "la moyenne des s est de "; moyenne4
 
            somme = 0
 
            For n = 1 To TOTAL
            somme = somme + d(n)
            Next n
            moyenne5 = somme / TOTAL
            Print "la moyenne des d est de "; moyenne5
 
            somme = 0
 
            For n = 1 To TOTAL
            somme = somme + xx(n)
            Next n
            moyenne6 = somme / TOTAL
            Print "la moyenne des xx est de "; moyenne6
 
            somme = 0
 
            For n = 1 To TOTAL
            somme = somme + yy(n)
            Next n
            moyenne7 = somme / TOTAL
            Print "la moyenne des yy est de "; moyenne7
 
            Print
 
' Calcul des écarts-types
 
            For n = 1 To TOTAL
            som_ET = som_ET + ((angle°(n) - moyenne1) ^ 2)
            Next n
            Ecart_type1 = Sqr((1 / TOTAL) * som_ET)
            Print "L'écart-type des angles est de "; Ecart_type1
 
            som_ET = 0
 
            For n = 1 To TOTAL
            som_ET = som_ET + ((xc(n) - moyenne2) ^ 2)
            Next n
            Ecart_type2 = Sqr((1 / TOTAL) * som_ET)
            Print "L'écart-type des xc est de "; Ecart_type2
 
            som_ET = 0
 
            For n = 1 To TOTAL
            som_ET = som_ET + ((yc(n) - moyenne3) ^ 2)
            Next n
            Ecart_type3 = Sqr((1 / TOTAL) * som_ET)
            Print "L'écart-type des yc est de "; Ecart_type3
 
            som_ET = 0
 
            For n = 1 To TOTAL
            som_ET = som_ET + ((s(n) - moyenne4) ^ 2)
            Next n
            Ecart_type4 = Sqr((1 / TOTAL) * som_ET)
            Print "L'écart-type des s est de "; Ecart_type4
 
            som_ET = 0
 
            For n = 1 To TOTAL
            som_ET = som_ET + ((d(n) - moyenne5) ^ 2)
            Next n
            Ecart_type5 = Sqr((1 / TOTAL) * som_ET)
            Print "L'écart-type des d est de "; Ecart_type5
 
            som_ET = 0
 
            For n = 1 To TOTAL
            som_ET = som_ET + ((xx(n) - moyenne6) ^ 2)
            Next n
            Ecart_type6 = Sqr((1 / TOTAL) * som_ET)
            Print "L'écart-type des xx est de "; Ecart_type6
 
            som_ET = 0
 
            For n = 1 To TOTAL
            som_ET = som_ET + ((yy(n) - moyenne7) ^ 2)
            Next n
            Ecart_type7 = Sqr((1 / TOTAL) * som_ET)
            Print "L'écart-type des yy est de "; Ecart_type7
 
            Print
 
'Calcul des variances
            Var = 0
 
            For n = 1 To TOTAL
            Var = Var + ((angle°(n) - moyenne1) ^ 2)
            Next n
            variance1 = Var / TOTAL
            Print "la Variance des angles est de "; variance1
 
            Var = 0
 
            For n = 1 To TOTAL
            Var = Var + ((xc(n) - moyenne2) ^ 2)
            Next n
            variance2 = Var / TOTAL
            Print "la Variance des xc est de "; variance2
 
            Var = 0
 
            For n = 1 To TOTAL
            Var = Var + ((yc(n) - moyenne3) ^ 2)
            Next n
            variance3 = Var / TOTAL
            Print "la Variance des yc est de "; variance3
 
            Var = 0
 
            For n = 1 To TOTAL
            Var = Var + ((s(n) - moyenne4) ^ 2)
            Next n
            variance4 = Var / TOTAL
            Print "la Variance des s est de "; variance4
 
            Var = 0
 
            For n = 1 To TOTAL
            Var = Var + ((d(n) - moyenne5) ^ 2)
            Next n
            variance5 = Var / TOTAL
            Print "la Variance des d est de "; variance5
 
            Var = 0
 
            For n = 1 To TOTAL
            Var = Var + ((xx(n) - moyenne6) ^ 2)
            Next n
            variance6 = Var / TOTAL
            Print "la Variance des xx est de "; variance6
 
            Var = 0
 
            For n = 1 To TOTAL
            Var = Var + ((yy(n) - moyenne7) ^ 2)
            Next n
            variance7 = Var / TOTAL
            Print "la Variance des yy est de "; variance7
 
Close #1
End Sub
--------------------------------------------------------------------
Private Sub Command2_Click()
 
Dim NOM_FICHIER As String
Dim FICHIER As String
Dim a As Integer
Dim n°obj(1 To 1000) As Integer
Dim xc(1 To 1000) As Integer
Dim yc(1 To 1000) As Integer
Dim s(1 To 1000) As Integer
Dim d(1 To 1000) As Integer
Dim xx(1 To 1000) As Integer
Dim yy(1 To 1000) As Integer
Dim class(1 To 1000) As Integer
Dim angle°(1 To 1000) As Integer
Dim ligne As String
Dim moyenne1 As Integer
Dim moyenne2 As Integer
Dim moyenne3 As Integer
Dim moyenne4 As Integer
Dim moyenne5 As Integer
Dim moyenne6 As Integer
Dim moyenne7 As Integer
Dim variance1 As Integer
Dim variance2 As Integer
Dim variance3 As Integer
Dim variance4 As Integer
Dim variance5 As Integer
Dim variance6 As Integer
Dim variance7 As Integer
Dim Ecart_type1 As Integer
Dim Ecart_type2 As Integer
Dim Ecart_type3 As Integer
Dim Ecart_type4 As Integer
Dim Ecart_type5 As Integer
Dim Ecart_type6 As Integer
Dim Ecart_type7 As Integer
 
CHEMIN$ = File1.Path
FICHIER$ = File1.filename
NOM_FICHIER = CHEMIN$ + "\" + FICHIER$
Print NOM_FICHIER
 
            Open NOM_FICHIER For Input As #1
            Input #1, TOTAL
            Line Input #1, ligne2
            'Print ligne1
            'Print ligne2
            'Print ligne3
            'Print TOTAL; " DONNÉES"
 
            Print
 
'Calcul de la covariance
 
 
            For n = 1 To TOTAL
            sigmaxy = (sigmaxy + ((s(n) - moyenne4)) * ((d(n) - moyenne5)) / TOTAL)
            Next n
 
            Print sigmaxy
 
'Calcul du coefficient de corrélation
 
    'Calcul du dividande
            For n = 1 To TOTAL
            haut = haut + sigmaxy
            Next n
 
    'Calcul du diviseur
            For n = 1 To TOTAL
            bas = bas + (Sqr(variance5) * Sqr(variance4))
            Next n
 
 
    'Formule du coefficient de corrélation complète
            r_p = haut / bas
            Print "le coefficient de corrélation est de "; rp
 
'Tracage des axes
origine_x = 6000
origine_y = 5000
'Line (1, origine_y)-(origine_x * 2, origine_y)
'Line (origine_x, 1)-(origine_x, (origine_y) * 2)
rotv = 10        'rotation miroir verticale
roth = -1000       'rotation miroir horizontale
gainy = 1 / 300
gainx = 10
    'Points
            For n = 1 To TOTAL
            new_x = (d(n) * rotv * gainx) + origine_x
            new_y = (roth * s(n) * gainy) + origine_y
           ' PSet (new_x, new_y), RGB(0, 0, 0)
            Next n
    'Droite de régression
    a = rp * (Ecart_type4 / Ecart_type5)
    x = n
    b = moyenne4 - a * moyenne5
    y = b + a * x
    'Print "a vaut"; a
    'Print "b vaut"; b
 
    'Print y
debut = 0
Max = 100
 
            For n = debut To Max
            new2_x = (n * rotv * gainx) + origine_x
            new2_y = (roth * (n * a) * gainy) + origine_y + b
            'PSet (new2_x, new2_y), RGB(255, 0, 0)
            Next n
LudOL56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 15h12   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Déjà premier réflexe, tu rajoutes au début de chaque module de code
Comme ça tu seras obligé de déclarer des variables et de t'interroger sur le fait que telle ou telle procédure y ait accès.

Ensuite quand tu parles de variables globales, je ne les vois pas dans ton code. (Je ne l'ai pas trop regardé car comme tu dis, il est très long. Je pense que ça aurait pu être beaucoup plus clair en utilisant des sous-procédures ou sous-fonctions). Et pour info, il me semble que les variables globales ne marchent pas trop si elles sont placées sur le code d'une feuille et non d'un module.

Pour ce qui est du dépassement de capacité, tu déclares toutes tes variables en Integer. Des moyennes, ecart-types et autres sont souvent plutôt des nombres réels et peuvent être supérieurs à la valeur maximale contenu dans un entier (37000 et quelques je crois). Essaie avec des Single ou des Double
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 15h15   #5
Expert Confirmé
 
Inscription : août 2006
Messages : 3 195
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 195
Points : 3 342
Points : 3 342
Kie,

Oh le vilain code ! (pris au sens : très mal conçu)
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 15h18   #6
Invité de passage
 
Homme Ludovic
Etudiant géologue (M2)
Inscription : octobre 2011
Messages : 36
Détails du profil
Informations personnelles :
Nom : Homme Ludovic

Informations professionnelles :
Activité : Etudiant géologue (M2)

Informations forums :
Inscription : octobre 2011
Messages : 36
Points : 1
Points : 1
Tout d'abord merci de ta réponse.
J'ai effectivement essayé de replacer le Integer par Long et du coup ça me supprime mon problème de dépassement de capacité...
Mais j'ai toujours le problème que le logiciel ne mémorise pas mes calculs de moyenne, variance... du commandbutton précédent...

Citation:
Envoyé par droggo Voir le message
Kie,

Oh le vilain code ! (pris au sens : très mal conçu)
Je suis entièrement d'accord avec toi mais je suis pas du tout dans l'informatique donc j'ai pas forcément pris les meilleures habitudes lol
LudOL56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 15h22   #7
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
En passant sur des Long, ça reste des entiers, donc il doit y avoir des arrondis quelque part.

Sinon tu dis que tu as essayé avec des variables globales, lesquels et tu les as mises ou ?
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 15h25   #8
Invité de passage
 
Homme Ludovic
Etudiant géologue (M2)
Inscription : octobre 2011
Messages : 36
Détails du profil
Informations personnelles :
Nom : Homme Ludovic

Informations professionnelles :
Activité : Etudiant géologue (M2)

Informations forums :
Inscription : octobre 2011
Messages : 36
Points : 1
Points : 1
Qu'entends tu par variables globales ?
LudOL56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 15h39   #9
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
J'ai regardé un peu ton code quand même.
Pour ton bouton Command1, sache qu'il existe déjà dans Excel des fonctions pour calculer la moyenne et l'écart-type, mais ce n'était sans doute pas le but de ton exercice. En revanche, tu pouvais créer une fonction moyenne
Code :
1
2
3
4
5
6
7
8
9
Private Function Moyenne(tab() As Double) as Double
  Dim somme As Double
  somme = 0
  Dim i As Integer
  For i = 0 To Ubound(tab)
    somme = somme + tab(i)
  Next i
  Moyenne = somme / (Ubound(tab) + 1)
End Function
et appliquer par exemple
Code :
1
2
3
4
5
Dim angle°() As Double
'... récupération de TOTAL
Redim angle°(TOTAL - 1)
'... récupération des tableaux
moyenne1 = Moyenne(angle°)
et faire pareil pour l'écart-type

Ensuite dans le code de ton deuxième bouton, tu peux tout enlever jusqu'à la ligne 287, je ne sais pas pourquoi tu l'as recopié.

Par contre, il aurait mieux valu placer ces codes dans la procédure d'un module, appelé par le bouton. Et déclarer en Public les variables que tu réutilises au début du module (en dehors de la procédure).
Code :
1
2
3
4
5
6
7
Option Explicit
 
Public moyenne1 As Integer
 
Public Sub ActionBouton1()
'...
End Sub
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 15h46   #10
Invité de passage
 
Homme Ludovic
Etudiant géologue (M2)
Inscription : octobre 2011
Messages : 36
Détails du profil
Informations personnelles :
Nom : Homme Ludovic

Informations professionnelles :
Activité : Etudiant géologue (M2)

Informations forums :
Inscription : octobre 2011
Messages : 36
Points : 1
Points : 1
En faite en cours on nous a appris à faire des calculs avec le moins de d'instructions possibles...mon programme dans l'ensemble, même si je peux comprendre que ça puisse choquer un puriste, il est comme il voudrais qu'on le lui rende (mon prof). Ce que je cherche juste à savoir c'est comment je peux dans mon second bouton, utiliser les moyennes et variances calculées dans le premier bouton ? Parceque là quand je demande au logiciel de me printer une des moyennes calculées il me dit "La moyenne de ... vaut 0"...
LudOL56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 15h49   #11
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Regarde la dernière partie de mon message dans ce cas, et reviens-moi s'il y a quelque chose que tu n'as pas compris.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 16h01   #12
Invité de passage
 
Homme Ludovic
Etudiant géologue (M2)
Inscription : octobre 2011
Messages : 36
Détails du profil
Informations personnelles :
Nom : Homme Ludovic

Informations professionnelles :
Activité : Etudiant géologue (M2)

Informations forums :
Inscription : octobre 2011
Messages : 36
Points : 1
Points : 1
Citation:
Envoyé par ZebreLoup Voir le message
Regarde la dernière partie de mon message dans ce cas, et reviens-moi s'il y a quelque chose que tu n'as pas compris.
J'ai pas tout compris en faite :/
Voici ce que j'ai dans mon module:
Code :
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
 
Public NOM_FICHIER As String
Public FICHIER As String
Public a As Integer
Public n°obj As Integer
Public xc As Integer
Public yc As Integer
Public s As Integer
Public d As Integer
Public xx As Integer
Public yy As Integer
Public angle° As Integer
Public moyenne_1 As Long
Public moyenne_2 As Long
Public moyenne_3 As Long
Public moyenne_4 As Long
Public moyenne_5 As Long
Public moyenne_6 As Long
Public moyenne_7 As Long
Public variance_1 As Long
Public variance_2 As Long
Public variance_3 As Long
Public variance_4 As Long
Public variance_5 As Long
Public variance_6 As Long
Public variance_7 As Long
Public Ecart_type_1 As Long
Public Ecart_type_2 As Long
Public Ecart_type_3 As Long
Public Ecart_type_4 As Long
Public Ecart_type_5 As Long
Public Ecart_type_6 As Long
Public Ecart_type_7 As Long
LudOL56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 17h21   #13
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Pour le message initial, voici un exemple pour toi LudOL56 :
(Par contre, j'ai du mal à comprendre comment ton code actuel fonctionnait correctement, par endroit, ça ressemble à d'autres langages que du VBA)

Dans ta feuille tu mets

Code :
1
2
3
4
5
6
7
Private Sub Command1_Click()
    ActionBouton1
End Sub
 
Private Sub Command2_Click()
    ActionBouton2
End Sub
et dans un module

Code :
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
Option Explicit
 
Public nobj() As Long
Public xc() As Long
Public yc() As Long
Public s() As Long
Public d() As Long
Public xx() As Long
Public yy() As Long
Public angle() As Long
 
Public moyenne1 As Double
Public moyenne2 As Double
Public moyenne3 As Double
Public moyenne4 As Double
Public moyenne5 As Double
Public moyenne6 As Double
Public moyenne7 As Double
Public variance1 As Double
Public variance2 As Double
Public variance3 As Double
Public variance4 As Double
Public variance5 As Double
Public variance6 As Double
Public variance7 As Double
Public Ecart_type1 As Double
Public Ecart_type2 As Double
Public Ecart_type3 As Double
Public Ecart_type4 As Double
Public Ecart_type5 As Double
Public Ecart_type6 As Double
Public Ecart_type7 As Double
 
Private Sub CalculMoyenneEcartType(ByRef monTab() As Long, ByRef moy As Double, ByRef ectyp As Double)
    Dim somme As Double
    Dim i As Integer
 
    somme = 0
 
    For i = 0 To UBound(monTab)
        somme = somme + monTab(i)
    Next i
 
    moy = somme / (UBound(monTab) + 1)
 
    somme = 0
 
    For i = 0 To UBound(monTab)
        somme = somme + (monTab(i) - moy) ^ 2
    Next i
 
    ectyp = Sqr(somme / (UBound(monTab) + 1))
End Sub
 
Public Sub ActionBouton1()
    'Ouverture du fichier et récupération des données
    Dim NOM_FICHIER As String
    Dim FICHIER As String
    Dim TOTAL As Integer
    Dim tmp As String
    Dim n As Integer
 
    'Mis en commentaire car je ne sais pas ce qu'est File1 et je n'utilise pas habituellement les $
'    CHEMIN$ = File1.Path
'    FICHIER$ = File1.Filename
'    NOM_FICHIER = CHEMIN$ + "\" + FICHIER$
 
    Open NOM_FICHIER For Input As #1
    Input #1, tmp
    TOTAL = CInt(tmp)
    Line Input #1, tmp 'ligne suivante
 
    ReDim n°obj(TOTAL - 1)
    ReDim xc(TOTAL - 1)
    ReDim yc(TOTAL - 1)
    ReDim s(TOTAL - 1)
    ReDim d(TOTAL - 1)
    ReDim xx(TOTAL - 1)
    ReDim yy(TOTAL - 1)
    ReDim angle°(TOTAL - 1)
 
    For n = 0 To TOTAL - 1
        Input #1, nobj(n), xc(n), yc(n), s(n), d(n), xx(n), yy(n), angle(n)
    Next n
 
    Close #1
 
    Debug.Print
 
    'Calcul des Moyennes et des écart-types
    CalculMoyenneEcartType angle, moyenne1, Ecart_type1
    CalculMoyenneEcartType xc, moyenne2, Ecart_type2
    CalculMoyenneEcartType yc, moyenne3, Ecart_type3
    CalculMoyenneEcartType s, moyenne4, Ecart_type4
    CalculMoyenneEcartType d, moyenne5, Ecart_type5
    CalculMoyenneEcartType xx, moyenne6, Ecart_type6
    CalculMoyenneEcartType yy, moyenne7, Ecart_type7
 
    'Affichage
    Debug.Print "la moyenne des angles est de " & moyenne1 & "degrés"
    Debug.Print "la moyenne des xc est de " & moyenne2
    Debug.Print "la moyenne des yc est de " & moyenne3
    Debug.Print "la moyenne des s est de " & moyenne4
    Debug.Print "la moyenne des d est de " & moyenne5
    Debug.Print "la moyenne des xx est de " & moyenne6
    Debug.Print "la moyenne des yy est de " & moyenne7
 
    Debug.Print "L'écart-type des angles est de " & Ecart_type1
    Debug.Print "L'écart-type des xc est de " & Ecart_type2
    Debug.Print "L'écart-type des yc est de " & Ecart_type3
    Debug.Print "L'écart-type des s est de " & Ecart_type4
    Debug.Print "L'écart-type des d est de " & Ecart_type5
    Debug.Print "L'écart-type des xx est de " & Ecart_type6
    Debug.Print "L'écart-type des yy est de " & Ecart_type7
 
    Debug.Print
 
    'Calcul des variances
    variance1 = Ecart_type1 ^ 2
    variance2 = Ecart_type2 ^ 2
    variance3 = Ecart_type3 ^ 2
    variance4 = Ecart_type4 ^ 2
    variance5 = Ecart_type5 ^ 2
    variance6 = Ecart_type6 ^ 2
    variance7 = Ecart_type7 ^ 2
 
    'Affichage
    Debug.Print "la Variance des angles est de " & variance1
    Debug.Print "la Variance des xc est de " & variance2
    Debug.Print "la Variance des yc est de " & variance3
    Debug.Print "la Variance des s est de " & variance4
    Debug.Print "la Variance des d est de " & variance5
    Debug.Print "la Variance des xx est de " & variance6
    Debug.Print "la Variance des yy est de " & variance7
End Sub
 
Public Sub ActionBouton2()
    'Calcul de la covariance
    Dim sigmaxy As Double
    Dim i As Integer
 
    sigmaxy = 0
    For i = 0 To UBound(s)
        sigmaxy = (sigmaxy + ((s(n) - moyenne4)) * ((d(n) - moyenne5)) / TOTAL)
    Next i
 
    Debug.Print sigmaxy
 
    'Etc...
End Sub
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h46.


 
 
 
 
Partenaires

Hébergement Web