Addition automatique dans une même cellule

Bonjour

Existerait-il une formule ou macro afin de créer une cellule dynamique qui pourrait s'additionner avec une nouvelle entrée ?

Exemple en cellule B2 nous avons 6, si je passe sur la cellule est que je rentre 2 et que je valide : nous obtenons 8

Merci de votre aide les amis

Bonjour,

Non, ce n'est pas possible "nativement". C'est possible via VBA cependant. Mais bon, à voir l'utilité. Il y a probablement une solution "alternative" possible (peut etre des boutons/un slider, une liste dans une colonne, ou simplement faire le calcul soi-meme).

Bonjour KP1

Voici une proposition pour résoudre ton souci :

pour ce faire j'utilise :

- une petite macro évènementielle

- une colonne cumul à côté de la colonne d'introduction

- une cellule technique que j'ai situé de manière éloignée (AA1) qui peut être masquée puisque technique) et qui peut aussi être placée ailleurs en fonction des besoins mais alors en adaptant la macro

- une deuxième colonne technique où tu peux préciser le nombre de ligne de la colonne d'introduction située en dessous de la première (AA2)

J'espère que cela te conviendra.

Bonne continuation

Chris

Bonjour Chris,

Merci de ton aide, cette facon de faire va déja pouvoir m'aider et me faire gagner énormément de temps

Quelques petites demandes de modifications pour l'adapter à mon projet ( je ne maitrise pas assez VBA pour le faire moi même)

Pourrais tu me renvoyer la macro avec déplacement des cellules techniques en BM1 et BM2 ?

Et modifier pour que la colonne où l'on doit rentrer la date soit en E et calcul en F ?

Encore Merci

KP1

Bonsoir KP1,

Content que cela convienne.

Voici le classeur avec la macro adaptée à ta demande.

Bonne continuation

Chris

Bonsoir KP1, saboh12617, CHRIS1945, le forum,

Voici un fichier qui vous permettra sans aucune colonne supplémentaire d'additionner des chiffres directement tapés les uns derrières les autres dans la colonne "E".

Le classeur contient une macro, donc il faut que votre machine les accepte.

Le classeur test :

PS : prenez l'habitude de valider les réponses ayant résolues votre demande en utilisant le petit 'V' (check vert) à droite de la page. Merci.

Cordialement.

AL 22

Bonjour AL22,

Belle approche via le Application.Undo pour récupérer la valeur initiale, je n'y aurai pas pensé. J'avais également en tete l'adaptation aux cellules contenant des formules de la manière dont tu l'as faite. Bravo, simple et précis.

Bonjour à tous,

Impressionnant je ne connaissais pas cette instruction UNDO.

Je note cette façon de procéder dans mon book des trucs et astuces.

Merci Al 22

Bonjour AL22

Merci de ton retour, si je ne veux pas appliquer à toute la colonne E mais simplement aux cellules allant de F2 à F19

Est ce que je dois juste modifier comme ceci la ligne ci dessous ?

Merci de ton aide

If Not Intersect([F2:F19], Target) Is Nothing And Target.Count = 1 Then 'Si une seule cellule modifiée est dans la colonne F

Bonjour à tous,

Alors, oui je vous confirme que pour une plage allant de F2 à F19, c'est bien cette instruction :

If Not Intersect([F2:F19], Target) Is Nothing And Target.Count = 1 Then

Et pour une série de cellules discontinues et de plage de cellules, cela sera par exemple :

If Not Intersect([F2,F6,F10,F15:F19], Target) Is Nothing And Target.Count = 1 Then

Bonne soirée à tous.

AL

Bonjour AL22

La macro fonctionne uniquement si je valide des chiffres/nombres pleins , dès que je souhaite rentrer une valeurs avec décimale ( ex 3,22) , j'ai un message d'erreur :

image image

J'aurais encore besoin de votre aide pour peaufiner mon système :)

Merci d'avance

Bonjour,

Après la ligne

ValSaisie = Target

Ajoutez

ValSaisie = Replace(ValSaisie, ",", ".")

(au dessus de Application.Undo)

Je pense que la formule, au format US plante sur les virgules et les points.

Bonjour à tous,

@saboh12617,

Merci à toi pour le suivi du post et tes commentaires.

@KP1,

Autre soluce, remplacez l'intégralité du code par celui-ci :

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim ValSaisie As String

        If Not Intersect([F2:F19], Target) Is Nothing And Target.Count = 1 Then                     'Si une seule cellule modifiée est dans la colonne E
            If Target <> "" Then                                                                    'Si la cellule n'est pas vide
                Application.EnableEvents = False
                ValSaisie = Target                                                                  'Mémorise la valeur saisie
                Application.Undo
                If Left(Target.Formula, 1) = "=" Then                                               'Si la cellule contient déjà une formule
                    Target.Formula = Target.Formula & "+" & Replace(ValSaisie, ",", ".")            'Avec décimales
                Else
                    Target.Formula = "=" & ValSaisie                                                'Sinon, on crée une nouvelle formule
                End If
                Application.EnableEvents = True
            End If
        End If

End Sub

Bons tests et bonne journée.

AL 22

Bonjour

Cela fonctionne pour les entrées de base en effet, ( exemple 2,22) merci bien

En revanche, si je veux ajouter une autre donnée avec decimale, nouveau message d'erreur :

image image

Merci d'avance

Bonjour AL22

Mon message précedent ne prenait pas en compte votre dernier message, tout fonctionne ! Un grand merci

Bonne journée

Rechercher des sujets similaires à "addition automatique meme"