Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1224 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Calcul de somme par plages . . .

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Calcul de somme par plages . . .

n°1290575
vbaright
Posté le 23-01-2006 à 23:46:33  profilanswer
 

Salut à tous,
 
Je souhaite de l'aide pour résoudre mon soucis.
Mes données sont sur la colonne A et je souhaite faire la somme de 5 cellules toutes les 5 cellules, et stocker les résultats sur la colonne B. Le code ci-dessous répond à ma demande : (j'ai eu une première aide pour obtenir ce code)
 
Sub Macro()
 
Dim varResultat As Single
For i = 1 To 5     'Colonne B
varResultat = 0   'Réinitialisation de la variable temporaire
For j = 1 To 5     'ColonneA
varResultat = varResultat + ActiveSheet.Cells((i * 5 - 5) + j, 1).Value
Next j
ActiveSheet.Cells(i, 2).Value = varResultat
Next i
 
End Sub
 
 
Si maintenant il y des dates, que doit-on rajouter et/ou modifier à ce code pour qu'il prenne en compte, dans le calcul des sommes, le nombre de semaines, c'est à dire que suivant le mois dans lequel on se base, il faut appliquer une somme de 4 ou 5.
 
Par exemple ici, pour le mois de Mars on fait la somme de 5 cellules, pour Avril la somme de 4 cellules, pour Mai la somme de 4 cellules, pour Juin la somme de 5 cellules
 
A                  B                  C
03/03/1997    6  
10/03/1997    2  
17/03/1997    1  
24/03/1997    8  
31/03/1997    7  
07/04/1997    6  
14/04/1997    5  
21/04/1997    4  
28/04/1997    2  
05/05/1997    1  
12/05/1997    0  
19/05/1997    7  
26/05/1997    2  
02/06/1997    3  
09/06/1997    5  
16/06/1997    6  
23/06/1997    9  
30/06/1997    1
 
 
Merci d'avance à tous!

mood
Publicité
Posté le 23-01-2006 à 23:46:33  profilanswer
 

n°1290644
galopin01
Posté le 24-01-2006 à 06:22:07  profilanswer
 

bonjour,
Le code suivant devrait faire l'affaire :

Code :
  1. Sub Test()
  2. Dim i%, Resultat As Single, v
  3. Do Until IsDate(Cells(i + 1, 1).Value)
  4.   i = i + 1
  5. Loop
  6. Do While IsDate(Cells(i + 1, 1).Value)
  7.   v = Cells(i + 1, 1).Value
  8.   Do While Month(v) = Month(Cells(i + 1, 1).Value)
  9.     Resultat = Resultat + Cells(i + 1, 2).Value
  10.     i = i + 1
  11.   Loop
  12.   Cells(i, 3).Value = Resultat
  13.   Resultat = 0
  14. Loop
  15. End Sub


A+


---------------
roger
n°1292330
vbaright
Posté le 25-01-2006 à 23:16:39  profilanswer
 

Merci galopin01, ça marche...
:)

n°1293012
vbaright
Posté le 26-01-2006 à 20:19:53  profilanswer
 

Je souhaite faire la moyenne et non plus la somme cette fois, qu'est ce qui change? merci bcp

n°1293020
galopin01
Posté le 26-01-2006 à 20:32:07  profilanswer
 

bonsoir,

Code :
  1. Sub Test()
  2. Dim i%, k%, Resultat As Single, v
  3. Do Until IsDate(Cells(i + 1, 1).Value)
  4. i = i + 1
  5. Loop
  6. Do While IsDate(Cells(i + 1, 1).Value)
  7. v = Cells(i + 1, 1).Value
  8. Do While Month(v) = Month(Cells(i + 1, 1).Value)
  9. Resultat = Resultat + Cells(i + 1, 2).Value
  10. i = i + 1
  11. k = k + 1
  12. Loop
  13. Cells(i, 3).Value = Resultat / k
  14. Resultat = 0
  15. k = 0
  16. Loop
  17. End Sub


A+
 


---------------
roger
n°1293132
vbaright
Posté le 27-01-2006 à 02:54:42  profilanswer
 

Bonsoir,
 
Merci de nouveau!!
 
J'ai deux autres questions stp
 
Si je souhaite cette fois appliquer la fonction stdev (écart type)?
J'ai essayé cela mais c'est pas correct :
 
Cells(i,3).Value = StDev(Resultat)
 
 
Les résultats obtenus (somme, ou moyenne...) sont donnés à coté de la dernière cellule du mois, est-il possible d'avoir les résultats les uns sous les autres..?
 
Merci bcp pr ton aide
 
a+

n°1293148
galopin01
Posté le 27-01-2006 à 08:49:18  profilanswer
 

bonjour,
 
Sub Test()
Dim i%, j%, k%, Resultat As Single, v
Do Until IsDate(Cells(i + 1, 1).Value)
i = i + 1
Loop
Do While IsDate(Cells(i + 1, 1).Value)
v = Cells(i + 1, 1).Value
Do While Month(v) = Month(Cells(i + 1, 1).Value)
Resultat = Resultat + Cells(i + 1, 2).Value
i = i + 1
k = k + 1
Loop
'pour sortie en feuille 2, colonne 1
Worksheets(2).Cells(j + 1, 1).Value = Resultat / k
'pour sortie en feuille 1,ligne 7, colonne 10
Cells(j + 7, 10).Value = Resultat / k
j = j + 1
Resultat = 0
k = 0
Loop
End Sub

 
tu ne peux calculer un écart que sur 2 ou plusieurs nombres : la syntaxe générale de StDev est :
Application.StDev(x, y)
 
