Somme d'une plage de cellules contiguës

Résolu
skyscraper Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
skyscraper Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
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 !!!!

3 réponses

Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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