bonjour a tous j'aurai voulu savoir comment faire pour additionner plusieurs nombre dans la meme cellule
si par exemple j'ai 10 en A5 et que je tape encore 10 je voudrai que dans la cellule apparaisse 20
j'espere avoir ete assez clair et attend vos reponses avec impatience
je vous en remercie d'avance
Pour faire une addition d'une cellule sur elle-même, on peut utiliser une option d'excel, l'itération, mais il faut quand même une deuxième cellule, où l'on rentre la valeur à additionner....
Par VBA, c'est tout à fait possible, si cela t'intéresse, tu demandes avec un peu plus de précisions, la structure de ton tableau par exemple, le nombre de cellules que tu désires "additionnées" à elles-mêmes.....
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
Application.EnableEvents = False
If [mémo] <> "" Then
Target = Target + [mémo]
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) & Target.Value & Chr(34)
End If
End Sub
mais aussi celui-ci qui garde en mémoire l'ancienne valeur, la cellule te donne le résultat et dans la barre de formule tu vois l'opération
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
Application.EnableEvents = False
If [mémo] <> "" Then
If Left([mémo], 1) <> "=" Then
Target.Formula = "=" & [mémo] & "+" & Target
Else
Target.Formula = [mémo] & "+" & Target
End If
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) & Target.Formula & Chr(34)
End If
End Sub
ne connaissant pas le niveau "VBA" de cyril, je ne lui avais pas proposé de code
on peut également faire ceci :
dans un module standard (Insertion/Module)
on déclare la variable "Valeur" en Public
Code:
Public Valeur
dans le code de ThisWorkbook :
Code:
Private Sub Workbook_Open()
Valeur = [A1]
End Sub
et dans le code de la feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$A$1" Then Target = Target + Valeur
Valeur = Target
Application.EnableEvents = True
End Sub
si la cellule à additionner sur elle-même est la cellule "A1"
ne connaissant pas le niveau "VBA" de cyril, je ne lui avais pas proposé de code
on peut également faire ceci :
dans un module standard (Insertion/Module)
on déclare la variable "Valeur" en Public
Code:
Public Valeur
dans le code de ThisWorkbook :
Code:
Private Sub Workbook_Open()
Valeur = [A1]
End Sub
et dans le code de la feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$A$1" Then Target = Target + Valeur
Valeur = Target
Application.EnableEvents = True
End Sub
si la cellule à additionner sur elle-même est la cellule "A1"
Votre réponse date un tantinet j'en conviens, mais elle m'a été d'une grande utilité! Alors grand merci pour la désespérée d'Excel que je suis!
Vos codes fonctionnent à merveille sur mon tableau, mais malheureusement cela ne s'applique qu'à une seule et unique cellule!
Si vous passez encore en ces méandres virtuels, auriez vous la gentillesse de m'expliquer comment je peux étendre ces codes à TOUTES les cellules (cellules toutes munies d'un menu déroulant à titre d'info si cela y joue ou non!)
D'avance un grand merci!
Et comme je dis souvent ....
"A coeur vaillant .... Rien d'impossible !"
Les nombres entrés dans une cellule se cumulent
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Count = 1 Then
Application.EnableEvents = False
ValSaisie = Target
Application.Undo
Target = ValSaisie + Target
Application.EnableEvents = True
End If
End Sub
Vous remercie de votre réponse et essaie dès demain mon arrivée au travail, mais il me semble avoir déjà essayé votre solution mais en vain.
Peut être avais je mal entré ce code : clic droit sur l'onglet de la feuille ... visualiser le code .... et ensuite ?
Et comment faut il au préalable que je sélectionne toutes les cellules auxquelles je veux que cela s'applique ?
Méa culpa, suis plus que novice!
Vous en remerciant d'avance
Bonne journée!
Claire
Je te propose le code suivant à recopier dans le module de ta feuille :
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NouVal
If Target.Count > 1 Then Exit Sub
' Choisir la Colonne dans laquelle la règle s'applique :
' pour A = 1, B = 2, etc ...
If Target.Column = 1 Then
Application.EnableEvents = False
NouVal = Target
Application.Undo
If IsNumeric(Target) And IsNumeric(NouVal) Then Target = NouVal + Target
Application.EnableEvents = True
End If
End Sub
Encore heureux ... que l'on ne puisse pas saisir de texte .... puisque le Sujet est :
Additionner dans la même cellule
S'il s'agit de restreindre l'addition à une seule cellule, c'est faisable ...mais là aussi pour éviter accidentellement de perdre son total cumulé ... mieux vaut que la saisie de texte soit interdite ... !!!
Bien sur, je suis aller trop vite dans ma remarque : je voulais dire "les solutions proposées ne permettent plus de saisir autre chose que des valeurs numériques"dans la zone de controle de la macro. par exemple si tu veux placer un libellé de colonne....
Bien sur, je suis aller trop vite dans ma remarque : je voulais dire "les solutions proposées ne permettent plus de saisir autre chose que des valeurs numériques"dans la zone de controle de la macro. par exemple si tu veux placer un libellé de colonne....
Pour contrôler et choisir la zone dans laquelle la règle s'applique :
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NouVal
If Target.Count > 1 Then Exit Sub
' Adapter aux besoins la Plage dans laquelle la règle s'applique ...A2:A10
If Intersect(Target, Me.Range("A2:A10")) Is Nothing Then Exit Sub
Application.EnableEvents = False
NouVal = Target
Application.Undo
If IsNumeric(Target) And IsNumeric(NouVal) Then Target = NouVal + Target
Application.EnableEvents = True
End Sub
Oui, j'avais vu.
Peut être que je suis en train de me torturer l'esprit, parce que dans l'ensemble, j'l'aime bien ce code..., je vais regarder si je peux attraper tout ou partie.