Ajouter à une cellule et elle garde cette valeur ou ajoute

Bonsoir,

Voici mon problème:

Je voudrais ajouter une valeur à une autre cellule, qu'elle garde cette valeur puis additionne si elle reçoit encore des valeurs.

Par exemple:

la cellule A1 est vide et B1 aussi

A1 = "" B1 = ""

puis j'introduis 1 dans A1 et B1 indique 1

puis A1 se vide mais B1 indique toujours 1

puis je remets 1 dans A1 et alors B1 fait 1(qu'il avait gardé)+A1 et il affiche 2

A1 se vide mais B1 garde 2 et ainsi de suite.

Voilà près d'une semaine que je suis dessus et je ne vois pas la solution!

Merci d'avance

Bonsoir,

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        If IsNumeric(Target.Value) Then
            Me.Range("B1") = Me.Range("B1") + Target
            Target.ClearContents
        End If
    End If
End Sub

A placer dans le module de la feuille concernée.

Cordialement.

Bonjour,

en partant du code de MFerrand et afin d'éviter des appels successifs, suspension des évènements :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        If IsNumeric(Target.Value) Then
            Application.EnableEvents = False
            Me.Range("B1") = Me.Range("B1") + Target
            Target.ClearContents
            Application.EnableEvents = True
        End If
    End If
End Sub

je vous remercie beaucou^p et vais essayer cela tantôt et je vous tient au courant.

Merci

Bonjour Theze !

La proc. est toujours appelée par un changement dans la feuille, mais lors de l'effacement elle ne fera rien, comme dans le cas d'une cellule autre...

Cordialement.

Bonjour,

Mets un point d'arrêt en début de proc et regardes le comportement

Tu as raison sur le fait que IsNumeric renvoie Vrai sur une cellule vide... Donc correction minimale :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" And Target <> "" Then
        If IsNumeric(Target.Value) Then
            Me.Range("B1") = Me.Range("B1") + Target
            Target.ClearContents
        End If
    End If
End Sub

Au temps pour moi de l'avoir négligé !

Je n'ai rien contre la désactivation des évènements, mais je préfère l'éviter tant qu'on le peut.

Mais bien vu de ta part.

merci,

j'ai mis la version de Theze et cela marche bien je vais donc essayer MFerrand.

Autre question, si je veux étendre cela à une 20aines de cellules dois-je faire une boucle, parce que j'ai voulu faire une plage pour les données et une plage pour recevoir mais ca ne marche pas.

si je veux étendre cela à une 20aines de cellules dois-je faire une boucle

Cela peut dépendre de la configuration de tes plages... Liste tes couples de cellules que l'on voit comment cela se présente.

Bonne journée.

Bonjour,

Ta réponse fonctionne aussi très bien!

La configuration de mes cellules, elles sont contiguës (A1 et B1)

Lister mes couples de cellules: cela veut dire là où je veux que cela fonctionne comme A1 vers B1 puis A2 vers B2 et ainsi de suite?

J'ai essayé de copier la formule autant de fois que je voulais qu'elle le fasse mais cela n'a pas marché (Private même nom.....) J'ai enlevé les private sub mais cela n'a rien changé ensuite j'ai mis une plage mais là non plus cela n'a rien donné.

J'en déduit donc qu'une boucle serait peut-être ce qu'il me faut pour y arriver mais là je dois encore revoir le fonctionnement.

En d'autre mots est-il possible de faire la même chose que A1 et B1 avec A2-B2 A3-B3......

Merci

Bonjour à toutes et tous,

Je n'ai rien contre la désactivation des évènements, mais je préfère l'éviter tant qu'on le peut.

Tout à fait d'accord avec toi car si un couac entre les deux instructions, plus d'évènement

Bonjour à tous,

Supposons A1:A20 pour alimenter B1:B20...

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim isect As Range, c As Range
    Set isect = Intersect(Target, Me.Range("A1:A20"))
    If Not isect Is Nothing Then
        Application.EnableEvents = False
        For Each c In isect
            If IsNumeric(c.Value) Then
                c.Cells(1, 2) = c.Cells(1, 2) + c
                c.ClearContents
            End If
        Next c
        Application.EnableEvents = True
    End If
End Sub

Là j'ai opté pour te laisser la possibilité d'alimenter plusieurs cellules de la plage concernée simultanément (par exemple par collage). Donc je définis l'intersection de Target avec la plage pour traiter éventuellement plusieurs cellules (d'où une boucle sur cette intersection).

Dans ce cas, le nombre de rappels de la proc. pouvant s'avérer important, je préfère me ranger à l'option Theze de désactivation des évènements...

On pourrait aussi le traiter en retenant l'option : une seule cellule servie à la fois...

Cordialement.

Merci beaucoup, mais m'étonne pas du tout que je ne sache pas suivre !!!!

Je vais voir si cela fonctionne

A+

OK merci beaucoup cela marche à merveille mais je vous avoue que je n'aurais jamais pu le trouver seul! Encore une fois merci de votre aide.

Rechercher des sujets similaires à "ajouter garde cette valeur ajoute"