vbaright
Messages postés10Date d'inscriptionjeudi 19 janvier 2006StatutMembreDernière intervention 3 février 2006
-
19 janv. 2006 à 15:04
vbaright
Messages postés10Date d'inscriptionjeudi 19 janvier 2006StatutMembreDernière intervention 3 février 2006
-
1 févr. 2006 à 21:53
Salut à tous,
J'ai un ptit soucis sur vba. 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.
J'ai essayé avec le code ci dessous mais ça fonctionne pas, j'ai besoin d'aide svp, merci à tous
---
Sub Macro()
Dim Imax As Integer
Imax = Round(2031 / 5)
Dim Res(0 To 405) As Double 'il y aura 405 résultats, 405 paires de 5 cellules
For i = 0 To 405
Res(i) = WorksheetFunction.Sum(Range("Cells(3 + 5 * i, 2), Cells(3 + 5 * (i + 1), 2"))
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 19 janv. 2006 à 17:50
L'indentation pour commencer !!! Pi moi, perso, je ferais comme ça :
Sub Macro()
Dim varResultat As Single 'Ou alors Long selon que tu ai ou non des décimales!
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
Enjoy
<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 24 janv. 2006 à 03:55
Note qu'il faut cliquer sur le bouton "Réponse Acceptée" des réponses qui te conviennent !!! C'est important!
C'est simple et compliqué à la fois...
Déjà, il faut utiliser une technique plus "pro".
Il faut déja récupérer la valeur de la cellule puis en extraire le mois. Or, là, tout dépend du format de ta cellule !!! Je vais ici considérer qu'elle est au format texte et non au format date ! A toi ensuite d'adapter selon tes besoins si tu n'utilises pas le format texte!
Ici on suppose également qu'on ne connait pas du tout le nombre de lignes (de toutes les lignes comme des blocs) :
Sub Macro()
Dim varResultat As Single 'Ou alors Long selon que tu ai ou non des décimales!
Dim varDateValue As String 'String puisqu'ici on considère les dates comme étant des chaines!
Dim varOldDateValue As String 'Variable temporaire
'On a besoin de deux niveaux de compteurs :
Dim varCompteur1 As Integer 'Compteur de la colonne A
Dim varCompteur2 As Integer 'Compteur de la colonne B
'Initialisation des variables
varResultat = 0
varCompteur1 = 1
varCompteur2 = 1
varDateValue = ActiveSheet.Cells(varCompteur1,1)
If varDateValue = "" Then Exit Sub
varOldDateValue = funcTraitementDate(varDateValue) 'Appel notre fonction d'extraction du mois
'Routine
Do
'Récupèration de la date
varDateValue = ActiveSheet.Cells(varCompteur1,1)
'Termine le precessus s'il n'y a une cellule vide dans la colonne A
If varDateValue = "" Then Exit Do
'Appele notre fonction d'extraction du mois
varDateValue = funcTraitementDate(varDateValue)
Private Function funcTraitementDate(ByVal varDateValue As String)
'C'est là que tu peux modifier la technique d'extraction du mois en fonction
'du type de donnée des cellules. Mais pense à modifier le type des variables également!
funcTraitementDate = Mid$(varDateValue, 4, 2) 'Renvoie un texte de 2 caractères à partir du 4ème
End Function
Bon, j'ai fait ça de tête donc à toi de verrifier et de me dire d'accord
Et n'oublie pas d'accepter la/les réponse/s qui t'a/on convenue/s
Enjoy
<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
CTAC
Messages postés133Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention 8 juin 20125 19 janv. 2006 à 18:21
Bonjour,
Sub SomColA()
With [B1]
.Formula = "=SUM(INDIRECT(""A"" & ((ROW() - 1)*5)+1 & "":A"" & (ROW()*5)))"
.AutoFill Range("B1:B" & Int((Range("A" & Rows.Count).End(xlUp).Row) / 5))
End With
End Sub
vbaright
Messages postés10Date d'inscriptionjeudi 19 janvier 2006StatutMembreDernière intervention 3 février 2006 23 janv. 2006 à 23:21
Salut à tous,
Ok ScSami, ça marche maintenant... merci encore
Que doit-on rajouter au code, pour qu'il prenne en compte, dans le calcul des sommes, le nombre de semaines. 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
vbaright
Messages postés10Date d'inscriptionjeudi 19 janvier 2006StatutMembreDernière intervention 3 février 2006 1 févr. 2006 à 21:53
Bonjour,
Je souhaite calculer les rentabilités mensuelles avec une macro [soit (B3-B1)/B1, puis (B5-B4/B4), etc...], la solution manuelle n'est pas envisageable car les colonnes sont remplies. Les données sont comme ceci:
A B C
03/03/1997 6
17/03/1997 1
31/03/1997 7
07/04/1997 6
21/04/1997 4
05/05/1997 1
19/05/1997 7
02/06/1997 3
16/06/1997 6
30/06/1997 1
... ...
Le code suivant peut etre utile, il permet de calculer les moyennes mensuelles: