Calcul deux sommes à partir de deux sommes !

goliath760

XLDnaute Nouveau
Bonjour,
Je me permet encore de venir vers vous pour trouver une solution à mon problème. Voilà sur le tableau ci joint, je voudrais calculer automatiquement deux somme3 et somme4 mais qui soit différentes et égales à somme1 et somme2.

Merci d'avance.
 

Pièces jointes

  • calcul sommes auto2.xls
    26.5 KB · Affichages: 75

goliath760

XLDnaute Nouveau
Re : Calcul deux sommes à partir de deux sommes !

Bonjour,
Merci pour la réponse rapide, sinon le seul critère que juste la somme3 soit supérieure à la somme4 et si possible si j'apporte des modifications à la somme3 ou somme4 que le calcul de l'une à l'autre soit automatique.

Merci bcps
 

Cousinhub

XLDnaute Barbatruc
Re : Calcul deux sommes à partir de deux sommes !

Re-,

Regarde le fichier joint, je pense respecter tes critères....

Si tu modifies la somme3, somme4 se réajuste, et inversement


Bonne journée
 

Pièces jointes

  • calcul sommes auto_v1.zip
    12.4 KB · Affichages: 30

goliath760

XLDnaute Nouveau
Re : Calcul deux sommes à partir de deux sommes !

Re,

Dorénavant c'est parfait, merci pour la rapidité et l'efficacité.

Bonne journée également


- Comment remettre le réajustement des cellules; il a cessé de fonctionner, j'ai introduis un montant conséquent par erreur et j'ai eu un message de débogage, après le rajustement ne fonctionne plus.

MERCI
 
Dernière édition:

mécano41

XLDnaute Accro
Re : Calcul deux sommes à partir de deux sommes !

Bonjour,

Une solution, juste avec des formules ...

Inconvénient, peut-être :

- toutes les valeurs changent à chaque recalcul
- il faut deux colonnes intermédiaires

Cordialement
 

Pièces jointes

  • calcul sommes auto_v2.xls
    31 KB · Affichages: 51

Cousinhub

XLDnaute Barbatruc
Re : Calcul deux sommes à partir de deux sommes !

Re-,

Ce fonctionnement est du à l'utilisation de l'instruction "Application.EnableEvents...."

Pour t'en prémunir, remplace ton code par celui-ci (clic droit sur le nom de l'onglet, "Visualiser le code") :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
If Flag Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Not IsNumeric(Target) Then Exit Sub
If Not Intersect(Target, Range("C2:D31")) Is Nothing Then
    Application.EnableEvents = False
    Select Case Target.Column
        Case 3
            Target.Offset(, 1) = Application.Sum(Target.Offset(, -2).Resize(1, 2)) - Target
        Case 4
            Target.Offset(, -1) = Application.Sum(Target.Offset(, -3).Resize(1, 2)) - Target
    End Select
End If
Application.EnableEvents = True
End Sub

Par contre, je ne pense pas que ce soit du à un nombre trop conséquent, mais plutôt à une entrée non numérique....

Pour repartir, déroule ce petit code :

Code:
Sub remet()
Application.EnableEvents = True
End Sub

Bonne journée
 

Fo_rum

XLDnaute Accro
Re : Calcul deux sommes à partir de deux sommes !

Salut
@ bhbh : à quoi sert ton drapeau (Flag) ?
Pour éviter la variable booléenne "Application.Enable" qui peut bloquer les évènementielles, je proposerais :
Code:
 Private Sub Worksheet_Change(ByVal Target As Range)
   [B]Dim Flag As Boolean[/B]
  [B] If Flag Then Exit Sub[/B]
   If Target.Count > 1 Then Exit Sub
   If Not IsNumeric(Target) Then Exit Sub
   If Not Intersect(Target, Range("C2:D31")) Is Nothing Then
     [B]Flag = True[/B] 'pour bloqer les appels successifs
     Select Case Target.Column
     Case 3
     Target.Offset(, 1) = Application.Sum(Target.Offset(, -2).Resize(1, 2)) - Target
     Case 4
        Target.Offset(, -1) = Application.Sum(Target.Offset(, -3).Resize(1, 2)) - Target
     End Select
  End If
End Sub
Sinon, j'avais plutôt fait (de façon plus basique) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Li As Integer, Col As Byte, S As Double
  Li = Target.Row: Col = Target.Column
  If Target.Count > 1 Or Li = 1 Then Exit Sub
  If IsNumeric(Target) And Not IsEmpty(Target) Then
    S = Cells(Li, "A") + Cells(Li, "B") - Target
    If Col = 3 Then Cells(Li, "D") = S
    If Col = 4 Then Cells(Li, "C") = S
  Else
    If Col = 3 Or Col = 4 Then Range(Cells(Li, "C"), Cells(Li, "D")).ClearContents
  End If
End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 508
Messages
2 089 141
Membres
104 047
dernier inscrit
bravetta