OVH Cloud OVH Cloud

calcul dans une plage variable si

5 réponses
Avatar
Pierre
Bonjour,

Je souhaiterai faire le calcul suivant dans une plage variable :
additionner les montants en colonne J seulement si sur la même ligne, en
colonne H se trouve le mot "MONTANT"

Merci à tous.
Pierre

5 réponses

Avatar
michdenis
Bonjour Pierre,

Il y a ceci ... en adaptant les plages de cellules.

=SOMMEPROD((H1:H10="MONTANT")*(J1:J10))


Et si tu veux que la plage se mette à jour automatiquement, copie ce qui suit dans la feuille de code où l'action se
déroule.

J'ai choisi le résultat C1 pour recevoir le résultat : à adapter
ATTENTION : Si tes colonnes ont une étiquette, elle ne doit pas faire parti de la plage définie dans la formule. Tu
débutes alors les formules par H2 et J2
'-------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Union(Columns("J:J"), Columns("H:H"))) Is Nothing Then
derlig = Range("J65536").End(xlUp).Row
Application.EnableEvents = False
Range("C1").Formula = "=sumProduct((H1:H" & derlig & "=""MONTANT"")*(J1:J" & derlig & " ))"
Application.EnableEvents = True
End If

End Sub
'-------------------------------------------------

Salutations!




"Pierre" a écrit dans le message de news:BD6A004E.28781%
Bonjour,

Je souhaiterai faire le calcul suivant dans une plage variable :
additionner les montants en colonne J seulement si sur la même ligne, en
colonne H se trouve le mot "MONTANT"

Merci à tous.
Pierre
Avatar
Pierre
dans l'article , michdenis à
a écrit le 12/09/04 15:08 :

ATTENTION : Si tes colonnes ont une étiquette, elle ne doit pas faire parti de
la plage définie dans la formule. Tu
débutes alors les formules par H2 et J2
'-------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Union(Columns("J:J"), Columns("H:H"))) Is Nothing
Then
derlig = Range("J65536").End(xlUp).Row
Application.EnableEvents = False
Range("C1").Formula = "=sumProduct((H1:H" & derlig & "=""MONTANT"")*(J1:J" &
derlig & " ))"
Application.EnableEvents = True
End If

End Sub


Bonjour,
J'ai intégré par copier/coller le code tel quel (en modifiant la formule en
H2 et J2 (Bien vu !!!) )
J'obtiens un message d'erreur :
Erreur de compilation
End Sub attendu

et la ligne avant la première ligne de votre code est surlignée.

Qu'en pensez-vous?
merci
Pierre

Avatar
Pierre
dans l'article , michdenis à
a écrit le 12/09/04 15:08 :

ATTENTION : Si tes colonnes ont une étiquette, elle ne doit pas faire parti
de
la plage définie dans la formule. Tu
débutes alors les formules par H2 et J2
'-------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Union(Columns("J:J"), Columns("H:H"))) Is Nothing
Then
derlig = Range("J65536").End(xlUp).Row
Application.EnableEvents = False
Range("C1").Formula = "=sumProduct((H1:H" & derlig & "=""MONTANT"")*(J1:J" &
derlig & " ))"
Application.EnableEvents = True
End If

End Sub


Bonjour,
J'ai intégré par copier/coller le code tel quel (en modifiant la formule en
H2 et J2 (Bien vu !!!) )
J'obtiens un message d'erreur :
Erreur de compilation
End Sub attendu

et la ligne avant la première ligne de votre code est surlignée.

Qu'en pensez-vous?
merci
Pierre
J'ai oublié de vous préciser que si je désactive la première ligne de votre

code j'obtiens aussi un message d'erreur :
"Erreur d'exécution
Objet requis

et c'est la ligne "If not Intersect(............... " qui est surlignée.
Salutations
Pierre


Avatar
michdenis
Bonjour Pierre,

Voici un autre copier-coller :

La ligne if not intersect ... se termine après Then ... il se peut que le service de messagerie coupe de façon
inopportune certaines lignes de code.

Je ne peut pas reproduire le type d'erreur que tu observes !
'-----------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Union(Columns("J:J"), Columns("H:H"))) Is Nothing Then
derlig = Range("J65536").End(xlUp).Row
Application.EnableEvents = False
Range("C1").Formula = "=sumProduct((H1:H" & derlig & "=""MONTANT"")*(J1:J" & derlig & " ))"
Application.EnableEvents = True
End If

End Sub
'-----------------------


Salutations!



"Pierre" a écrit dans le message de news:BD6A3FB3.287AC%
dans l'article , michdenis à
a écrit le 12/09/04 15:08 :

ATTENTION : Si tes colonnes ont une étiquette, elle ne doit pas faire parti
de
la plage définie dans la formule. Tu
débutes alors les formules par H2 et J2
'-------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Union(Columns("J:J"), Columns("H:H"))) Is Nothing
Then
derlig = Range("J65536").End(xlUp).Row
Application.EnableEvents = False
Range("C1").Formula = "=sumProduct((H1:H" & derlig & "=""MONTANT"")*(J1:J" &
derlig & " ))"
Application.EnableEvents = True
End If

End Sub


Bonjour,
J'ai intégré par copier/coller le code tel quel (en modifiant la formule en
H2 et J2 (Bien vu !!!) )
J'obtiens un message d'erreur :
Erreur de compilation
End Sub attendu

et la ligne avant la première ligne de votre code est surlignée.

Qu'en pensez-vous?
merci
Pierre
J'ai oublié de vous préciser que si je désactive la première ligne de votre

code j'obtiens aussi un message d'erreur :
"Erreur d'exécution
Objet requis

et c'est la ligne "If not Intersect(............... " qui est surlignée.
Salutations
Pierre


Avatar
Pierre
dans l'article , michdenis à
a écrit le 12/09/04 19:08 :


Bonsoir,
non, j'ai bien fait attention lors du copier/coller de ne pas couper les
lignes de code.
Je ne comprends pas d'ou peut provenir ces messages d'erreur.
Je vais y réfléchir dans la soirée.
Merci quand même.
Pierre

Bonjour Pierre,
Voici un autre copier-coller :
La ligne if not intersect ... se termine après Then ... il se peut que le
service de messagerie coupe de façon
inopportune certaines lignes de code.
Je ne peut pas reproduire le type d'erreur que tu observes !
'-----------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union(Columns("J:J"), Columns("H:H"))) Is Nothing
Then
derlig = Range("J65536").End(xlUp).Row
Application.EnableEvents = False
Range("C1").Formula = "=sumProduct((H1:H" & derlig & "=""MONTANT"")*(J1:J" &
derlig & " ))"
Application.EnableEvents = True
End If
End Sub
'-----------------------