StDev ne peut donc pas s'appliquer à Resultat
 
A+


---------------
roger
n°1293376
vbaright
Posté le 27-01-2006 à 13:45:28  profilanswer
 

bonjour,
 
en fait au lieu de faire la moyenne, je souhaite faire l'écart des nombres de chaque mois...
 
merci bien
a+
 
 

n°1293986
vbaright
Posté le 28-01-2006 à 14:40:20  profilanswer
 

Bonjour,
sur le meme modele, je veux faire l'écart type cette fois ci... comment faire stp?
merci pour ton tps et ton aide
a+

n°1294087
galopin01
Posté le 28-01-2006 à 20:00:18  profilanswer
 

bonsoir,

Code :
  1. Sub Test()
  2. Dim i%, j%, k%, Resultat As Single, v
  3. Do Until IsDate(Cells(i + 1, 1).Value)
  4. i = i + 1
  5. Loop
  6. sDep = Cells(i + 1, 2).Address
  7. Do While IsDate(Cells(i + 1, 1).Value)
  8. v = Cells(i + 1, 1).Value
  9. Do While Month(v) = Month(Cells(i + 1, 1).Value)
  10. i = i + 1
  11. Loop
  12. sFin = Cells(i, 2).Address
  13. MsgBox sDep & ":" & sFin
  14. Cells(i, 3).Value = Application.StDev(Range(sDep & ":" & sFin))
  15. j = j + 1
  16. sDep = Cells(i + 1, 2).Address
  17. Loop
  18. End Sub


A+


---------------
roger
mood
Publicité
Posté le 28-01-2006 à 20:00:18  profilanswer
 

n°1294144
vbaright
Posté le 28-01-2006 à 22:43:40  profilanswer
 

Bonsoir,
Merci bcp galopin01
 
un autre ptit truc please,  en fait sur le meme modele, je souhaite calculer les rentabilités mensuelles... par exemple ici, (B5-B1)/B1, puis (B9-B6)/B6 ... etc...
 
Merci!!!
 
ps: depuis quand tu pratiques vb?

n°1295893
vbaright
Posté le 31-01-2006 à 20:50:07  profilanswer
 

Bonsoir,  
Merci bcp galopin01  
 
un autre ptit truc please,  en fait sur le meme modele, je souhaite calculer les rentabilités mensuelles... par exemple ici, (B5-B1)/B1, puis (B9-B6)/B6 ... etc...  
 
Merci!!!  
 
ps: depuis quand tu pratiques vb?

n°1295903
red factio​n
Posté le 31-01-2006 à 21:02:11  profilanswer
 

Moi je voudrais faire un OS opensource qui ait les mm fonctionnalite que XP
Tu peux m'envoyer le source par MP?
 
merci galopin01

n°1297024
vbaright
Posté le 01-02-2006 à 21:55:29  profilanswer
 

oh!  :ouch: galopin01 a disparu?

n°1298119
vbaright
Posté le 02-02-2006 à 21:07:52  profilanswer
 

Bonjour à tous,
 
J'ai besoin d'aide svp
 
Basé sur les memes données d'en haut, je souhaite calculer à l'aide d'une macro les rentabilités mensuelles.
Soit: (B5-B1)/B1 , puis (B9-B6)/B6 , etc.  Le tout à avoir dans la colonne C
 
La solution manuelle n'est pas possible car c'est trop long, les colonnes sont pleines de données..
 
Voici les données

Code :
  1. 03/03/1997     6 
  2. 10/03/1997     2 
  3. 17/03/1997     1 
  4. 24/03/1997     8 
  5. 31/03/1997     7 
  6. 07/04/1997     6 
  7. 14/04/1997     5 
  8. 21/04/1997     4 
  9. 28/04/1997     2 
  10. 05/05/1997     1 
  11. 12/05/1997     0 
  12. 19/05/1997     7 
  13. 26/05/1997     2 
  14. 02/06/1997     3 
  15. 09/06/1997     5 
  16. 16/06/1997     6 
  17. 23/06/1997     9 
  18. 30/06/1997     1
  19. ....
  20. ....


Merci bcp à tous


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Calcul de somme par plages . . .

 

Sujets relatifs
[javascript] calcul de la hauteur d'un élément[java] lire un feuille de calcul excel au format xml ?
Help: Comment faire la somme des Produits en XSLT[resolu]Ma fonction de calcul des fps est-elle bonne ?
calcul de nombre[Delphi] VCL de visualisation et calcul scientifique
Problème d'arrondi, somme de pourcentage au dela de 100%calcul avec requêtes
[VBA-EXCEL{DONE} faire la somme des cellules A1 de toutes les feuillesSomme d'une colone en ignorant les lettres
Plus de sujets relatifs à : Calcul de somme par plages . . .


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR