Somme variable en VBA pas en formule [Résolu/Fermé]

Signaler
Messages postés
2
Date d'inscription
jeudi 8 décembre 2016
Statut
Membre
Dernière intervention
9 décembre 2016
-
Messages postés
1411
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
18 décembre 2020
-
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

Messages postés
3
Date d'inscription
jeudi 8 décembre 2016
Statut
Membre
Dernière intervention
8 décembre 2016

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)
Messages postés
2
Date d'inscription
jeudi 8 décembre 2016
Statut
Membre
Dernière intervention
9 décembre 2016

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 !
Messages postés
1411
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
18 décembre 2020
148
Bonjour le fil, bonjour le forum,

Pas sûr d'avoir bien compris, mais pourquoi pas, tout simplement =Application.Sum (Selection)