Somme de cellules contigues

jc53 Messages postés 6 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 14 mars 2012 - 24 janv. 2011 à 16:08
jc53 Messages postés 6 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 14 mars 2012 - 31 janv. 2011 à 11:51
Bonjour,

je recherche un code VBA pour insérer une formule dans une cellule. Cette formule est la somme de la valeur des cellules d'une ligne situées entre la colonne nommée "date début" et la colonne nommée "date de fin" .

j'ai effectué une recherche sur le site mais je n'ai pas trouvé la solution


merci par avance pour votre aide

4 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
24 janv. 2011 à 19:05
Bonjour,

Avec Excel, tu peux enregistré une macro, tu verra quel code ça donne, ensuite, tu adaptes.

de tête, il me semble que c'est ActiveCell.FormulaR1C1, mais je te laisse trouver la suite.

0
jc53 Messages postés 6 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 14 mars 2012
25 janv. 2011 à 09:15
Bonjour et merci pour votre retour aussi rapide,

j'ai déjà essayé avec l'enregistrement. Le problème c'est que le nombre de colonne à "sommer" peut varier. Du coup dès que le nbr de colonne change entre la colonne"datedebut" et "date fin" le résultat est faux. La première colonne sera toujours celle nommée "datedebut".Comment faire pour "sommer "jusqu'à la colonne "datefin" avec un nbr de colonne qui est variable
j'ai nommé les deux colonne et essayé la formule activeCell.formulaR1C1 sum("datedebut":"datefin")mais c'est un échec.

Voici mon code :


Range("D1").Select

Dim i
datedeb = Demandesemaine.periodedebut1.Value
datefin = Demandesemaine.Periodefin1.Value

'remarque : ma période est variable et peut correspondre à trois colonnes comme à dix colonnes. la colonne"datedebut sera toujours la même à savoir la colonne D







Do While ActiveCell.Value <> datedeb
Selection.EntireColumn.Delete
Loop
Range("D1").Select
Columns("D:D").Select
ActiveWorkbook.Names.Add Name:="datedebut", RefersToR1C1:="=FuturMaster!D:D"
ActiveWorkbook.Names("datedebut").Comment = ""


Do While ActiveCell.Value <> datefin
ActiveCell.Offset(0, 1).Select
Loop
ActiveCell.Offset(0, 1).Select
Selection.EntireColumn.Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.FormulaR1C1 = "Total période"
Selection.EntireColumn.Select

'premier problème = nommer la colonne"datefin"qui est variable

ActiveWorkbook.Names.Add Name:="datefin", RefersToR1C1:="=FuturMaster():()"
ActiveWorkbook.Names("datedebut").Comment = ""
ActiveCell.Offset(0, 1).Select

'deuxième problème = la formule pour faire la somme entre colonne"datedebut" et "datefin"

ActiveCell.FormulaR1C1 = sum("datedebut":"datefin")




En espérant avoir été suffisament précis
0
userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
25 janv. 2011 à 15:04
Hello,

2 3 petits trucs qui pourraient te permettre d'alleger ton code et de le faire fonctionner correctement :
ActiveCell.FormulaR1C1 = "=sum(R1C1:R5C3)"
'Cela equivaut à Somme("A1:C5").

r= cells(65536,4).end(xlup).row
'permet de recuperer le n° de ligne de la dernière cellule non vide de la colonne D (le 4)

c=activecell.column
'permet de t'indiquer le n° de la colonne de ta cellule active.

ActiveCell.FormulaR1C1 = "=sum(R1C4:R" & r & "C" & c & ")"
'te fera la somme entre de D1 à ...



BR
USERRRQI115
Simple user
Great brain
0
jc53 Messages postés 6 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 14 mars 2012
31 janv. 2011 à 11:51
Bonjour ,

j'ai adapté mon code en tenant compte de vos remarques et après quelques adaptations le code fonctionne correctement

un grand merci pour vos conseils
0
Rejoignez-nous