Calcul de somme sous condition en VBA

Fermé
superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006 - 17 juil. 2006 à 12:11
superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006 - 20 juil. 2006 à 16:13
Bonjour a tous

Je suis tout nouvo alors bonjour tous le monde.
Je travail actuellement sur un simulateur de controle aérien, et j'ai quelque problème avec mon VBA, énormément. J'ai débuter le VBA, il y a 2 semaines.

Bon voila mon problème

Je doit déterminer le nombre d'avion ayant un changement par période de 2 minutes.

https://www.cjoint.com/?hrkqNxXF6V

voila pour l'instant le début de mon programme VBA

Pour cela je doit déterminer quelque condition
regarder si mon avion est bien compris dans l'interval de temps, regarder si c'est un avion du secteur aérien pris en compte, la sa va pour le moment, sa j'ai réussi.

Maintenant la partie qui bloque le plus pour moi.
Je doit déterminer combien d'avion ont eu un changement de +ou- 15°
sur la colonne D
et en faire la somme, des avions bien sur(le prog que j'ai fai, j'ai pluto l'impression qu'il somme les dégré lui)

je doit donc determiner si mon avion a eu cette modification, et vérifier que cette modification est bien celle de cette avion

TBS_EW FS 16:44:15 _ 85
TBS_EW FS 16:44:20 _ 75
TBS_EW FS 16:44:25 _ 73
TBS_EWC FS 16:44:25 _ 85
TBS_EW FS 16:44:30 _ 61
TBS_EWC FS 16:44:30 _ 75
TBS_EW FS 16:44:35 _ 49
TBS_EWC FS 16:44:35 _ 73

La sur cet exemple l'avion TBS_EW a eu une varion supérieur a 15°
TBS_EWC a eu aussi une variation, mais pas de 15°
Donc 1 avion ici

Le problème que je rencontre c'est comment faire pour mettre en place ces conditions, et avec l'itération, quand on passe a la deuxième ligne, vérifier que l'avion sur lequel les calculs sont fait, n'a pas déja été pris en compte.

donc quand on ai en ligne 2, on verifie que le nom de l'avion n'est pas le meme que les lignes précédentes, et ainsi de suite

ligne 4, on regarde ligne3,ligne2, ligne1
...

Merci
A voir également:

32 réponses

superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
19 juil. 2006 à 15:04
je vien de regarder les résultats, pour savoir si c'était juste une erreur de 1

Mais
1 4:44:15 4:46:14 8
2 4:46:15 4:48:14 10

10 est le nombre d'avion sur l'interval

le nombre d'avion ayant eu une déviation est 7
3 avion n'ayant pas eu l'ecart suffisant

on peut garder la colonne donnant le nombre d'avion pour les sources, et savoir sur tant d'avion, il y a en eu tand qui on eu la déviation.

Mais il faudrait mettre en colonne I, le nb a/c ayant eu une déviation, la sytème métant lui en A1
le nombre d'avion au total sur tout les intervals, ayant eu cet déviation
0
superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
19 juil. 2006 à 15:20
Pour explication voila se qu'il faudrait faire pour la mise ne forme

Garder les colonnes EFGH pour les mettres en ABCD, étant donnée, qu'après d'autre résultats seront a y ajouter.

de plus pour la déviation

entre 16:44:00 à 16:45:59 calcul déviation correspondante en E2
entre 16:46:00 à 16:47:59 calcul déviation correspondante en E3
a chaque fois il faut calculer la déviation correspondante a l'interval


J'ai regardé la script VBA, plus en détail, il faudrait peut etre ajouter un boucle comme pour le calcul du nombre d'avion par tranche


De plus, quand tout ceci sera fini, et fonctionnera comme sur des roulettes grace a ton aide. Il me faudra ton "nom", juste pour mettre dans les remerciements et explication du programme.
Et oui toute personne aidant doit etre cité, sauf si tu ne souhaite pas.
0
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 528
19 juil. 2006 à 23:29
Hello,

J'ai pu m'y remettre un peu ce soir...

https://www.cjoint.com/?htxD1rBDIC

J'ai donc modifié la présentation, en échangeant les colonnes.
Dans la version précédente, la liste des avions devait être bonne. Par contre, pour la répartition par tranches horaires, je prenais la totalité des avions. Pfff... j'ai modifié ça.

Je me suis dit aussi que quand un avion passe de 357° à 5°, ça fait un écart énorme, mais en fait la déviation est minime. J'ai donc pris une option : si l'écart est > 345°, on laisse tomber, parce qu'en fait ça fait moins de 15°, en sens inverse. Dis-moi si ça colle.

J'ai rétabli le calcul du temps initial pour avoir une minute juste.

Je pars vendredi, et demain j'ai pas mal de chats à fesser, comme on dit chez moi.

A+
0
superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 09:31
Je vien d'essayer avec mon classeur1, pour vérifier, les calculs montre un problème

le système recopie sur le feuille3 et les met par période, mais en feuille2, les interval vont de 16:44:00 à 16:45:59
alors que sur le feuille3,ils vont de 16:44:00 à 16:46:00

EFL41 FS 16:46:00 319 1
TBS_EW FS 16:44:15 85 1
TBS_EW FS 16:44:20 75 1
TBS_EW FS 16:44:25 73 1
TBS_EW FS 16:44:30 61 1
TBS_EW FS 16:44:45 55 1
TBS_EW FS 16:46:00 40 1
TBS_EWC FS 16:44:25 85 1
TBS_EWC FS 16:44:40 47 1
TBS_EWC FS 16:44:45 49 1
TBS_EWC FS 16:46:00 26 1

EFL41 ne devrais pas etre sur cet interval, mais en 2
tout comme une ligne de TBS_EW et TBS_EWC

de plus en D, c'est donc le nombre d'avion présent par tranche de 2 minutes

en E et F, le nombre d'avion ayant eu un changement.
se nombre et réaliser pour l'ensemble des cellules de temps, alors qu'il le fodrait sur le intervals

donc calculer le nombre de déviation sur 2 minutes
et après on recalcul sur les 2 minutes suivantes
en colonne E

le nom des avions n'est pas nécessaire


Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 09:36
J'ai modifié ces lignes pour que le tri se fasse sur les memes intervals que les résultats.
Le nombre d'avion en D, est juste maintenant.

With FD
.Rows(1).Copy
Range("A1").Select
ActiveSheet.Paste
Derlig = .Cells(65536, 1).End(xlUp).Row
J = 1
HDeb = Int(.Cells(2, 3).Value * 3600) / 3600
HFin = HDeb + TimeValue("00:01:59") * NbTr
For I = 2 To Derlig
If .Cells(I, 2).Value = Secteur _
And .Cells(I, 3).Value <= HFin Then
J = J + 1
.Rows(I).Copy
Cells(J, 1).Select
ActiveSheet.Paste
Cells(J, 5).Value = Int(((Cells(J, 3).Value - HDeb) / TimeValue("00:01:59")) + 1)
End If
Next
End With

Par contre, il ne reste plus qu'a calculer le nombre de déviation par interval
0
superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 09:45
Le nombre en D, c'est le nombre d'avion ayant eu une déviation?
Je vien de faire le test, c'est a ni plus rien comprendre pour moi.

Alors tout compte fait, c'est bon, par contre j'aimerais supprimer les lignes E et F, pour les remplacer par le nombre d'avion présent sur l'interval
et le nombre d'opération qu'il y a eu sur l'interval

'Order Number
Dim a As Range, w%

Range("G2:G" & Range("G65536").End(xlUp).Row).Select
Selection.ClearContents

For r = 2 To Range("B65536").End(xlUp).Row
For Each a In Range("E2:E" & X + 1)
If Cells(r, 3).Value >= Range("E" & a.Row).Value Then
If Cells(r, 3).Value < Range("F" & a.Row).Value Then
If Cells(r, 2).Value = "FS" Then
Cells(a.Row, 7).Value = Cells(a.Row, 7).Value + 1
Exit For
End If
End If
End If
Next a
Next r

Par contre, le nombre d'avion présent sur le secteur par interval, tu l'avais fait, le code y est encore sur le VBA, mais il ne s'affiche pas

merci
0
superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 09:57
Tout compte fait, ordre number, je n'arrive pas a le mettre

étant donné que certain éléments sont sur la feuil1, les autre devant etre mis sur la feuil2

Ti cout de main, please

Merci
0
superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 10:50
Y as bien un problème sur la déviation

Il compte bien le nombre d'avion et la met dans la case correspondante pour l'interval, mais quand il passe eu suivant, il compte toujours du début.

Quand je prend 1 interval au lieu des 10
j'ai
1 16:44:00 16:45:59 5

quand j'en prend 2
1 16:44:00 16:45:59 6
2 16:46:00 16:47:59 8

pour 3
1 16:44:00 16:45:59 5
2 16:46:00 16:47:59 8
3 16:48:00 16:49:59 8


petite problème je pense
je devrai avoir 5 et pour l'autre 6
0
superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 11:11
Bon j'ai encore regardé en détail

En colonne D, tu calcul le nombre d'avion par période
et non pas le heading change

que tu fait en globale est non pas par interval de temps
0
superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 11:46
J'ai remis le nombre d'avion par interval en D

en retirant la ligne
'If Déviation > 180 Then Déviation = Déviation - 360

le nombre d'avion présent par interval devient le bon

mais sur 10 interval, les valeurs seront les bonnes

mais si je met 1 interval, c'est parti le délire

Tranche Début Fin Nb a/c 5
Avions Angles
1 16:44:00 16:45:59 5 AIRONLY 27
EFL41 29
FOL1111 27
TBS_EW 109
TBS_EWC 107

il y a bien 5 déviation

mais si je met 10 interval

1 16:44:00 16:45:59 7
2 16:46:00 16:47:59 10
3 16:48:00 16:49:59 10
4 16:50:00 16:51:59 9

et la 7 est bien le nombre d'avion par inteval, tout comme 10 pour le suivant...

Je ne comprend plus du tout
0
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 528
20 juil. 2006 à 12:45
Hello superbaptbapt,

Bon, je suis obligé de décrocher (heureusement je ne suis pas un avion !).
Je te mets là mes commentaires sur la macro et ce que j'ai compris.
https://www.cjoint.com/?humSj6tf7B

Bonne chance pour la suite.
Amicalement.
Armojax.

P.S. Si d'autres veulent prendre le relais...
0
superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 12:51
Merci de ton aide Armojax

Est bonne vacance, je pense
0
superbaptbapt Messages postés 32 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 20 juillet 2006
20 juil. 2006 à 16:13
Il y aurait une méthode, afin d'obtenir les bons résultats.

Lors du calculs du heading par interval, il serait nécessaire d'ajouter des conditions initiales aux intervals suivants.

C'est a dire ajouter en condition initials, la dernière valeur de chaque avions, afin de faire les comparaisons.

Cela évitant de faire une comparaison avec 0, s'il n'y a qu'un seul terme.

Donc il faut reprendre les dernières valeurs de chaques avions, pour chaque interval, et les mettres comme conditions initials, et ainsi de suite

TBS_EW FS 16:44:15 85
TBS_EW FS 16:44:20 75
TBS_EW FS 16:44:25 73
TBS_EW FS 16:44:30 61
TBS_EW FS 16:44:45 55
TBS_EW FS 16:46:00 40
TBS_EW FS 16:46:05 57
TBS_EW FS 16:49:00 40

la on a les conditions global, par interval, on a
TBS_EW FS 16:44:15 85
TBS_EW FS 16:44:20 75
TBS_EW FS 16:44:25 73
TBS_EW FS 16:44:30 61
TBS_EW FS 16:44:45 55
pour le premier, on effectue le calcul

TBS_EW FS 16:44:45 55 valeur ajouté,cond initial
TBS_EW FS 16:46:00 40
TBS_EW FS 16:46:05 57
pour la seconde période

TBS_EW FS 16:46:05 57 valeur ajouté
TBS_EW FS 16:49:00 40
pour la troisième

....

mais ne sait pas faire, comme d'habitude

Sinon, on m'a dit qu'il serait possible de le faire par tableau, mais ?

Merci
0