Somme d'une plage de cellules contiguës

Résolu/Fermé
skyscraper Messages postés 7 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 16 septembre 2018 - 15 sept. 2018 à 21:57
skyscraper Messages postés 7 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 16 septembre 2018 - 16 sept. 2018 à 01:17
Bonjour,

Il existe une formule Excel très intéressante pour faire une somme de plusieurs cellules contiguës :
=Somme(Decaler(réf;lignes;colonnes;hauteur;largeur))
par exemple :
=SOMME(DECALER(G175;;;;3))
et là vous venez de faire la somme des cellules G175 + H175 + I175
Bien sûr n'importe quelle variable peut-être utilisée et c'est vraiment très pratique.

Je voudrais faire la même chose mais en VBA, mais impossible de la transcrire.
Je connais les fonctions:
- WorksheetFunction.Sum(Plage1,Plage2,........)
- Offset(rowOffset, columnOffset)
- Resize(RowsSize, ColumnsSize)

mais impossible de les associer !!!!
A voir également:

3 réponses

Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 931
15 sept. 2018 à 23:16
Bonsoir, je ne suis pas bien fort en VBA, du coup quand je sèche sur un truc comme ça, je tente un enregistrement de macro, des fois ça marche.
0
skyscraper Messages postés 7 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 16 septembre 2018
16 sept. 2018 à 00:37
Bonsoir,

C'est justement sur quoi je cale.
J'y ai passé toute l'AM à tester dans tous les sens, enfin je crois avoir testé toutes les solutions,
mais j'en ai sûrement oublié une, la bonne.

par exemple j'ai testé :
WorksheetFunction.Sum(WSMois.Range(WSMois.Cells(175, 7), WSMois.Cells(175, 7).Offset(0, 0).Resize(0, 3)))

et j'ai en réponse :
<Erreur définie par l'application ou par l'objet>

Ai-je raison de penser que s'il est possible d'écrire une équation dans la formule d'une cellule, cette équation est aussi possible en VBA ?

Ce que je constate c'est que la fonction WorksheetFunction.Sum(Plage1,Plage2,........) n'accepte que des arguments correspondant à une seule cellule alors qu'il faut pouvoir incorporer une plage de cellule.
Connaissez-vous une autre fonction que "SUM" permettant de sommer plusieurs cellules ?

A+
0
skyscraper Messages postés 7 Date d'inscription dimanche 17 mai 2009 Statut Membre Dernière intervention 16 septembre 2018
16 sept. 2018 à 01:17
Je viens de résoudre mon problème ...


WorksheetFunction.Sum(WSMois.Range(Pointeur).Offset(0, 0).Resize(1, 3))

Il ne faut simplement pas redimensionner avec 0, c'est 1 au minimum ou rien

WorksheetFunction.Sum(WSMois.Range(Pointeur).Offset(0, 0).Resize(, 3))

et là pas besoin de boucle vous avez la somme de 3 cellules contiguës, que l'on peut décaler avec Offset à volonté et sommer le nombre de lignes et de colonnes que vous voulez.

WorksheetFunction.Sum(Pointeur.Offset(rowOffset, columnOffset) .Resize(RowsSize, ColumnsSize) )
0