Somme avec variable en macro VBA [Fermé]

Signaler
-
 Loumie64 -
Bonjour,

j'ai un petit soucis pour faire une simple addition d'un certain nombre de cellule d'une même colonne avec une variable.

le nombre de cellule peut varier à chaque execution de la macro.

exemple :

je veux addtionner de la cellule D2 à la cellule Dx (étant ma variable) et que le total soit dans la cellule Dx +1.

le début de ma macro j'initialise la variable mais après je n'arrive pas à réutiliser cette même variable dans la fonction somme que je veux faire.

merci de votre aide ...

10 réponses

Bonjour,


sub somme
dim somme,ligne as string
somme =0
ligne = 2
do while cells(ligne, 5) <> ""
somme = somme + cells(ligne,5)
ligne =ligne+1
loop

cells(ligne,5) = 5

end sub

A plus
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
256
une petite correction

une variable string qui s'ajoute ça donne 2 + 2 =22
et en integer 2+ 2 = 4
; )
le reste est ok


Sub somme()
Dim somme As Double
Dim ligne As Integer
Dim colonne As Integer
somme = 0
ligne = 2
colonne = 5

Do While Cells(ligne, colonne) <> ""
    somme = somme + Cells(ligne, colonne)
    ligne = ligne + 1
Loop

Cells(ligne, colonne) = somme

End Sub
cette solution n'est pas ce que je cherche car elle me donne le nombre de cellule alors que moi je veux la somme des valeurs contenues dans ces cellules ...

désolé ...
Messages postés
16365
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
13 janvier 2021
3 110
bonjour, pas trop compris ta demande mais si il s'agit de faire la somme des valeurs d'un nombre de cellules jointives à partir de D2, il n' y a pas besoin de faire une boucle

Sub additionner()
Dim derlig As Long
derlig = Range("D65536").End(xlUp).Row
Cells(derlig + 1, 4) = Application.Sum(Range("D2:D" & derlig))
End Sub

Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
256
Pas d'accord !
Melanie1324 a fait une petite erreur soit mais son code reste correct!

si tu l'utilise tel quel

place une suite de chiffre ente E2 et E5 par exemple 8 9 1 4 le résultat en E6 tu auras 22.

mais si tu veux la colonne D alors change la valeur de colonne tu mets colonne = 4.

J'attends ton test. et Mélanie1324 Aussi.
et si c'est bon tu mets résolu sur le premier post
je vous remercie pour toutes ces solutions mais malheureusement cela ne répond pas à mon besoin ... en adaptant la première solution j'arrive à faire ce que je veux mais mon pb est qu'il n'y a pas de données présentes dans les cellules . Les données seront saisies ulterieurement pour controler celles d'une extraction. Je veux seulement que sur la dernière cellule de la colonne (D22 ou D5 ou D32 selon les données présentes dans l'extraction) soit fait un total des cellules et que ce calcul soit visible et reste dans cette cellule . par exemple : ctiveCell.FormulaR1C1 = "=SUM(R[-498]C:R[-1]C)" sauf que le -498 est remplacé par ma variable .
j'espère que cette explication sera un peu plus précise.

encore merci a tous de votre aide ...
si j'essaie d'adapter une formule simple avec ma variable (x) j'obtiens une erreur :

ActiveCell.FormulaR1C1 = "=SUM(R[-( & x )]C:R[-1]C))"

merci de votre aide ...
rebonjour,

ce que tu nous demandes, moi, je ne sais pas le réaliser via une macro.

Je te propose deux solutions, soit tu gardes la macro que j'ai écrite avec la correction de bidouilleu :
et tu cliques sur la macro dès que tu as recopié ton extraction.


Sinon, j'ai une autre solution.
Tu te réserves la première ligne et tu écris :
=SOMME(D2:D10000)

Ainsi, tu auras toujours la somme qu'il y ait des données ou non.

Mais sinon je sèche
Pas grave ... je garde ma macro actuelle dans l'espoir de trouver si cela est possible.
je te remercie de ton aide et te souhaite de bonne fetes de fin d'année ... :-)
@+
Bonjour,
j'arrive un peu tard je ne sais pas si c'est ce que tu voulais :

Sub additionner()
Dim derlig As Long
Dim dercol As Long

derlig = Range("D3").End(xlUp).Row
dercol = Range("D2").End(xlToRight).Column

Cells(derlig + 1, 4) = Application.Sum(Range(Cells(2, 4), Cells(2, dercol)))

End Sub


a+