Fonction sumproduct
brahmi_najib
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
bonjour
je suis débutant en programmation vba.
lorsque j'exécute la macro suivante:
Sub delaiprev()
Dim i As Integer
i = 4
While i <= 100
Cells(i, 17) = SumProduct(("U4:U90" >= ("b" & i)) - ("U4:U90" >= ("b" & i) + 75 + Int(75 / 5)))
i = i + 1
Wend
End Sub
sur une seule cellule la macro marche, mais lorsque j'utilise la boucle.
un message d'erreur apparait : erreur de compilation Sub ou Fonction non définie.
je suis débutant en programmation vba.
lorsque j'exécute la macro suivante:
Sub delaiprev()
Dim i As Integer
i = 4
While i <= 100
Cells(i, 17) = SumProduct(("U4:U90" >= ("b" & i)) - ("U4:U90" >= ("b" & i) + 75 + Int(75 / 5)))
i = i + 1
Wend
End Sub
sur une seule cellule la macro marche, mais lorsque j'utilise la boucle.
un message d'erreur apparait : erreur de compilation Sub ou Fonction non définie.
A voir également:
- Fonction sumproduct
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
3 réponses
Bonjour brahmi_najib,
a) Il faut utiliser WorksheetFunction.
b) J'ai simplifié la fin de la formule :
75 + Int(75 / 5) = 75 + 15 = 90
Si ton problème est réglé, merci d'aller en haut de page
pour cliquer sur « Marquer comme résolu ».
Cordialement. 😊
a) Il faut utiliser WorksheetFunction.
b) J'ai simplifié la fin de la formule :
75 + Int(75 / 5) = 75 + 15 = 90
Option Explicit Sub delaiprev() Dim i As Integer: i = 4 While i <= 100 Cells(i, 17) = WorksheetFunction.SumProduct(("U4:U90" >= ("b" & i)) - ("U4:U90" >= ("b" & i) + 90)) i = i + 1 Wend End Sub
Si ton problème est réglé, merci d'aller en haut de page
pour cliquer sur « Marquer comme résolu ».
Cordialement. 😊
Mr albkan
Merci pour Votre réponse
un nouveau message d'erreur:
erreur d'exécution '13':Incompatibilité de type.
voila quand j'utilise une seule cellule avec des guillemets ça fonctionne.
Cells(4, 17) = "=sumProduct((U4:U90 >= b4) - (U4:U90 >= (b4 + 75) + Int(75 / 5)))"
mais quand j'utilise la boucle les erreurs apparaissent.
j'ai laissé la formule sans rectification car 75 va varier .
NB. j'utilise excel 2013
Merci bien pour votre aide.
Merci pour Votre réponse
un nouveau message d'erreur:
erreur d'exécution '13':Incompatibilité de type.
voila quand j'utilise une seule cellule avec des guillemets ça fonctionne.
Cells(4, 17) = "=sumProduct((U4:U90 >= b4) - (U4:U90 >= (b4 + 75) + Int(75 / 5)))"
mais quand j'utilise la boucle les erreurs apparaissent.
j'ai laissé la formule sans rectification car 75 va varier .
NB. j'utilise excel 2013
Merci bien pour votre aide.
Bonjour brahmi_najib,
En laissant tel que la fin de la formule, le code VBA serait celui-ci :
Option Explicit Sub delaiprev() Dim i As Integer: i = 4 While i <= 100 Cells(i, 17) = WorksheetFunction.SumProduct(("U4:U90" >= ("B" & i)) - ("U4:U90" >= ("B" & i) + 75 + Int(75 / 5))) i = i + 1 Wend End Sub
MAIS :
1) J'avais fait une réponse rapide, et c'en est toujours une, car j'ai juste constaté
ceci : a) SumProduct seul n'est pas reconnu : « Erreur de compilation: Sub
ou Function non définie ». b) Avec WorksheetFunction.SumProduct, l'erreur
disparaît et ça compile bien. Je n'ai pas été plus loin, car je pensais que c'était
réglé ; donc pour la suite de la ligne, je n'ai rien vérifié du tout.
2) En allant maintenant plus loin : SumProduct est une fonction qui fait la somme
des produits des arguments transmis ; il peut y avoir de 1 à 30 arguments qui
sont des tableaux, et ces tableaux doivent être de même dimension. Pour plus
de détails sur cette fonction, je te recommande de lire l'aide correspondante.
Or ce que tu transmet en argument n'a pas du tout l'air de correspondre avec
ce qui est prévu ! Comme il y a 2 tests " >= ", ça fait penser à une fonction
comme SumIf (qui existe donc bien réellement), mais par contre, il n'y a pas
de fonction SumProductIf ! Donc en fait, il faudrait que tu détermines quel
travail tu veux faire exactement, et corriger en conséquence. Car en fait, c'est
possible que pour le travail à faire, tu n'aies pas besoin de SumProduct du tout,
ou indirectement, et qu'en tout cas, ce serait mieux de refaire tout autrement.
Mais comme je ne sais pas exactement ni ce que tu veux faire réellement,
ni quelles sont exactement tes données sur la feuille (en "U4:U90" et en "B" & i),
je ne peux pas t'aider davantage. Comme je ne suis pas spécialement matheux,
je préfère laisser à un autre intervenant le soin de te venir en aide.
Cordialement. 😊
Bonjour brahmi_najib,
WorksheetFunction est une fonction Excel et non VBA
Règle de base quand tu utilises VBA avec des formules Excel:
en VBA les fonctions excel font partie de l'objet "application"
donc la bonne syntaxe est
Michel
WorksheetFunction est une fonction Excel et non VBA
Règle de base quand tu utilises VBA avec des formules Excel:
en VBA les fonctions excel font partie de l'objet "application"
donc la bonne syntaxe est
Application.WorksheetFunction.SumProduct(........
que l'on peut écrire
Application.SumProduct(........
en effet c'est un objet implicite de l'objet "application"
Michel