VBA =SOMME sur une plage variable (sous condition)

DDD

XLDnaute Nouveau
Bonjour à tous !
J'en appelle à votre sollicitude concernant un petit problème que je n'arrive pas à surmonter, peut être par mauvaise approche... Je ne sais pas.

Voilà ce que je souhaiterai :
- j'ai une cellule référence (D2 dans l'exemple)
- j'ai une plage de référence (AB7:BZ7 dans l'exemple qui va de "1 à 52" qui représente par exemple, les semaines dans une année)
- à partir d'une cellule (V7 dans l'exemple), puis des cellules des lignes dessous à chaque fois (for i=... to ...), je souhaiterai avoir : la SOMME allant de la cellule ($AB$7) à la cellule égale à ma cellule de référence.

C'est à dire,
  • prenons D2 = 10;
  • dans ma plage (AB7:BZ7),
  • ma sélection de SOMME ira de (AB7:AK7) puisque AK7 = 10.

J'ai réussi à bidouiller une macro (en deux boutons, car trop longue si je regroupe le tout sous un seul volet), en mettant l'ensemble des possibilités, mais je vois bien malgré que cela fonctionne, qu'il s'agit davantage de bricolage que d'une macro pouvant s'adapter au changement..

Vous trouverez en PJ un fichier exemple (anonymisé, les valeurs saisies n'ont aucune importance) avec la macro évoquée (bouton 25 et bouton 26).

Ce que je souhaite est donc une autre approche, ou peut être une macro bien moins lourde. Je reste persuadé que cela est assez simple, mais je bute sur le point d'entrée...

Dans l'attente de vos propositions !
 

Pièces jointes

  • Exemple.xlsm
    219.1 KB · Affichages: 11

DDD

XLDnaute Nouveau
Bonjour à tous
essaye ceci
VB:
Private Sub CommandButton25_Click()
Dim i As Integer
For i = 7 To 250
    Cells(i, "V") = Application.WorksheetFunction.Sum(Cells(i, 28), Cells(i, 28 + Range("D2") - 1))
Next
End Sub


Bonjour JP,

Je te remercie de ton retour plus que rapide ! Malheureusement, cela ne me donne pas les résultats souhaités après test.. Les bons résultats (du moins, ceux attendus) doivent être identiques à ceux de ma macro.

J'ai aussi tenté la formule SUM (pour somme), mais impossible de faire varier ma plage de sélection en fonction de la valeur de ma cellule de référence (toujours D2 dans l'exemple).

On en revient toujours au même problème... J'ai besoin d'une formule qui fait varier la plage de sélection (AB7 à ....) pour calculer une somme..
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour,

Après avoir mis le code suivant dans un module:
Code:
Function SommeRef(xbase As Range, xcombien As Long) As Long
   SommeRef = Application.Sum(xbase.Resize(, xcombien))
End Function

En V7 mettre la formule suivante puis la recopier vers le bas:
VB:
=SommeRef(AB7;$D$2)
  • le premier paramètre est la cellule de début de la somme
  • le deuxième paramètre est le nombre de cellule à sommer (ici valeur de la cellule $D$2)


Sinon par simple formule en V7 à recopier vers le bas: =SOMME(DECALER(AB7;0;0;1;$D$2))
 

Pièces jointes

  • DDD- somme variable- v1.xlsm
    232.5 KB · Affichages: 18
Dernière édition:

DDD

XLDnaute Nouveau
Bonjour,

Après avoir mis le code suivant dans un module:
Code:
Function SommeRef(xbase As Range, xcombien As Long) As Long
   SommeRef = Application.Sum(xbase.Resize(, xcombien))
End Function

En V7 mettre la formule suivante puis la recopier vers le bas:
VB:
=SommeRef(AB7;$D$2)
  • le premier paramètre est la cellule de début de la somme
  • le deuxième paramètre est le nombre de cellule à sommer (ici valeur de la cellule $D$2)


Sinon par simple formule en V7 à recopier vers le bas: =SOMME(DECALER(AB7;0;0;1;$D$2))

C'est tout simplement parfait ! Merci mille fois ! En effet, cela est beaucoup plus "léger" !
 

Discussions similaires

Réponses
11
Affichages
193
Réponses
16
Affichages
422

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87