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 :

Somme.SI.ENS avec plusieurs critères en MACRO [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Supply Chain
    Inscrit en
    Février 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Supply Chain
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2018
    Messages : 49
    Par défaut Somme.SI.ENS avec plusieurs critères en MACRO
    Bonjour,

    Je suis nouveau sur VBA, je veux créer un script vba qui va me permettre de faire la somme de quelques cellules sur une feuille et les afficher sur une autre feuille selon quelques critères, et selon le choix de l'utilisateur.

    Vous allez trouver mon fichier en ci-joint.

    Exemple : Quand l'utilisateur fait le choix de "Blle SOM 20ML" dans la liste déroulante sur la feuil TEST, le programme fait la recherche des références qui se trouvent sur la colonne C dans "Nomen" dans la feuil "Détails" et que leurs mois d'exécution est de JANVIER (Feuil Détails Colonne J) et faire la somme de la colonne H (Détails) et présenter les résultats sur la feuil TEST dans les cellules C5:N5 dans la cellule qui représente Janvier.

    J'en est essayer de le faire avec une fonction Excel et apriori ça marche pour le mois de Janvier, mais je pense que cela sera plus fonctionnel avec un Macro VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {=SOMME(SOMME.SI(Détails!B:B;Nomen!C4:C35;Détails!H:H);SOMME.SI(Nomen!C2:H2;Test!B2;Détails!H:H);SOMME.SI(Détails!J:J;Test!C3;Détails!H:H))}
    Merci pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Regarde du côté de SOMME.SI.ENS qui te permet de mettre plusieurs conditions.
    Attention au 1er paramètre qui est la plage à sommer contrairement su SOMME.SI qui utilise le dernier.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur Supply Chain
    Inscrit en
    Février 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Supply Chain
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2018
    Messages : 49
    Par défaut
    Merci Parmi pour ta réponse.
    Mais j'aimerai bien un exemple pour appliquer cette fonction en VBA.

    Merci

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    le plus simple est une transposition direct (après anglicisation) avec Evaluate ou WorksheetFunction.
    https://msdn.microsoft.com/library/0...ice.15%29.aspx
    https://msdn.microsoft.com/library/f...ice.15%29.aspx

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur Supply Chain
    Inscrit en
    Février 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Supply Chain
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2018
    Messages : 49
    Par défaut
    Merci Menhir.

    Moi j'avais fais un essai avec la fonction Somme.Si.Ens sur excel et j'avais pris comme exemple le mois de Janvier et je l'ai trouvé fonctionnel, donc me reste maintenant que d'utiliser l'un des deux transpositions que tu viens de me montrer sur ce code Excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {=SOMME(SOMME.SI.ENS(Détails!H:H;Détails!B:B;Nomen!C4:C35;Détails!J:J;C3))}

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur Supply Chain
    Inscrit en
    Février 2018
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Supply Chain
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2018
    Messages : 49
    Par défaut
    Bonjour,

    J'ai toujours un problème avec la fonction SumIfs, apparemment j'ai trouvé la bonne syntaxe de la fonction, mais le résultat renvoyé est 0.
    Voici mon code :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Dim Plagerefsom20 As Variant
    Dim Plagerefeur20 As Variant
    Dim Plagerefeur30 As Variant
    Dim Plagemois As Variant
    Dim Plageref As Variant
    Dim PlageSomme As Variant
     
    Dim Somme As Long
    Dim RSum As Variant
    Dim RArg1 As Variant
    Dim Arg1 As Variant
    Dim RArg2 As Variant
    Dim Arg2 As Variant
     
    Dim i As Byte
    Dim j As Byte
    Dim k As Byte
    Dim l As Byte
     
    For i = 4 To 50
    For j = 3 To 6
    For k = 4 To 11
    For l = 2 To 200
     
    Set Plagerefsom20 = Worksheets("Nomen").Cells(3, i)
    Set Plagerefeur20 = Worksheets("Nomen").Cells(12, j)
    Set Plagerefeur30 = Worksheets("Nomen").Cells(7, k)
    Set Plagemois = Worksheets("DETAILS").Cells(10, l)
    Set Plageref = Worksheets("DETAILS").Cells(2, l)
    Set PlageSomme = Worksheets("DETAILS").Cells(8, l)
     
    Set RSum = PlageSomme
    Set RArg1 = Plageref
    Set Arg1 = Plagerefsom20
    Set RArg2 = Plagemois
    Set Arg2 = Worksheets("Test").Range("C2")
     
       If Worksheets("Test").Range("B2").Text = Worksheets("Nomen").Range("C2").Text Then
     
    Somme = Application.WorksheetFunction.SumIfs(RSum, RArg1, Arg1, RArg2, Arg2)
     
    Worksheets("Test").Range("C23").Value = Somme
     
    End If
    Exit Sub
    Next
    Next
    Next
    Next
    End Sub
    Je vous remercie pour votre aide.

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

Discussions similaires

  1. [XL-2010] vba excel: fonction VLOOKUP avec plusieurs résultats
    Par LANGAZOU dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/05/2017, 21h46
  2. EXCEL : fonction SOMME.SI avec 2 critères
    Par repié dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/03/2016, 17h10
  3. [XL-2003] VBA comparaison de lignes avec plusieurs critères
    Par klissou69 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/07/2013, 10h49
  4. VBA-E Comment réaliser une recherche avec plusieurs critères ?
    Par Larsen21 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 14/12/2006, 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