Quelle est la syntaxe de SOMME.SI.ENS en VBA?

Bonjour à tous,

Mon problème réside dans le nom du topic. En effet, j'essaie de coder cette fonction que je sais très bien utiliser or application macro, mais qui me pose de sérieux problèmes pour la comprendre comment elle fonctionne sous VBA.

La seule chose que je sais c'est qu'il faut utiliser SUMIFS, après ça se corse puisque, dans mon cas, les critères varient ainsi que la plage à sommer.

Donc imaginez-vous deux feuilles excel:

La première est "Base de données"

La seconde est "Analyse"

Voici le code que j'ai édité pour essayer de répondre à mon problème mais cela ne semble pas fonctionner :S!

Sub Bouton17_Cliquer()
'Objectifs de ce bouton:
'1- Calculer la somme en euro (€) des montants des libellés affectés à la catégories "Alimentaire" pour une année donnée et un mois donné

 'Références nécessaires à la macro
  '---------------

  'La cellule "Débit Euros" de la feuille "Base de données"
   RefDébitEurosBDD_Ligne = Worksheets("Base de données").Cells.Find("Débit Euros").Row
   RefDébitEurosBDD_Colonne = Worksheets("Base de données").Cells.Find("débit Euros").Column
   'Adressage de la colonne correspondante:
    AdresseDébitEurosBDD_Colonne = Left(Worksheets("Base de données").Cells(RefDébitEurosBDD_Ligne, RefDébitEurosBDD_Colonne).Address(0, 0), 1)

  'La cellule "Mois" de la feuille "Base de données"
   RefMoisBDD_Ligne = Worksheets("Base de données").Cells.Find("Mois").Row
   RefMoisBDD_Colonne = Worksheets("Base de données").Cells.Find("Mois").Column
   'Mémorisation de la colonne correspondante:
    AdresseMoisBDD_Colonne = Left(Worksheets("Base de données").Cells(RefMoisBDD_Ligne, RefMoisBDD_Colonne).Address(0, 0), 1)

  'La cellule "Année" de la feuille "Base de données"
   RefAnnéeBDD_Ligne = Worksheets("Base de données").Cells.Find("Année").Row
   RefAnnéeBDD_Colonne = Worksheets("Base de données").Cells.Find("Année").Column
   'Mémorisation de la colonne correspondante:
    AdresseAnnéeBDD_Colonne = Left(Worksheets("Base de données").Cells(RefAnnéeBDD_Ligne, RefAnnéeBDD_Colonne).Address(0, 0), 1)

  'La cellule "Catégories" de la feuille "Base de données
   RefCatégoriesBDD_Ligne = Worksheets("Base de données").Cells.Find("Catégories").Row
   RefCatégoriesBDD_Colonne = Worksheets("Base de données").Cells.Find("Catégories").Column
   'Mémorisation de la valeur de l'année
    AdresseCatégoriesBDD_Colonne = Left(Worksheets("Base de données").Cells(RefCatégoriesBDD_Ligne, RefCatégoriesBDD_Colonne).Address(0, 0), 1)

  '---------------
  'La cellule "Année" de la feuille "Analyse"
   RefAnnéeAnalyse_Ligne = Worksheets(NomCetteFeuille).Cells.Find("Année").Row
   RefAnnéeAnalyse_Colonne = Worksheets(NomCetteFeuille).Cells.Find("Année").Column
   'Mémorisation de la valeur de l'année
    Année = Worksheets(NomCetteFeuille).Cells(RefAnnéeAnalyse_Ligne + 1, RefAnnéeAnalyse_Colonne).Value
    'La valeur de cette cellule ne doit pas être vide
     If Année = "" Then
        MsgBox "Veuillez indiquer l'année associée à l'analyse de vos données", vbCritical, "Information complémentaire nécessaire"
        Exit Sub
     End If

  'Le mois ciblé: Le mois de janvier en l'occurence
   MoisCible = Worksheets("Analyse").Cells(RefAnnéeAnalyse_Ligne + 1, RefAnnéeAnalyse_Colonne + 1).Value

  'Identification des variables de la formules SumIfs:
   ValeursASommer = Worksheets("Base de données").Range(AdresseDébitEurosBDD_Colonne & ":" & AdresseDébitEurosBDD_Colonne)
   RangeCriteria1 = Worksheets("Base de données").Range(AdresseMoisBDD_Colonne & ":" & AdresseMoisBDD_Colonne)
   RangeCriteria2 = Worksheets("Base de données").Range(AdresseAnnéeBDD_Colonne & ":" & AdresseAnnéeBDD_Colonne)
   RangeCriteria3 = Worksheets("Base de données").Range(AdresseCatégoriesBDD_Colonne & ":" & AdresseCatégoriesBDD_Colonne)

  'Calcul de la somme
   Worksheets("Analyse").Range("C23").Value = "= Application.SUMIFS(ValeursASommer, RangeCriteria1, MoisCible, RangeCriteria2, ""2014"", RangeCriteria3, ""Alimentaire"")"

End Sub

Qu'est ce qu'il me manque pour que cela fonctionne?

Merci encore

Si mes infos sont insuffisantes je pourrai éventuellement faire un fichier exemple.

Cordialement

Bonjour,

L'envoi d'un fichier serait effectivement un plus.

Merci d'avoir répondu à mon appel en tout cas !

Je te laisse en pièce jointe un fichier modèle qui est une petite partie de l'original.

Merci encore à tous

82fichiertest.xlsm (58.74 Ko)

Bonjour

Proposition sans VBA avec une formule somme.si.ens après avoir transformé ta base en tableau dynamique

A tester

Cordialement

FINDRH

93fichiertest-v1.xlsm (42.59 Ko)

Bonsoir FINDRH,

J'aime bien ta solution ceci dit j'aimerai vraiment pouvoir le réaliser sous VBA. C'est mon seul critère en fait :S!

Bonsoir

Pour le fun pourquoi pas

As tu enregistré la saisie de la formule en macro, cela doit par comparaison avec la formule classique, te permettre de repérer les variables et notamment de voir quelles cellules sont figées en ligne et/ou colonnes

Cordialement

FINDRH

Rechercher des sujets similaires à "quelle syntaxe somme ens vba"