Calcul de la valeur d'une cellule incluant sa propre valeur

Bonjour,

Je cherche à savoir si il existe une formule permettant la mise à jour de la valeur d'une cellule en incluant dans le calcul la valeur de cette même cellule.

La cellule A1 est un nombre que je vais changer tous les mois

La cellule A2 est la somme de toutes les cellules A1 (de ce mois, du mois prochain etc.)

Je souhaiterais que la cellule A2 calcule sa nouvelle valeur (A2+A1) quand je modifie la cellule A1 chaque mois.

Mais je ne veux pas que figure tous les montants A1 de chaque mois sur mon tableau, seulement celui du mois en cours (sinon ce serait trop simple

A votre disposition si ma demande n'est pas assez claire, je vous remercie par avance pour votre aide !

DéGéGé

Bonsoir

ci joint une proposition de solution, avec une formule a ajuster a chaque nouvel onglet

=somme(feuil1:feuil2!a1)

Cordialement

FINDRH

49somme-cellule.xlsx (9.87 Ko)

Bonsoir et merci pour cette réponse rapide !

C'est en effet efficace de prévoir plusieurs onglets, j'aurais bien évité d'en créer 12 pourtant (car 1 par mois).

Bonsoir,

Que VBA pour faire ça facilement : procédure évènementielle Worksheet_Change dans le module de la feuille concernée :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then Range("A2") = Range("A2") + Range("A1")
End Sub

Codialement.

Bonsoir,

une astuce sur ce site :

https://forum.excel-pratique.com/cours-astuces/figer-date-d-une-cellule-t46879.html

et fichier joint modifié dans ce cas :

42loureed.xlsx (8.49 Ko)

@ bientôt

LouReeD

Bonjour à tous et merci pour vos différentes réponses,

Mauvaise nouvelle : la valeur de ma cellule va devoir changer toutes les semaines (et pas tous les mois), donc je ne vais pas faire un tableau avec autant d'onglets. Je me permets de vous joindre mon tableau c'est plus facile à expliquer et je suis surpris qu'il n'y a pas une solution simple.

En résumé, je cherche à faire en sorte que les cellules E5 à E9 se mettent à jour quand j'aurais rempli les cellules B5 à B9...

Merci encore pour votre aide et bonne journée !

29tableau-coucou.xlsx (12.58 Ko)

Bonsoir,

si cela ne gène pas le reste du classeur la solution apportée deux posts plus est très simple...

Voir le fichier joint :

Attention pas de [F9] ! Sinon l'incrémentation continue !!!

En somme la réponse de MFerrand est la meilleur.

@ bientôt

LouReeD

Salut LouReed !

Salut DGG !

je suis surpris qu'il n'y a pas une solution simple

Tu ne peux pas dire ça ! Tu te rends vite compte que si tu impliques le résultat d'un calcul dans le calcul lui-même, tu génères une boucle infinie, qui plantera lorsque tes ressources diront "Stop ! on peut plus."

On ne peut régler ce genre de chose que par un positionnement externe au calcul effectué.

Tu as eu des solutions. Pour ma part, je ne prendrais pas le risque d'utiliser les itérations... Ma solution est plus traditionnelle...

Cordialement.

MFerrand, on est bien d'accord !

LouReeD à dit :

En somme la réponse de MFerrand est la meilleur.

MFerrand a dit :

Pour ma part, je ne prendrais pas le risque d'utiliser les itérations... Ma solution est plus traditionnelle...

Alors DGG, en retirant vos lunettes de soleil ( ) peut-être verrez vous le code événementiel de MFerrand :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then Range("A2") = Range("A2") + Range("A1")
End Sub

@ bientôt

LouReeD

J'avais lu LouReed...

On peut écrire en VBA : a = a + b

mais pas avec une formule.

C'est une solution simple ! Il faut juste prendre soin de border sa zone d'application.

Bye !

Bonjour et merci encore pour vos réponses.

Je constate à la lecture de vos posts que je ne suis pas assez calé pour comprendre vos solutions... Ça me semblait tout simple comme problème et je comprends que ce type de calcul n'est pas vraiment prévu par Excel.

  • Le tableau de LouReeD s'ouvre avec un "Avertissement de référence circulaire" et ensuite je constate que ça ne fonctionne pas. Il y a sûrement un truc que je ne fais pas comme il faut.
  • Quant à solution proposée par MFerrand, je pense qu'il s'agit de code informatique que je ne saurai utiliser...
Je vais donc faire mes calculs à la main chaque semaine et au final ce n'est pas si compliqué que ça (je ne suis pas forcément une flèche, mais les additions, ça reste encore dans mes cordes ).

Merci encore pour votre aide et bonne journée !

Il serait dommage de ne pas essayer !

Tu fais clic droit sur l'onglet de la feuille, et cliques sur Visualiser le code, pour voir le code dans le module de la feuille

Et tu testes.

Cordialement.

Fort de vos suggestions, j'ai refait mon tableau avec activation du calcul itératif en manuel (maximal 1), si vous voulez me donner votre avis, je l'ai mis en pièce jointe.

Concernant le code, j'ai bien réussi à le visualiser mais étant donné que je ne comprend pas comment ça fonctionne même sans lunettes et sans chapeau , je pense que je vais m'en tenir là.

Je vais prendre des cours de Visual Basic et je reviendrai !

Bonne journée,

DGG

Non en fait ce n'est pas bon, MFerrand a raison :

si vous mettez 10 en première ligne B5+ [F9] alors OK en E5 on a 10

Si vous mettez 20 en deuxième ligne B6+ [F9] alors OK en E6 on a 20 mais en E5 on a 20 aussi car il refait le calcul avec le 10 de la première ligne !

Ce n'est pas bon !

Donc il faut détecter" le changement de valeur de la colonne B puis lancer la macro d'addition, pour cela faite un clic droit sur l'onglet de la feuille où se trouve le tableau puis sélectionnez "Afficher le code", ensuite coller le code suivant sur la fenêtre de droite de la fenêtre qui vient de s'ouvrir :

Private Sub Worksheet_Change(ByVal Target As Range)
if not intersect(target,range("B5:B9")) is nothing then
cells(target.row,5).value = cells(target.row,5).value + cells(target.row,2)
endif
end sub

Où 5 = colonne E

2 = colonne B

terget.row = ligne de la cellule modifiée

@ bientôt

LouReeD

EX-TRA !

Ça fonctionne parfaitement ! Par contre il faut pas se croûter sur la saisie parce que c'est irréversible.

Un grand merci et bonne journée,

DGG

... J'ai oublié la colonne F qui doit se mettre à jour quand j'alimente les cellules de la colonne C !!

J'ai essayé de copier le code VBA mais j'apprends qu'on ne peut avoir qu'une seule Worksheet_change par module de feuille.

Pouvez-vous m'aider à fusionner ces deux Worksheet_change ou bien dois-je créer un nouveau sujet sur le forum ?

Private Sub Worksheet_change(ByVal Target As Range)[code]

If Not Intersect(Target, Range("B5:B9")) Is Nothing Then

Cells(Target.Row, 5).Value = Cells(Target.Row, 5).Value + Cells(Target.Row, 2)

End If

End Sub[/code]

Private Sub Worksheet_change(ByVal Target As Range)
If Not Intersect(Target, Range("C5:C9")) Is Nothing Then
Cells(Target.Row, 6).Value = Cells(Target.Row, 6).Value + Cells(Target.Row, 3)
End If
End Sub

Je me réponds à moi-même car j'ai réussi à fusionner les deux !

Je suis trop fort

Merci encore et très bonne journée

Private Sub Worksheet_change(ByVal Target As Range)
If Not Intersect(Target, Range("B5:B9,C5:C9")) Is Nothing Then
    If Not Intersect(Target, Range("C5:C9")) Is Nothing Then
    Cells(Target.Row, 6).Value = Cells(Target.Row, 6).Value + Cells(Target.Row, 3)
    End If
    If Not Intersect(Target, Range("B5:B9")) Is Nothing Then
    Cells(Target.Row, 5).Value = Cells(Target.Row, 5).Value + Cells(Target.Row, 2)
    End If
End If
End Sub

Bonsoir,

vous disiez :

Je vais prendre des cours de Visual Basic et je reviendrai !

Et bien vous êtes revenus et vous avez pris des cours de VBA !

@ bientôt

LouReeD

Rechercher des sujets similaires à "calcul valeur incluant propre"