A B .. D E F ... I J
43 <> 23-oct <> 3 <> 1440 <> 497 <> 43 <> 32%
43 <> 24-oct <> 3 <> 1440 <> 596 ....
la colonne A correspond à la semaine correspondant à la date en colonne B
je voudrais faire une moyenne... sur les semaines.
je voudrais faire une boucle tant que ... faire.... sinon.... fintantque !!
je n'arrive pas bien à finir ma boucle, je n'ai pas bien compris l'aide de VBA et c'est pour cela que je me tourne vers vous !
Code :
'============== calcul de la moyenne
Dim stme As Integer ' somme Tme
Dim sto As Integer ' somme To
Dim n As Integer ' numeros de la dernière ligne
Dim p As Integer
Dim week_dern As Integer ' numeros de la dernière semaine
Dim ws As Worksheet
Set ws = Worksheets("selva" )
'// on initialise
stme = 0
sto = 0
' // n est le n° de la dernière ligne des dates
n = ws.Range("A1" ).End(xlDown).row
p = n
' // n° de la dernière semaine enregistré
week_dern = ws.Range("I1" ).End(xlDown).Value
Debug.Print " dernière semaine : " & week_dern
Do ' // les nouvelles valeurs implanté sont dans la même semaine
While Cells(p, 1) = week_dern
stme = stme + Cells(p, 6).Value
sto = sto + Cells(p, 5).Value
p = p - 1
Exit Do
' // les nouvelles valeurs implanté sont dans une nouvelle semaine
' on inscrit la dernière semaine dans la ligne suivante, colonne I
M'enfin, pourquoi ces Exit Do ? Tout ce qui est entre les lignes 27 à 37 ne sera jamais exécuté !
Il y a une subtile différence entre Do .. Exit Do .. Loop, Do While .. Loop et Do .. Loop While. Il s'agit de savoir si on entre au moins une fois dans la boucle et quand et comment on en sort. Dans ton cas, j'écrirais plutôt Do .. Loop While
Etudie ce bout de code :
Code :
Dim c_frst As Range
Dim c_last As Range
Dim c_curr As Range
Dim w_prev As Integer
Dim w_curr As Integer
dim sum As Integer
' // On va parcourir la colonne B qui contient les dates
bon, c'est jolie, au lieu du debug.print, je mettrais la bonne case ou il faut l'imprimer... ok ce programme va a chaque fois refaire tout les calculs... je plein l'ordi !! lol quand meme pas... je cherche encore et je renvoie apres, mais mon idée d'origine, dans les calculs, c'est bien ce que tu me propose Zeb, mais dans la recherche : 2 tableau (sur le meme onglet) 1 pour les date journalière, 1 pour les semaine) on regarde la dernière semaine = a on regarder la dernière date et sa semaine correspondante = b si a<>b: on note le n° de la semaine et le calcul du TRG (ligne 26) à la suites des autres semaines si a=b : on recalcul le TRG de la semaine a et on note la nouvelle valeur..
maintenant que c'est clair pour moi (et j'espère pour vous), je vous réecris dès que j'ai trouvé.. en restant à l'ecoute...
Message édité par loic_akela le 07-11-2007 à 10:38:52
J'ai un depassement de capacité ligne 25.... je suis pas d'accord !! Ce n'est pas de si gros chiffres !!
pourtant, je dois pas etre loin... je trouve pas l'erreur bete....
help me please
euh... non , en général, je lie et j'essaye de comprendre avant d'essayer.. j'ai rien compris !! donc, je te posais une question inocente...
il sert a quoi ton code ?
pour info sur un message plus haut, j'ai essayer avec SIngle et Double.. toujours le meme probleme : depacement de capacité !!
---------------
C'est une fille ! D(ad)-day - 4 semaines
---
Nouvelle config: Q6600 - Asus P5Q Pro - 4Go de OCZ DDRII PC8500 - HD4850 512Mo - Iiyama ProLite B2403WS -B1
MEMBRE DU GROUPUSCULE DES AVATARS EN COLÈRE
frodon1» Pas tout à fait. Sinon, le message serait Erreur d'exécution '11': Division par zéro. et non pas Erreur d'exécution '6': Dépassement de capacité.. Mais ce n'est pas loin
loic_akela» ... Essaie mon p***** de bout de code.
Bien vue.. c honteux de diviser par zeros !!
en revanche, j'ai des resultats loufoque... (le programme ne plante pas, mais les valeurs qu'il me donne ne sont pas bonne...)
je vous renvoie une correction si je m'en sort, mais je suis tj preneur d'idées...
Le problème est dans l'initialisation je pense. On ne doit pas commencer par une rupture. Donc il faut que la premier condition soit vraie (w_cour = w_dern).