IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

pb macro sumproduct IF


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Par défaut pb macro sumproduct IF
    Bonsoir,

    Un petit souci technique sur vba..

    J'ai essayé de coder une fonction me permettant - en recherchant dans une plage de données - de calculer la moyenne des prix pondérée par les volumes, pour les clients répondants à certaines conditions

    J'ai droit à un #Value quand j'essaye d'utiliser cette fonction..
    Qqn a-t-il une idée..?

    Le code ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Function weighted_average_net_price(valcherch As Variant) As Single
    Dim somme As Single
    Dim sommeproduit As Single
    Dim boucle As Long
    somme = 0
    sommeproduit = 0
     
    For boucle = 3 To 9069
    If Cells(boucle, 25).Value = valcherch Then
        somme = somme + Cells(boucle, 23).Value
        sommeproduit = sommeproduit + Cells(boucle, 23).Value * Cells(boucle, 21).Value
    End If
    Next boucle
     
    weighted_average_net_price = sommeproduit / somme
     
    End Function

  2. #2
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    bonjour

    as tu tracé ta fonction ?
    quand #Valeur apparait comme resultat d'une fonction personalisée, c'est souvent que la fonction peronalisée plante avant la fin

    change tous le single par double, il m'etonnerait pas qu'il y ait une erreur 13.
    Bonne soirée

    ps : je ne comprend pas le necessite d'une telle fonction, SOMMEPROD (Fonction native), sait tres bien le faire et surement plus rapidement

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Par défaut
    Oki merci.

    J'ai tracé la fonction comme tu me l'avais conseillé..

    J'ai fait une erreur toute con.. j'ai oublié de préciser la feuille dans laquelle je souhaitais aller chercher les valeurs...

    Merci pour ton aide!

    PS: la fonction sommeprod disponible ne permet pas de tester une condition (comme le fait sommesi..), donc ne répond pas à mon besoin..

  4. #4
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    Contrairement à somme.si qui ne peut executer qu'une condition, sommeprod peut en faire lui beaucoup plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(($Y$3:$Y$9069="VALEUR")*($U$3:$U$9069 * $W$3:$W$9069))
    "VALEUR" peut prendre la reference d'une cellule exemple =$A$1
    Si le plages se trouvent dans une autre feuille, il suffit de les nommer, voir avec des plages evolutives.

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] "Sumproduct" dans une macro.
    Par rico63 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/01/2010, 17h30
  2. [VB6] Exécuter une macro Access
    Par Nektanebos dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 22/02/2006, 16h32
  3. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  4. Qu'est-ce qu'une macro ?
    Par karli dans le forum Assembleur
    Réponses: 2
    Dernier message: 01/09/2002, 03h38
  5. Réponses: 2
    Dernier message: 22/07/2002, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo