Faire le cumul d'une autre case

  • Initiateur de la discussion Initiateur de la discussion Jw_
  • 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 !

Jw_

XLDnaute Nouveau
Bonjour à tous, en cette belle journée du jeudi!

Alors je ne savais pas comment faire les cumuls, mais j'ai facilement trouvé quelques post répondant à ma question.

Notamment la solution de Excel_lent, qui proposait ce code :

Option Explicit
Dim un%, deux%

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
un = Range("B2")
deux = Range("B3")
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$B$2" Then Range("B2") = un + Range("B2")
If Target.Address = "$B$3" Then Range("B3") = deux + Range("B3")
Application.EnableEvents = True
End Sub




Ce que je voulais, c'était avoir le cumul, en A2, d'une case, A1, par exemple.
Donc, quand j'entre en A1, 1, puis 1 et 1, avoir au final en A2, 3.

Je n'ai pas vraiment réussi à le bricoler, car mon cumul à une valeur de retard.
Voici mon code

Option Explicit
Dim un%, deux%

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
un = Range("A1")
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$A$1" Then Range("A2") = un + Range("A2")
Application.EnableEvents = True
End Sub


Je m'explique .

Quand ma case est vide, A1 = 0. Du coups c'est comme si j'avais entré la valeur 0 .
Par conséquent quand je vais entrer une autre valeur, par exemple 50, il comptabilisera le 0, et quand j'en entrerai une autre (100), il prendra la précédente ; 50.
Du coups j'aurai un cumul de 0+50, et non de 50+150.
Il faut alors, après chaque valeur, entrer 0, afin de comptabiliser la valeur précédente sans affecter le résultat suivant...

Je ne sais pas si j'ai été très clair, mais je vous ai mis un fichier joint en exemple, au cas où (en espérant l'avoir enregistré comme il fallait !)


Je voulais donc savoir si il y avait un moyen d'arranger cela?



Merci, bonne journée


Julien
 

Pièces jointes

Re : Faire le cumul d'une autre case

Bonjour Jw_

Remplace ton code par celui-ci.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$A$1" Then Range("A2") = Range("A1") + Range("A2")
Application.EnableEvents = True
End Sub
Pourquoi veux-tu passer par une variable intermédiaire ?

L'enclenchement des évements de feuille de calcul a un ordre précis, c'est la cause de ton problème. L'évenement Change intervient avant l'événement SelectionChange quand tu valides la saisie d'une cellule.

D'autre part un petit conseil, si l'utilisateur indique une valeur texte dans ta cellule A1, tu vas te retrouver avec un message d'erreur. Tu as deux solutions, soit tu vérifies le contenu de la cellule A1 dans ton code, ou tu le vérifies par l'assistant /Données/Validation... du menu d'excel.

@+Jean-Marie
 
Dernière édition:
Re : Faire le cumul d'une autre case

Bonjour JeanMarie.

Merci beaucoup pour ton aide! finalement ce n'étais pas si sorcier ..

J'ai besoin ce code pour mon tableau synthétique, afin de faire un cumul d'une succession de calculs, sur une même ligne.
Afin d'éviter d'avoir 15 lignes, je n'en ai qu'une, avec le total qui cumule.

encore merci, bonne après-midi à tous !

😉

ps: merci du conseil c'est toujours bon à prendre

Julien
 
Dernière édition:
- 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

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
447
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour