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 :

Sumifs VBA - somme multicriteres d un tableau dans un autre tableau


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Septembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Septembre 2018
    Messages : 4
    Par défaut Sumifs VBA - somme multicriteres d un tableau dans un autre tableau
    Bonjour à tous,

    J'ai un tableau ("Monthly Hours") avec plusieurs informations concernant différentes machines de différents clients avec des heures machines réalisées par mois, et je voudrais être capable de faire dans un deuxième tableau ("projection") la somme des heures propres à un client et sur une période donnée (la période est définie dans "projection" en cellules C1 et E1) , par type de machines, puis par catégorie.

    Tableau dont sont extraites les donnees "Monthly Hours"
    Nom : tab1.JPG
Affichages : 791
Taille : 44,9 Ko


    Tableau dans un deuxieme onglet ou sont reprises les données "Projection"
    Nom : tab2.JPG
Affichages : 747
Taille : 32,5 Ko

    Je veux effectuer ces calculs en VBA car les tableaux peuvent être ajournées régulièrement, et l'utilisation de formules dans excel n'est pas pratique pour cela.

    Cependant, n'étant pas un expert en VBA, je le conçois que j'utilise peut-etre une methode archaique.

    J'utilise un sumifs pour calculer les sommes aux critères que je souhaite, mais je me rends compte de deux problèmes :
    1. Cela calcul la somme que pour le mois du début de la période (ici, mars 2018) et non pas sur toute la période.
    2. Je n'arrive à avoir la somme des données que pour le premier critère "machine type", mais pas pour le second critère "category"

    La ligne de code relative à mon sumifs se trouve en rouge dans le code ci dessous

    Merci d avance pour votre aide


    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
    51
    52
    53
    Sub test()
    '
    ' test Macro
    '
     
    '
    Dim i, j, mons, monsend, years, yearend, colstart, colend, nbrcolsumif, yeartest As Integer
    Dim condition As Range
    Dim startdate, enddate As Date
     
    col = 14
    colstart = 14
    colend = 14
    startdate = Sheets("Projection").Cells(1, 3) ' date de début de la periode voulue
    enddate = Sheets("Projection").Cells(1, 5) ' date de fin de la periode voulue
     
    mons = Month(startdate)
    years = year(startdate)
    monsend = Month(enddate)
    yearend = year(enddate)
     
     
    Sheets("Monthly Hours").Activate
    Do While (years <> year(Sheets("Monthly Hours").Cells(4, colstart).value) Or mons <> Month(Sheets("Monthly Hours").Cells(4, colstart).value))
     
    colstart = colstart + 1
    Loop
     
     
     
    While (yearend <> year(Sheets("Monthly Hours").Cells(4, colend).value) Or monsend <> Month(Sheets("Monthly Hours").Cells(4, colend).value))
     
    colend = colend + 1
     
    Wend
     
     
     
    i = 3
    j = 2
    While Not IsEmpty(Sheets("Projection").Cells(2, j))
    While Not IsEmpty(Sheets("Projection").Cells(i, 1))
     
    nbrcolsumif = colend - colstart
     
        Sheets("Projection").Cells(i, j).value = Application.WorksheetFunction.SumIfs(Sheets("Monthly Hours").Range(Cells(5, colstart), Cells(1048576, colend)), Sheets("Monthly Hours").Range(Cells(5, 4), Cells(1048576, 4 + nbrcolsumif)), Sheets("Projection").Cells(i, 1), Sheets("Monthly Hours").Range(Cells(5, 1), Cells(1048576, 1 + nbrcolsumif)), Sheets("Projection").Cells(2, j))
     
    i = i + 1
    Wend
    j = j + 1
    i = 3
    Wend
    End Sub
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/02/2021, 10h49
  2. Copier une partie d'un tableau dans un autre tableau
    Par sdecorme dans le forum MATLAB
    Réponses: 9
    Dernier message: 23/08/2013, 10h36
  3. récupération de variables d'un tableau dans 1 autre tableau
    Par deneb92 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/12/2010, 13h19
  4. passer un tableau dans un autre tableau
    Par lrgtk dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 07/09/2010, 19h11
  5. création de tableau dans un autre tableau
    Par freestyler dans le forum Delphi
    Réponses: 2
    Dernier message: 02/11/2006, 08h54

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