Somme variable en VBA pas en formule

Résolu/Fermé
Gorgul Messages postés 2 Date d'inscription jeudi 8 décembre 2016 Statut Membre Dernière intervention 9 décembre 2016 - 8 déc. 2016 à 14:41
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 9 déc. 2016 à 11:27
Bonjour,

Je m'appelle Sébastien, Je suis nouveau sur le forum car la plus part du temps je trouvais tout mon bonheur sans que j'ai besoin de poser ma question.

Sauf que maintenant, sauf erreur de ma part, je n'ai pas trouvé ce que je voulais réaliser et je sollicite à mon tour l'aide des internautes qui m'a toujours été d'une très grande utilité !

je m'explique :
1) j'ai sélectionné une plage de donnée variable par macro (ok)
2) j'ai trouvé un bout de code qui me récupère la première coordonnée et la dernière coordonnée de ma plage de donnée (ok)
3) je souhaite faire la somme de cette plage de donnée en utilisant les deux variable "début" et "fin" (cf code ci dessous)

En gros mon code me récupère une plage de donnée précise. J'ai réussi à récupérer grâce a des variables la première cellule de ma plage de donnée et la dernière. Mon but maintenant, c'est d'utiliser les variables pour faire une somme de la plage.

Exemple :

debut = f26
fin = f34
mais plus tard ça pourrait très bien être : f44 à f53 ou f74 à f85 (toujours dans la colonne f)

donc mon but serrait de trouver une macro en "VBA" dont la forme (en formule) serrait :
=somme(debut:fin)

sauf que je sais pas du tout écrire ça en VBA....

J’espère avoir été claire :D

code ou je bloque :


'(pour que ça marche faut selectionner une plage de donnée sur une seule colonne)

With Selection
debut = .Item(1).Address
fin = .Areas(.Areas.Count)(.Areas(.Areas.Count).Count).Address
End With

'sauf que la ligne du dessous additionne uniquement la première cellule et la dernière...
Range("G8").Value = Application.Sum(Range(debut), Range(fin))

2 réponses

VBAntoine Messages postés 3 Date d'inscription jeudi 8 décembre 2016 Statut Membre Dernière intervention 8 décembre 2016
8 déc. 2016 à 16:36
Salut,
problème dans l'écriture de la selection
il faut voir ce que renvoie précisément ta fonction dans (debut) et (fin)

Range("G8").Value = Application.Sum(Range(("A18"), ("B20")))
OU
Range("G8").Value = Application.Sum(Range((cells(18,1), cells(20,2)))
OU
dim maselection as range
Set maselection = Range(("A18"), ("B20"))
Range("G8").Value = Application.Sum(maselection)
0
Gorgul Messages postés 2 Date d'inscription jeudi 8 décembre 2016 Statut Membre Dernière intervention 9 décembre 2016
9 déc. 2016 à 10:13
Alors pour être plus précis pour les autres qui se poserai la même question, ma fonction (debut) et (fin) renvois la chose suivante :
debut : "$f$26"
fin : "$f$34"

Ce qui correspond donc à mes coordonnées du début et de fin de ma sélection variable. En passant par le code suivant tout fonctionne à merveille !

Dim maselection As Range 'déclare maselection comme un range

With Selection 'dans ma selection
debut = .Item(1).Address 'trouve l'adresse du début de ma selection soit "$f$26"
fin = .Areas(.Areas.Count)(.Areas(.Areas.Count).Count).Address 'trouve l'adresse de fin de ma selection soit "$f$34"
End With

Set maselection = Range((debut), (fin)) 'defini la selection
Range("G8").Value = Application.Sum(maselection) 'applique la somme


VBAntoine tu me sauve ! j'ai passé mon après-midi à chercher une solution et enfaite c'était tout simple !

Merci t'es un AS !
0