Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
AV
Qques remarques/réponses : * Pour faire une moyenne conditionnelle, pas besoin de faire une divison de la somme des valeurs correspondant aux critères par le nbre de valeurs correspondant à ces mêmes critères La fonction MOYENNE (sous forme matricielle) ficellée comme suit fait très bien l'affaire : =MOYENNE(SI((Champ1= x)*(Champ2= y)*(Champ3= z);ChampDesValeurs)) * Tu gagnerais à définir tes plages de façon dynamique par la fonction DECALER plutôt que d'utiliser, dans ton code, une variable pour la dernière ligne renseignée. Avantages : Allègement du code et non-nécessité de préciser le nom de la feuille (si ce n'est pas celle active) dans la chaîne de caractères que tu soumets à l'Evaluate
Exemple (simplifié) avec tes critères et tes plages Moyenne des "AdQtés"(H2:Hx) pour les "AdNoms"(A2:Ax) = "A" et les "AdAns"(C2:Cx) = "C" et les "AdPrds"(E2:Ex) = "E"
Si la feuille active active est celle contenant les champs d'examen : lg2 = [A65000].End(xlUp).Row MsgBox Evaluate("average(if((A2:A" & lg2 & "=""A"")*(C2:C" & lg2 & "=""C"")*(E2:E" & lg2 & "=""E""),H2:H" & lg2 & "))")
Si la feuille active active n'est pas celle contenant les champs d'examen : lg2 = [Achats!A65000].End(xlUp).Row MsgBox Evaluate("average(if((Achats!A2:A" & lg2 & "=""A"")*(Achats!C2:C" & lg2 & "=""C"")*(Achats!E2:E" & lg2 & "=""E""),Achats!H2:H" & lg2 & "))")
Avec des plages nommées (fonction DECALER) et quelle que soit la feuille active : MsgBox [average(if((AdNoms="A")*(AdAns="C")*(AdPrds="E"),AdQtés))]
Plus simple et plus clair non ?
AV
Qques remarques/réponses :
* Pour faire une moyenne conditionnelle, pas besoin de faire une divison de la
somme des valeurs correspondant aux critères par le nbre de valeurs
correspondant à ces mêmes critères
La fonction MOYENNE (sous forme matricielle) ficellée comme suit fait très bien
l'affaire :
=MOYENNE(SI((Champ1= x)*(Champ2= y)*(Champ3= z);ChampDesValeurs))
* Tu gagnerais à définir tes plages de façon dynamique par la fonction DECALER
plutôt que d'utiliser, dans ton code, une variable pour la dernière ligne
renseignée.
Avantages : Allègement du code et non-nécessité de préciser le nom de la feuille
(si ce n'est pas celle active) dans la chaîne de caractères que tu soumets à
l'Evaluate
Exemple (simplifié) avec tes critères et tes plages
Moyenne des "AdQtés"(H2:Hx) pour les "AdNoms"(A2:Ax) = "A"
et les "AdAns"(C2:Cx) = "C"
et les "AdPrds"(E2:Ex) = "E"
Si la feuille active active est celle contenant les champs d'examen :
lg2 = [A65000].End(xlUp).Row
MsgBox Evaluate("average(if((A2:A" & lg2 & "=""A"")*(C2:C" & lg2 &
"=""C"")*(E2:E" & lg2 & "=""E""),H2:H" & lg2 & "))")
Si la feuille active active n'est pas celle contenant les champs d'examen :
lg2 = [Achats!A65000].End(xlUp).Row
MsgBox Evaluate("average(if((Achats!A2:A" & lg2 & "=""A"")*(Achats!C2:C" & lg2 &
"=""C"")*(Achats!E2:E" & lg2 & "=""E""),Achats!H2:H" & lg2 & "))")
Avec des plages nommées (fonction DECALER) et quelle que soit la feuille active
:
MsgBox [average(if((AdNoms="A")*(AdAns="C")*(AdPrds="E"),AdQtés))]
Qques remarques/réponses : * Pour faire une moyenne conditionnelle, pas besoin de faire une divison de la somme des valeurs correspondant aux critères par le nbre de valeurs correspondant à ces mêmes critères La fonction MOYENNE (sous forme matricielle) ficellée comme suit fait très bien l'affaire : =MOYENNE(SI((Champ1= x)*(Champ2= y)*(Champ3= z);ChampDesValeurs)) * Tu gagnerais à définir tes plages de façon dynamique par la fonction DECALER plutôt que d'utiliser, dans ton code, une variable pour la dernière ligne renseignée. Avantages : Allègement du code et non-nécessité de préciser le nom de la feuille (si ce n'est pas celle active) dans la chaîne de caractères que tu soumets à l'Evaluate
Exemple (simplifié) avec tes critères et tes plages Moyenne des "AdQtés"(H2:Hx) pour les "AdNoms"(A2:Ax) = "A" et les "AdAns"(C2:Cx) = "C" et les "AdPrds"(E2:Ex) = "E"
Si la feuille active active est celle contenant les champs d'examen : lg2 = [A65000].End(xlUp).Row MsgBox Evaluate("average(if((A2:A" & lg2 & "=""A"")*(C2:C" & lg2 & "=""C"")*(E2:E" & lg2 & "=""E""),H2:H" & lg2 & "))")
Si la feuille active active n'est pas celle contenant les champs d'examen : lg2 = [Achats!A65000].End(xlUp).Row MsgBox Evaluate("average(if((Achats!A2:A" & lg2 & "=""A"")*(Achats!C2:C" & lg2 & "=""C"")*(Achats!E2:E" & lg2 & "=""E""),Achats!H2:H" & lg2 & "))")
Avec des plages nommées (fonction DECALER) et quelle que soit la feuille active : MsgBox [average(if((AdNoms="A")*(AdAns="C")*(AdPrds="E"),AdQtés))]
Plus simple et plus clair non ?
AV
Frédo P.
Rebonjour Alain il fait triste chez nous.
"AV" a écrit dans le message de news: #
Qques remarques/réponses : * Pour faire une moyenne conditionnelle, pas besoin de faire une division de la
somme des valeurs correspondant aux critères par le Nbr de valeurs correspondant à ces mêmes critères La fonction MOYENNE (sous forme matricielle) ficelée comme suit fait très bien
l'affaire : =MOYENNE(SI((Champ1= x)*(Champ2= y)*(Champ3= z);ChampDesValeurs)) * Tu gagnerais à définir tes plages de façon dynamique par la fonction DECALER
plutôt que d'utiliser, dans ton code, une variable pour la dernière ligne renseignée. Avantages : Allègement du code et non-nécessité de préciser le nom de la feuille
(si ce n'est pas celle active) dans la chaîne de caractères que tu soumets à
l'Evaluate
Exemple (simplifié) avec tes critères et tes plages Moyenne des "AdQtés"(H2:Hx) pour les "AdNoms"(A2:Ax) = "A" et les "AdAns"(C2:Cx) = "C" et les "AdPrds"(E2:Ex) = "E"
Si la feuille active active est celle contenant les champs d'examen : lg2 = [A65000].End(xlUp).Row MsgBox Evaluate("average(if((A2:A" & lg2 & "=""A"")*(C2:C" & lg2 & "=""C"")*(E2:E" & lg2 & "=""E""),H2:H" & lg2 & "))")
Si la feuille active active n'est pas celle contenant les champs d'examen :
AV Oui cela va m'être utile mais dans tes exemples, Il manque un champ, j'ai
bien trois conditions + un champ de nombre de pieces achetées + un champ du montant total (sur la même ligne) de l'achat, ,je recalcule le prix moyen unitaire sur la totalité des achats en pièces et montants: voici la disposition A:A Fournisseurs | C:C Années de l'achat | H:H quantités | L:L Montants | M:M Px unitaire(sur la ligne) | N:N Px moyens (champ à calculer) Je ne pense pas qu'elle puisse trouver le px moyens sans lui donner les montants non ? ou alors, ou c'est surnaturel ou j'ai mal compris. je procède de cette manière parce qu'il y a encore 3 colonnes consacrées aux ristournes qui viennent modifier les montants totaux sur la ligne. Avec tes ex, je vais essayer de caser la division du total des montants par le Nbr de pièces totales Encore merci ,j'avance, je progresse,ça devient une drogue. Fred
Rebonjour Alain
il fait triste chez nous.
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de news:
#eqGN5lrDHA.684@TK2MSFTNGP09.phx.gbl...
Qques remarques/réponses :
* Pour faire une moyenne conditionnelle, pas besoin de faire une division
de la
somme des valeurs correspondant aux critères par le Nbr de valeurs
correspondant à ces mêmes critères
La fonction MOYENNE (sous forme matricielle) ficelée comme suit fait très
bien
l'affaire :
=MOYENNE(SI((Champ1= x)*(Champ2= y)*(Champ3= z);ChampDesValeurs))
* Tu gagnerais à définir tes plages de façon dynamique par la fonction
DECALER
plutôt que d'utiliser, dans ton code, une variable pour la dernière ligne
renseignée.
Avantages : Allègement du code et non-nécessité de préciser le nom de la
feuille
(si ce n'est pas celle active) dans la chaîne de caractères que tu soumets
à
l'Evaluate
Exemple (simplifié) avec tes critères et tes plages
Moyenne des "AdQtés"(H2:Hx) pour les "AdNoms"(A2:Ax) = "A"
et les "AdAns"(C2:Cx) = "C"
et les "AdPrds"(E2:Ex) = "E"
Si la feuille active active est celle contenant les champs d'examen :
lg2 = [A65000].End(xlUp).Row
MsgBox Evaluate("average(if((A2:A" & lg2 & "=""A"")*(C2:C" & lg2 &
"=""C"")*(E2:E" & lg2 & "=""E""),H2:H" & lg2 & "))")
Si la feuille active active n'est pas celle contenant les champs d'examen
:
AV
Oui cela va m'être utile mais dans tes exemples, Il manque un champ, j'ai
bien trois conditions + un champ de nombre de pieces achetées + un champ du
montant total (sur la même ligne) de l'achat, ,je recalcule le prix moyen
unitaire sur la totalité des achats en pièces et montants: voici la
disposition
A:A Fournisseurs | C:C Années de l'achat | H:H quantités | L:L Montants |
M:M Px unitaire(sur la ligne) | N:N Px moyens (champ à calculer)
Je ne pense pas qu'elle puisse trouver le px moyens sans lui donner les
montants non ? ou alors, ou c'est surnaturel ou j'ai mal compris.
je procède de cette manière parce qu'il y a encore 3 colonnes consacrées aux
ristournes qui viennent modifier les montants totaux sur la ligne.
Avec tes ex, je vais essayer de caser la division du total des montants par
le Nbr de pièces totales
Encore merci ,j'avance, je progresse,ça devient une drogue.
Fred
Qques remarques/réponses : * Pour faire une moyenne conditionnelle, pas besoin de faire une division de la
somme des valeurs correspondant aux critères par le Nbr de valeurs correspondant à ces mêmes critères La fonction MOYENNE (sous forme matricielle) ficelée comme suit fait très bien
l'affaire : =MOYENNE(SI((Champ1= x)*(Champ2= y)*(Champ3= z);ChampDesValeurs)) * Tu gagnerais à définir tes plages de façon dynamique par la fonction DECALER
plutôt que d'utiliser, dans ton code, une variable pour la dernière ligne renseignée. Avantages : Allègement du code et non-nécessité de préciser le nom de la feuille
(si ce n'est pas celle active) dans la chaîne de caractères que tu soumets à
l'Evaluate
Exemple (simplifié) avec tes critères et tes plages Moyenne des "AdQtés"(H2:Hx) pour les "AdNoms"(A2:Ax) = "A" et les "AdAns"(C2:Cx) = "C" et les "AdPrds"(E2:Ex) = "E"
Si la feuille active active est celle contenant les champs d'examen : lg2 = [A65000].End(xlUp).Row MsgBox Evaluate("average(if((A2:A" & lg2 & "=""A"")*(C2:C" & lg2 & "=""C"")*(E2:E" & lg2 & "=""E""),H2:H" & lg2 & "))")
Si la feuille active active n'est pas celle contenant les champs d'examen :
AV Oui cela va m'être utile mais dans tes exemples, Il manque un champ, j'ai
bien trois conditions + un champ de nombre de pieces achetées + un champ du montant total (sur la même ligne) de l'achat, ,je recalcule le prix moyen unitaire sur la totalité des achats en pièces et montants: voici la disposition A:A Fournisseurs | C:C Années de l'achat | H:H quantités | L:L Montants | M:M Px unitaire(sur la ligne) | N:N Px moyens (champ à calculer) Je ne pense pas qu'elle puisse trouver le px moyens sans lui donner les montants non ? ou alors, ou c'est surnaturel ou j'ai mal compris. je procède de cette manière parce qu'il y a encore 3 colonnes consacrées aux ristournes qui viennent modifier les montants totaux sur la ligne. Avec tes ex, je vais essayer de caser la division du total des montants par le Nbr de pièces totales Encore merci ,j'avance, je progresse,ça devient une drogue. Fred
Frédo P.
-- Fred
"AV" a écrit dans le message de news: #
Qques remarques/réponses : * Pour faire une moyenne conditionnelle, pas besoin de faire une divison de la
somme des valeurs correspondant aux critères par le nbre de valeurs correspondant à ces mêmes critères La fonction MOYENNE (sous forme matricielle) ficellée comme suit fait très bien
l'affaire : =MOYENNE(SI((Champ1= x)*(Champ2= y)*(Champ3= z);ChampDesValeurs)) * Tu gagnerais à définir tes plages de façon dynamique par la fonction DECALER
plutôt que d'utiliser, dans ton code, une variable pour la dernière ligne renseignée. Avantages : Allègement du code et non-nécessité de préciser le nom de la feuille
(si ce n'est pas celle active) dans la chaîne de caractères que tu soumets à
l'Evaluate
Exemple (simplifié) avec tes critères et tes plages Moyenne des "AdQtés"(H2:Hx) pour les "AdNoms"(A2:Ax) = "A" et les "AdAns"(C2:Cx) = "C" et les "AdPrds"(E2:Ex) = "E"
Si la feuille active active est celle contenant les champs d'examen : lg2 = [A65000].End(xlUp).Row MsgBox Evaluate("average(if((A2:A" & lg2 & "=""A"")*(C2:C" & lg2 & "=""C"")*(E2:E" & lg2 & "=""E""),H2:H" & lg2 & "))")
Si la feuille active active n'est pas celle contenant les champs d'examen :
AV Oui cela va m'être utile mais dans tes exemples, Il manque un champ, j'ai
bien trois conditions + un champ de nombre de pieces achetées + un champ du montant total (sur la même ligne) de l'achat, ,je recalcule le prix moyen unitaire sur la totalité des achats en pièces et montants: voici la disposition A:A Fournisseurs | C:C Années de l'achat | E:E noms des Produits | H:H quantités | L:L Montants | M:M Px unitaire(sur la ligne) | N:N Px moyens (champ à calculer) Je ne pense pas qu'elle puisse trouver le px moyens sans lui donner les montants non ? ou alors, ou c'est surnaturel ou j'ai mal compris. je procède de cette manière parce qu'il y a encore 3 colonnes consacrées aux ristournes qui viennent modifier les montants totaux sur la ligne. Avec tes ex, je vais essayer de caser la division du total des montants par le Nbr de pièces totales Encore merci ,j'avance, je progresse,ça devient une drogue. Fred
--
Fred
"AV" <alain.vallon@wanadoo.fr> a écrit dans le message de news:
#eqGN5lrDHA.684@TK2MSFTNGP09.phx.gbl...
Qques remarques/réponses :
* Pour faire une moyenne conditionnelle, pas besoin de faire une divison
de la
somme des valeurs correspondant aux critères par le nbre de valeurs
correspondant à ces mêmes critères
La fonction MOYENNE (sous forme matricielle) ficellée comme suit fait très
bien
l'affaire :
=MOYENNE(SI((Champ1= x)*(Champ2= y)*(Champ3= z);ChampDesValeurs))
* Tu gagnerais à définir tes plages de façon dynamique par la fonction
DECALER
plutôt que d'utiliser, dans ton code, une variable pour la dernière ligne
renseignée.
Avantages : Allègement du code et non-nécessité de préciser le nom de la
feuille
(si ce n'est pas celle active) dans la chaîne de caractères que tu soumets
à
l'Evaluate
Exemple (simplifié) avec tes critères et tes plages
Moyenne des "AdQtés"(H2:Hx) pour les "AdNoms"(A2:Ax) = "A"
et les "AdAns"(C2:Cx) = "C"
et les "AdPrds"(E2:Ex) = "E"
Si la feuille active active est celle contenant les champs d'examen :
lg2 = [A65000].End(xlUp).Row
MsgBox Evaluate("average(if((A2:A" & lg2 & "=""A"")*(C2:C" & lg2 &
"=""C"")*(E2:E" & lg2 & "=""E""),H2:H" & lg2 & "))")
Si la feuille active active n'est pas celle contenant les champs d'examen
:
AV
Oui cela va m'être utile mais dans tes exemples, Il manque un champ, j'ai
bien trois conditions + un champ de nombre de pieces achetées + un champ du
montant total (sur la même ligne) de l'achat, ,je recalcule le prix moyen
unitaire sur la totalité des achats en pièces et montants: voici la
disposition
A:A Fournisseurs | C:C Années de l'achat | E:E noms des Produits | H:H
quantités | L:L Montants |
M:M Px unitaire(sur la ligne) | N:N Px moyens (champ à calculer)
Je ne pense pas qu'elle puisse trouver le px moyens sans lui donner les
montants non ? ou alors, ou c'est surnaturel ou j'ai mal compris.
je procède de cette manière parce qu'il y a encore 3 colonnes consacrées aux
ristournes qui viennent modifier les montants totaux sur la ligne.
Avec tes ex, je vais essayer de caser la division du total des montants par
le Nbr de pièces totales
Encore merci ,j'avance, je progresse,ça devient une drogue.
Fred
Qques remarques/réponses : * Pour faire une moyenne conditionnelle, pas besoin de faire une divison de la
somme des valeurs correspondant aux critères par le nbre de valeurs correspondant à ces mêmes critères La fonction MOYENNE (sous forme matricielle) ficellée comme suit fait très bien
l'affaire : =MOYENNE(SI((Champ1= x)*(Champ2= y)*(Champ3= z);ChampDesValeurs)) * Tu gagnerais à définir tes plages de façon dynamique par la fonction DECALER
plutôt que d'utiliser, dans ton code, une variable pour la dernière ligne renseignée. Avantages : Allègement du code et non-nécessité de préciser le nom de la feuille
(si ce n'est pas celle active) dans la chaîne de caractères que tu soumets à
l'Evaluate
Exemple (simplifié) avec tes critères et tes plages Moyenne des "AdQtés"(H2:Hx) pour les "AdNoms"(A2:Ax) = "A" et les "AdAns"(C2:Cx) = "C" et les "AdPrds"(E2:Ex) = "E"
Si la feuille active active est celle contenant les champs d'examen : lg2 = [A65000].End(xlUp).Row MsgBox Evaluate("average(if((A2:A" & lg2 & "=""A"")*(C2:C" & lg2 & "=""C"")*(E2:E" & lg2 & "=""E""),H2:H" & lg2 & "))")
Si la feuille active active n'est pas celle contenant les champs d'examen :
AV Oui cela va m'être utile mais dans tes exemples, Il manque un champ, j'ai
bien trois conditions + un champ de nombre de pieces achetées + un champ du montant total (sur la même ligne) de l'achat, ,je recalcule le prix moyen unitaire sur la totalité des achats en pièces et montants: voici la disposition A:A Fournisseurs | C:C Années de l'achat | E:E noms des Produits | H:H quantités | L:L Montants | M:M Px unitaire(sur la ligne) | N:N Px moyens (champ à calculer) Je ne pense pas qu'elle puisse trouver le px moyens sans lui donner les montants non ? ou alors, ou c'est surnaturel ou j'ai mal compris. je procède de cette manière parce qu'il y a encore 3 colonnes consacrées aux ristournes qui viennent modifier les montants totaux sur la ligne. Avec tes ex, je vais essayer de caser la division du total des montants par le Nbr de pièces totales Encore merci ,j'avance, je progresse,ça devient une drogue. Fred