Calcul somme de colonne
Résolu
max850
Messages postés
312
Statut
Membre
-
gbinforme Messages postés 15478 Statut Contributeur -
gbinforme Messages postés 15478 Statut Contributeur -
Bonjour le forum,
Au lieu de répéter 4 fois la même opération pour des colonnes contigues
il y aurait il une solution en vba qui ferait la même chose et qui me permettrait éventuellement de calculer la somme de chaque colonne quelle que soit sa longueur , le résultat s'affichant toujours en C4 D4 E4 F4 G4 ??
merci
Range("C4").Select
ActiveCell.FormulaR1C1 = "=SUM(R[1]C:R[16]C)"
Range("D4").Select
ActiveCell.FormulaR1C1 = "=SUM(R[1]C:R[16]C)"
Range("E4").Select
ActiveCell.FormulaR1C1 = "=SUM(R[1]C:R[16]C)"
Range("F4").Select
ActiveCell.FormulaR1C1 = "=SUM(R[1]C:R[16]C)"
Range("G4").Select
Au lieu de répéter 4 fois la même opération pour des colonnes contigues
il y aurait il une solution en vba qui ferait la même chose et qui me permettrait éventuellement de calculer la somme de chaque colonne quelle que soit sa longueur , le résultat s'affichant toujours en C4 D4 E4 F4 G4 ??
merci
Range("C4").Select
ActiveCell.FormulaR1C1 = "=SUM(R[1]C:R[16]C)"
Range("D4").Select
ActiveCell.FormulaR1C1 = "=SUM(R[1]C:R[16]C)"
Range("E4").Select
ActiveCell.FormulaR1C1 = "=SUM(R[1]C:R[16]C)"
Range("F4").Select
ActiveCell.FormulaR1C1 = "=SUM(R[1]C:R[16]C)"
Range("G4").Select
A voir également:
- Calcul somme de colonne
- Formule somme excel colonne - Guide
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Colonne word - Guide
- Somme si couleur - Guide
4 réponses
Bonjour à tous,
Tu peux simplifier ta macro ainsi
Tu peux simplifier ta macro ainsi
Sub somme()
Dim col As Integer, lastRow As Long
For col = 3 To 7 'On boucle sur les colonnes
lastRow = Cells(Rows.Count, col).End(xlUp).Row 'on récupère la dernière ligne
Cells(4, col).Value = Application.Sum(Cells(5, col).Resize(lastRow, 1))
Next
End Sub
Salut,
une solution :
--
une solution :
Sub somme()
For col = 3 To 7 'On boucle sur les colonnes
lastRow = Cells(5, col).End(xlDown).Row 'on récupère la dernière ligne
Cells(4, col).FormulaR1C1 = "=SUM(R[1]C:R[" & (lastRow - 4) & "]C)" 'On applique la formule selon le nombre de lignes dans la colonne
Next
End Sub
--
mrjenkins je crois savoir d'ou vient le problème.
en fait j'ai une feuille sur laquelle les sommes sont calculées avec somme(index.....)
que je copie.
lorsque les calculs sont refaits sur la copie sur la ligne 4 je clique sur "mettre à jour la formule pour inclure les cellule adjacentes" et ta formule magique fonctionne parfaitement.
Lorsque je lance ma procédure de copie je dois sans doute désactiver cette ancienne formule
Mais alors comment puis je la désactiver par un code vba ?
merci
en fait j'ai une feuille sur laquelle les sommes sont calculées avec somme(index.....)
que je copie.
lorsque les calculs sont refaits sur la copie sur la ligne 4 je clique sur "mettre à jour la formule pour inclure les cellule adjacentes" et ta formule magique fonctionne parfaitement.
Lorsque je lance ma procédure de copie je dois sans doute désactiver cette ancienne formule
Mais alors comment puis je la désactiver par un code vba ?
merci
Si j'ai bien compris, tu ne veux pas avoir une formule mais le résultat dans les cases C4, D4.. ?
Si c'est ça, il suffit de faire :
Si c'est ça, il suffit de faire :
Sub somme()
For col = 3 To 7 'On boucle sur les colonnes
lastRow = Cells(5, col).End(xlDown).Row 'on récupère la dernière ligne
somme = 0
for r = 5 to lastRow
somme = somme + cells(r, col).value
next
Cells(4, col).value= somme
Next
End Sub
C'est à cause du lastRow : si une colonne est vide, il va aller jusqu'à la fin de la page.
Essaye ça :
Essaye ça :
Sub somme()
Dim col As Integer, r As Long, somme As Integer, lastRow As Long
For col = 3 To 7 'On boucle sur les colonnes
If Cells(5, col).Value <> "" Then
lastRow = Cells(5, col).End(xlDown).Row 'on récupère la dernière ligne
somme = 0
For r = 5 To lastRow
somme = somme + Cells(r, col).Value
Next
Cells(4, col).Value = somme
Else
Cells(4, col).Value = 0
End If
Next
End Sub