Addition de la saisie

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

D

Doum

Guest
Comment dois-je faire pour additionner comme suit:
Ex.: dans A1, j'ai le nombre 31. si j'entre dans cette cellule, le chiffre 9, le calcul sera 31+9 et donc donnera 40 (dans cette même cellule A1)
Merci d'avance de votre réponse!
😉
 
BONSOIR Doum

ma proposotion , un peu tirée par les cheveux , additionne toutes les valeurs numeriques lors d'un double clic dans la cellule

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Byte
Dim Cible As String
Dim Total As Double

Cible = Application.Substitute(Target, ",", ".") 'pour que fonction Val puisse reconnaitre les decimales
Cible = Application.Substitute(Cible, " ", "x") ' pour gerer deux nombres qui se suivent séparés par un espace
For i = 1 To Len(Cible)
If IsNumeric(Mid(Cible, i, 1)) Then
Total = Total + Val(Mid(Cible, i, Len(Cible) - i + 1))
i = i + Len(Str(Val(Mid(Cible, i, Len(Cible) - i + 1)))) - 1
End If
Next

Target = Total
End Sub


bonne soirée
MichelXld
 
Salut Doum, Michel, le forum,

Voici une aute méthode VBA mais elle nécessite que tu colles un des codes ci-dessous dans la feuille où tu veux que ça fonctionne. le Code 1 ne fonctionne que pour la cellule A1, le Code 2 fonctionne pour toutes les cellules de ta feuille. Clique avec le bouton droit de la souris sur l'onglet de la feuille et choisi l'option Visualiser le code. Tu te retrouves dans Visual Basic Editor. Dans le grand cadre blanc à droite colle un des codes que tu auras copié (Code 1 ou Code 2). Retourne à Excel par [Alt]+[F11].

Tape une première valeur en A1 et valide. Retape une nouvelle valeur, valide, la somme se fait... (sur toutes les cellule si tu as choisi le code 2)

debut code 1 (ligne en dessous)
Option Explicit
Private test As Boolean 'déclare la variable test
Private val As Variant 'déclare la variable val (valeur)

'à chaque changement de sélection de cellule
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
val = Range("A1").Value 'définit la variable val (valeur de la cellule active)
test = False 'réinitialise la variable test (test=Faux)
End Sub

'à chaque modification dans un cellule
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub 'si différent de A1 sort de la procédure
Dim valmod As Variant 'déclare la variable valmod (valeur modifiée)
Dim som As Variant 'déclare la variable som (somme)
If test = True Then Exit Sub 'si test=Vrai sort de la procédure (sinon boucle)
valmod = Target.Value 'définit la variable valmod (nouvelle valeur éditée)
som = val + valmod 'définit la varaible som (=ancienne valeur+nouvelle valeur)
test = True 'test=Vrai pour éviter la boucle
Target.Value = som 'la cellule modifiée prend la valeur de la somme
End Sub
fin code 1 (ligne au dessus)

debut code2 (ligne endessous)
Option Explicit
Private test As Boolean 'déclare la variable test
Private val As Variant 'déclare la variable val (valeur)

'à chaque changement de sélection de cellule
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
val = Target.Value 'définit la variable val (valeur de la cellule active)
test = False 'réinitialise la variable test (test=Faux)
End Sub

'à chaque modification dans un cellule
Private Sub Worksheet_Change(ByVal Target As Range)
Dim valmod As Variant 'déclare la variable valmod (valeur modifiée)
Dim som As Variant 'déclare la variable som (somme)
If test = True Then Exit Sub 'si test=Vrai sort de la procédure (sinon boucle)
valmod = Target.Value 'définit la variable valmod (nouvelle valeur éditée)
som = val + valmod 'définit la varaible som (=ancienne valeur+nouvelle valeur)
test = True 'test=Vrai pour éviter la boucle
Target.Value = som 'la cellule modifiée prend la valeur de la somme
End Sub
fin code 2 (ligne au dessus)

À plus,

Robert
 
Salut Doum et Michel,

Voici une autre suggestion, tout en gardant une saisie normale dans la cellule A1 :

Dim CL, OK As Boolean

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
CL = Target.Value
OK = True
Else
OK = False
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If OK = True Then
If Target.Address = "$A$1" Then
OK = False
Target.Value = Target.Value + CL
CL = Target
OK = True
End If
End If
End Sub

La variable OK permet d'éviter la cascade d'évènement lors de la mise à jour de la cellule.
CL permet de retenir l'ancienne valeur pour l'additionner à la nouvelle.

A+
Horatio
 
- 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

Réponses
9
Affichages
230
Réponses
4
Affichages
206
Retour