vba: somme automatique dans cellule mobile

  • Initiateur de la discussion Initiateur de la discussion ExcelBleu
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

ExcelBleu

Guest
Bonjour !
Je viens de rejoindre la communauté et pour etre franc je débute en vba,...

j'essaie de réaliser un macro qui calcule la somme d'une colone et qui positione le résultat deux lignes en dessous de la derniére valeur.

Je suis sur que mon code est long d'etre optimisé mais cela fonctionne 🙂 !

Cependant je ne sais comment faire une chose: en cas de suppression d'une cellule de la plage de selection situé au milieu de la plage, comment faire en sorte que ma somme mobile reste inchangée ?

Car ce faisant ma somme mobile ne sera plus situé a 2 lignes en dessous mais une,...

Bref voila le topic 😉

maintenant mon code:

Dim cpt As Double
Dim tmp As Double

Private Sub workbook_activate()
tmp = 0
End Sub


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

cpt = Application.WorksheetFunction.Count(Range("D1😀" & Range("D65536").End(xlUp).Row))

If tmp = 0 Then
tmp = cpt
End If
If cpt > tmp Then
ActiveSheet.Cells(2 + cpt, 4).Value = Application.WorksheetFunction.sum(ActiveSheet.Range(ActiveSheet.Cells(1, 4), ActiveSheet.Cells(cpt - 1, 4)))
ActiveSheet.Cells(1 + cpt, 4).Clear
End If
If cpt < tmp Then
ActiveSheet.Cells(2 + cpt, 4).Value = Application.WorksheetFunction.sum(ActiveSheet.Range(ActiveSheet.Cells(1, 4), ActiveSheet.Cells(cpt - 1, 4)))
ActiveSheet.Cells(3 + cpt, 4).Clear
End If
If cpt = tmp Then
ActiveSheet.Cells(2 + cpt, 4).Value = Application.WorksheetFunction.sum(ActiveSheet.Range(ActiveSheet.Cells(1, 4), ActiveSheet.Cells(cpt - 1, 4)))
End If

tmp = cpt

End Sub
 
Re : vba: somme automatique dans cellule mobile

hello,

Je peux te proposer 1 solution si ta cellule de formule est colorée dans ce cas tu peux faire :

Dim i As Integer
i = Range("D65536").End(xlUp).Row
Cells(i, 4).Select

If Selection.Interior.ColorIndex = -4142 Then
ActiveCell.Offset(2, 0).Value = Application.WorksheetFunction.Sum(Range(Cells(1, 4), Cells(ActiveCell.Row, 4)))
Exit Sub
End If

ActiveCell.Value = Application.WorksheetFunction.Sum(Range(Cells(1, 4), Cells(ActiveCell.Row - 2, 4)))

Sinon tu peux aussi regarder si la cellule au dessus du total est vide

@ +

Juju
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
9
Affichages
509
Réponses
15
Affichages
815
Retour