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 :

Comment transformer SOMMEPROD en SumProduct ? [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Gestionnaire de projet dans le BTP
    Inscrit en
    Janvier 2017
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestionnaire de projet dans le BTP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2017
    Messages : 88
    Par défaut Comment transformer SOMMEPROD en SumProduct ?
    Bonjour à tous

    J'ai une formule qui marche dans une cellule, mais je galère à la faire marcher dans le VBA :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Dim Formule As String
    Dim Plage1 As Range
    Dim Plage2 As Range
    Dim PlageValeur As Range
    Dim NomFeuille As String
     
        ' Formule qui fonctionne dans une cellule :
        ' =SOMMEPROD(((D5:D200="Forfait")*1)*((B5:B200="L1-1.11")*1)*((I5:I200)))
     
        Set Plage1 = FeuillePasseL01.Range(FeuillePasseL01.Cells(5, 4), FeuillePasseL01.Cells(200, 4))
        Set Plage2 = FeuillePasseL01.Range(FeuillePasseL01.Cells(5, 2), FeuillePasseL01.Cells(200, 2))
        Set PlageValeur = FeuillePasseL01.Range(FeuillePasseL01.Cells(5, I), FeuillePasseL01.Cells(200, I))
        NomFeuille = "'" & FeuillePasseL01.Name & "'!"
     
        Formule = "SumProduct(" & _
                        "((" & NomFeuille & Plage1.Address & " = " & Chr(34) & "Forfait" & Chr(34) & ") * 1) * " & _
                        "((" & NomFeuille & Plage2.Address & " = " & Chr(34) & "L1-1.11" & Chr(34) & ") * 1) ) * " & _
                        "(" & NomFeuille & PlageValeur.Address & "))"
        Debug.Print Formule
        Stop
        ' SumProduct((('Passé factu SGP L1'!$D$5:$D$200 = "Forfait") * 1) * (('Passé factu SGP L1'!$B$5:$B$200 = "L1-1.11") * 1) * ('Passé factu SGP L1'!$I$5:$I$200))
        Facture = Evaluate(Formule)
     
        ' Essai précédent
        Facture = WorksheetFunction.SumProduct( _
                        ((NomFeuille & Plage1.Address = "Forfait") * 1) * _
                        ((NomFeuille & Plage2.Address = "L1-1.11") * 1) * _
                        (NomFeuille & PlageValeur.Address))
    Erreur de type : c'est certainement un message d'erreur erroné, mais quoi ?

    A l'origine les deux textes étaient des variables, que j'ai mis en dur pour comprendre. I vaut 7.
    J'ai essayé plein de trucs, ' ou ", * ou ;, ... systématique : erreur de type.

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Sélectionner la cellule et dans la fenêtre d'exécution du VBE, taper :
    ?Activecell.formula
    validé par Entrée

  3. #3
    Membre confirmé
    Homme Profil pro
    Gestionnaire de projet dans le BTP
    Inscrit en
    Janvier 2017
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestionnaire de projet dans le BTP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2017
    Messages : 88
    Par défaut
    Il me dit ça
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =SUMPRODUCT(((D5:D200="Forfait")*1)*((B5:B200="L1-1.11")*1)*((H5:H200)))
    ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Gestionnaire de projet dans le BTP
    Inscrit en
    Janvier 2017
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestionnaire de projet dans le BTP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2017
    Messages : 88
    Par défaut
    Le sourire, c'est : D

  5. #5
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    C'est ta formule traduite en anglais ....

  6. #6
    Membre confirmé
    Homme Profil pro
    Gestionnaire de projet dans le BTP
    Inscrit en
    Janvier 2017
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestionnaire de projet dans le BTP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2017
    Messages : 88
    Par défaut
    Merci, j'avais bien compris. Mais en VBA ?

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    En VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Formule = "=SUMPRODUCT(((D5:D200=""Forfait"")*1)*((B5:B200=""L1-1.11"")*1)*((H5:H200)))"

  8. #8
    Membre confirmé
    Homme Profil pro
    Gestionnaire de projet dans le BTP
    Inscrit en
    Janvier 2017
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestionnaire de projet dans le BTP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2017
    Messages : 88
    Par défaut
    Merci Patrice.

    J'ai fini par trouver ce qui cloche : il manquait le signe = et j'avais une parenthèse de trop à la fin du deuxième terme. Erreur de type
    Ca, ca marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Formule = "=SumProduct(" & _
                        "((" & NomFeuille & Plage1.Address & "=" & Chr(34) & "Forfait" & Chr(34) & ")*1)*" & _
                        "((" & NomFeuille & Plage2.Address & "=" & Chr(34) & "L1-1.11" & Chr(34) & ")*1)*" & _
                        "(" & NomFeuille & PlageValeur.Address & "))"
        Debug.Print Formule
        '=SumProduct((('Passé factu SGP L1'!$D$5:$D$200="Forfait")*1)*
        '            (('Passé factu SGP L1'!$B$5:$B$200="L1-1.11")*1)*
        '             ('Passé factu SGP L1'!$I$5:$I$200))
        Stop
        Facture = Evaluate(Formule)
    Maintenant, je vais remettre mes variables.
    En tous cas, WorkSheetFunction.SumProduct ne fonctionne pas s'il y a des critères.

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

Discussions similaires

  1. [Date] Comment transformer mon String en date avec newDate?
    Par Devil666 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/06/2005, 16h50
  2. Réponses: 2
    Dernier message: 01/05/2005, 20h37
  3. Réponses: 2
    Dernier message: 14/01/2005, 15h40
  4. XML/XSL vers HTML: comment transformer les linefeed en <B
    Par AlainM dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/11/2003, 12h30
  5. comment transformer un.jpg en .ico
    Par bacca en galère dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 30/10/2003, 13h43

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