XL 2016 Calculer la somme des nombres négatifs et positifs à chaque changement

Dadi147

XLDnaute Occasionnel
Comment puis-je obtenir la somme des valeurs négatives et positives à chaque changement dans une cellule indépendante
Exemple simple:

E2 valeu = 10 ... G2 = 10
E2 = + 2.... G2= 12
E2= -1 ....G2= 11
M2= -1
E2= - 5 ......G2= 6 .....M2= -6

Et ainsi de suite... pour finalement obtenir la somme des nombres négatifs dans M2 et la somme des nombres positifs dans la cellule G2

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$2" Then
Call Update_TsQ
End If
End Sub

Sub Update_TsQ()

Dim QiS As Long
Dim TsQ As Long

QiS = Range("E2").Value
TsQ = Range("G2").Value

TsQ = TsQ + QiS
Range("G2").Value = TsQ

End Sub
 
Solution
Très bon travail ..90 % de l'idée requise a été réalisée. Il y a une chose simple qui peut être corrigée. Cela a été expliqué dans le fichier joint. Pour les valeurs négatives, cela fonctionne bien. Quant aux valeurs positives, la première valeur saisie est toujours conservée, ce qui double le résultat une fois le travail terminé. Veuillez jeter un coup d'œil.
Re..
Hello AtTheOne, meilleurs vœux
Autre version

Jacky67

XLDnaute Barbatruc
Comment puis-je obtenir la somme des valeurs négatives et positives à chaque changement dans une cellule indépendante

....pour finalement obtenir la somme des nombres négatifs dans M2 et la somme des nombres positifs dans la cellule G2
Bonjour
Pour ce qui est démontré ici
E2 valeu = 10 ... G2 = 10
E2 = + 2.... G2= 12
E2= -1 ....G2= 11
M2= -1

E2= - 5 ......G2= 6 .....M2= -6
Le code pourrait ressembler à ceci
Mais G2 aura la somme des positifs - la somme des négatifs

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$E$2" Then
        Application.EnableEvents = False
        [g2] = [g2] + Target
        If Target < 0 Then [m2] = [m2] + Target
        [e2].ClearContents
        Application.EnableEvents = True
    End If
End Sub
'***si l'on veut en G2 que la somme des positifs et en M2 que la somme des négatifs**
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$E$2" Then
        Application.EnableEvents = False
        If Target < 0 Then [m2] = [m2] + Target Else [g2] = [g2] + Target
        [e2].ClearContents
        Application.EnableEvents = True
    End If
End Sub
 
Dernière édition:

Dadi147

XLDnaute Occasionnel
Bonjour
Pour ce qui est démontré ici ==> E2= - 5 ......G2= 6 .....M2= -6
Le code pourrait ressembler à ceci
Mais G2 aura la somme des positifs - la somme des négatifs

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$E$2" Then
        Application.EnableEvents = False
        [g2] = [g2] + Target
        If Target < 0 Then [m2] = [m2] + Target
        [e2].ClearContents
        Application.EnableEvents = True
    End If
End Sub
'***si l'on veut en G2 que la somme des positifs et en M2 que la somme des négatifs**
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$E$2" Then
        Application.EnableEvents = False
        If Target < 0 Then [m2] = [m2] + Target Else [g2] = [g2] + Target
        [e2].ClearContents
        Application.EnableEvents = True
    End If
End Sub
Merci. Désolé, je n'ai pas bien transmis l'idée. Comment puis-je comprendre chaque changement, qu'il soit positif ou négatif ? Il est basé sur la somme des valeurs positives dans la cellule g2
et la somme des valeurs négatives à chaque changement de cellule m2
Le premier changement était de 10 à 13................. Donc la différence est de 3 points positifs

Le deuxième changement était de 13 à 9, donc la différence est de 4 points dans le négatif

Le troisième changement est de 9 à 16 ................ Donc la différence est de 7 points positivement

Le quatrième changement est de 16 à 7 ................... donc la différence est de 9 points dans le négatif

Donc, la somme totale de la valeur positive est 10

Le total général de la valeur négative est 13

Bien sûr, chaque changement qui se produit, qu'il soit positif ou négatif, est ajouté au total positif des valeurs positives ou négatif des valeurs négatives.
 

Jacky67

XLDnaute Barbatruc
Merci. Désolé, je n'ai pas bien transmis l'idée. Comment puis-je comprendre chaque changement, qu'il soit positif ou négatif ? Il est basé sur la somme des valeurs positives dans la cellule g2
et la somme des valeurs négatives à chaque changement de cellule m2
Le premier changement était de 10 à 13................. Donc la différence est de 3 points positifs

Le deuxième changement était de 13 à 9, donc la différence est de 4 points dans le négatif

Le troisième changement est de 9 à 16 ................ Donc la différence est de 7 points positivement

Le quatrième changement est de 16 à 7 ................... donc la différence est de 9 points dans le négatif

Donc, la somme totale de la valeur positive est 10

Le total général de la valeur négative est 13

Bien sûr, chaque changement qui se produit, qu'il soit positif ou négatif, est ajouté au total positif des valeurs positives ou négatif des valeurs négatives.
RE..
Si j'ai bien compris, alors comme ceci peut-être..
VB:
Dim Tmp&
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$E$2" Then
        Application.EnableEvents = False
        If Target < Tmp Then
            [m2] = [m2] + Tmp - Target
        Else
            [g2] = [g2] + Target - Tmp
        End If
        Tmp = Target
        Application.EnableEvents = True
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$E$2" Then Tmp = Target
End Sub
 
Dernière édition:

Dadi147

XLDnaute Occasionnel
Bonjour puis-je avoir des suggestions....


Merci. Désolé, je n'ai pas bien transmis l'idée. Comment puis-je comprendre chaque changement, qu'il soit positif ou négatif ? Il est basé sur la somme des valeurs positives dans la cellule g2
et la somme des valeurs négatives à chaque changement de cellule m2
Le premier changement était de 10 à 13................. Donc la différence est de 3 points positifs
Le deuxième changement était de 13 à 9, donc la différence est de 4 points dans le négatif
Le troisième changement est de 9 à 16 ................ Donc la différence est de 7 points positivement
Le quatrième changement est de 16 à 7 ................... donc la différence est de 9 points dans le négatif
Donc, la somme totale de la valeur positive est 10
Le total général de la valeur négative est 13
Bien sûr, chaque changement qui se produit, qu'il soit positif ou négatif, est ajouté au total positif des valeurs positives ou négatif des valeurs négatives.
 

Jacky67

XLDnaute Barbatruc
Bonjour puis-je avoir des suggestions....


Merci. Désolé, je n'ai pas bien transmis l'idée. Comment puis-je comprendre chaque changement, qu'il soit positif ou négatif ? Il est basé sur la somme des valeurs positives dans la cellule g2
et la somme des valeurs négatives à chaque changement de cellule m2
Le premier changement était de 10 à 13................. Donc la différence est de 3 points positifs
Le deuxième changement était de 13 à 9, donc la différence est de 4 points dans le négatif
Le troisième changement est de 9 à 16 ................ Donc la différence est de 7 points positivement
Le quatrième changement est de 16 à 7 ................... donc la différence est de 9 points dans le négatif
Donc, la somme totale de la valeur positive est 10
Le total général de la valeur négative est 13
Bien sûr, chaque changement qui se produit, qu'il soit positif ou négatif, est ajouté au total positif des valeurs positives ou négatif des valeurs négatives.

Re..
Le code du post#4 n'est pas une suggestion ?
A t'il été tester ?
Ne donne t'il pas le résultat escompté ?
 

Pièces jointes

  • Pos-néga.xlsm
    20.3 KB · Affichages: 4

Dadi147

XLDnaute Occasionnel
Re..
Le code du post#4 n'est pas une suggestion ?
A t'il été tester ?
Ne donne t'il pas le résultat escompté ?
Oui, il a été testé et ne répond pas aux exigences ........Je veux obtenir la somme totale des différences entre les valeurs saisies dans la cellule E2
Le premier changement était de 10 à 13................. Donc la différence est de 3 points positifs

Le deuxième changement était de 13 à 9, donc la différence est de 4 points dans le négatif

Le troisième changement est de 9 à 16 ................ Donc la différence est de 7 points positivement

Le quatrième changement est de 16 à 7 ................... donc la différence est de 9 points dans le négatif

Donc la somme totale de la valeur positive est 10

Le total général de la valeur négative est 13

Bien sûr, chaque changement qui se produit, qu'il soit positif ou négatif, est ajouté au total positif des valeurs positives ou négatif des valeurs négatives.
 

Jacky67

XLDnaute Barbatruc
Oui, il a été testé et ne répond pas aux exigences ........Je veux obtenir la somme totale des différences entre les valeurs saisies dans la cellule E2
Le premier changement était de 10 à 13................. Donc la différence est de 3 points positifs

Le deuxième changement était de 13 à 9, donc la différence est de 4 points dans le négatif

Le troisième changement est de 9 à 16 ................ Donc la différence est de 7 points positivement

Le quatrième changement est de 16 à 7 ................... donc la différence est de 9 points dans le négatif

Donc la somme totale de la valeur positive est 10

Le total général de la valeur négative est 13

Bien sûr, chaque changement qui se produit, qu'il soit positif ou négatif, est ajouté au total positif des valeurs positives ou négatif des valeurs négatives.
Re..
Il est entendu que seule la cellule E10 est modifiée
Pour moi le classeur que j'ai joint donne le bon résultat...
 

AtTheOne

XLDnaute Accro
Supporter XLD
Bonjour à toutes & à tous, bonjour @Dadi147
Comme d'habitude, ma réponse arrive un peu tard (je suis souvent distrait en cours de réponse)
Ma solution ressemble beaucoup à celle de @Jacky67 (qui fonctionne) mais en passant par un nom pour archiver l'ancienne valeur de E2
Ce Nom est au départ
OldVal=0

Le code de l'onglet feuil1 est
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = Me.[E2].Address Then
          Ecart = Target.Value - Me.[OldVal]
          Me.Names("OldVal").RefersTo = 0 + Target.Value
          Select Case Ecart
               Case Is > 0
                    Me.[G2] = Me.[G2] + Ecart
               Case Is < 0
                    Me.[M2] = Me.[M2] - Ecart
               Case 0
                    'Rien
          End Select
     End If
End Sub

voir PJ
Amicalement
Alain
PS merci quand un post répond à la question posée, de le marquer comme solution.
 

Pièces jointes

  • Calculer la somme des nombres négatifs et positifs à chaque changement.xlsm
    16.4 KB · Affichages: 3
Dernière édition:

Dadi147

XLDnaute Occasionnel
Bonjour à toutes & à tous, bonjour @Dadi147
Comme d'habitude, ma réponse arrive un peu tard (je suis souvent distrait en cours de réponse)
Ma solution ressemble beaucoup à celle de @Jacky67 (qui fonctionne) mais en passant par un nom pour archiver l'ancienne valeur de E2
Ce Nom est au départ
OldVal=0

Le code de l'onglet feuil1 est
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = Me.[E2].Address Then
          Ecart = Target.Value - Me.[OldVal]
          Me.Names("OldVal").RefersTo = 0 + Target.Value
          Select Case Ecart
               Case Is > 0
                    Me.[G2] = Me.[G2] + Ecart
               Case Is < 0
                    Me.[M2] = Me.[M2] - Ecart
               Case 0
                    'Rien
          End Select
     End If
End Sub

voir PJ
Amicalement
Alain
PS merci quand un post répond à la question posée, de le marquer comme solution.
Très bon travail ..90 % de l'idée requise a été réalisée. Il y a une chose simple qui peut être corrigée. Cela a été expliqué dans le fichier joint. Pour les valeurs négatives, cela fonctionne bien. Quant aux valeurs positives, la première valeur saisie est toujours conservée, ce qui double le résultat une fois le travail terminé. Veuillez jeter un coup d'œil.
 

Pièces jointes

  • Calculer la somme des nombres négatifs et positifs à chaque changement1.xlsm
    18.4 KB · Affichages: 6

AtTheOne

XLDnaute Accro
Supporter XLD
Re ...
@Dadi147, quelles sont tes conditions initiales ?

Si G2 et M2 sont vides au départ pas de problème. Mais lorsque l'on ferme le classeur et qu'on le rouvre, faut-il effacer ces deux cellules et recommencer un nouveau contrôle ou poursuivre avec les anciennes valeurs de G2 et M2 (ce qui implique une remise à zéro lors de l'ouverture du fichier).

Pour les contrôles à partir d'un seuil, est-ce-que, si le cumul de plusieurs valeurs inférieures à ce seuil se suivent, il faut tenir compte du cumul de ces valeurs
Par exemple deux ecarts de +2 successifs entraînent un contrôle (2+2 >3) ?
Amicalement
Alain
 

Jacky67

XLDnaute Barbatruc
Très bon travail ..90 % de l'idée requise a été réalisée. Il y a une chose simple qui peut être corrigée. Cela a été expliqué dans le fichier joint. Pour les valeurs négatives, cela fonctionne bien. Quant aux valeurs positives, la première valeur saisie est toujours conservée, ce qui double le résultat une fois le travail terminé. Veuillez jeter un coup d'œil.
Re..
Hello AtTheOne, meilleurs vœux
Autre version
 

Pièces jointes

  • Calculer la somme des nombres négatifs et positifs à chaque changement1 .xlsm
    21.5 KB · Affichages: 5

Dadi147

XLDnaute Occasionnel
Re ...
@Dadi147, quelles sont tes conditions initiales ?

Si G2 et M2 sont vides au départ pas de problème. Mais lorsque l'on ferme le classeur et qu'on le rouvre, faut-il effacer ces deux cellules et recommencer un nouveau contrôle ou poursuivre avec les anciennes valeurs de G2 et M2 (ce qui implique une remise à zéro lors de l'ouverture du fichier).

Pour les contrôles à partir d'un seuil, est-ce-que, si le cumul de plusieurs valeurs inférieures à ce seuil se suivent, il faut tenir compte du cumul de ces valeurs
Par exemple deux ecarts de +2 successifs entraînent un contrôle (2+2 >3) ?
Amicalement
Alain
Merci J'ai essayé le fichier et il fonctionne bien, mais il me manquait quelques ajouts. .Jacky67 l'a rendu possible. Merci beaucoup
 

Discussions similaires

Réponses
4
Affichages
453
Réponses
2
Affichages
657

Statistiques des forums

Discussions
315 098
Messages
2 116 203
Membres
112 687
dernier inscrit
snexedwards