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 :

fonction multicritères Sumifs avec des dates


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut fonction multicritères Sumifs avec des dates
    Bonjour à tous,

    Depuis quelques jours je me casse la tête sur le problème suivant:
    J'ai un tableau composé de plusieurs colonnes, chacune représentant un critère particulier (Nom, date, etc), et une colonne 'total'.

    L'idée, à l'aide de worksheetfunction.SumIfs, est de récupérer les totaux pour des critères donnés (un nom en particulier, une date, etc), un peu à l'image d'un filtre.
    Seulement voilà, les dates dans mon tableau peuvent être diverses (mais toujours au format dd/mm/yyyy): 19/02/2014, 21/03/2014, 01/01/2014 etc.

    J'essais de synthétiser toutes ces données dans un autre petit tableau, mais mon problème est donc que je ne parvient pas à regrouper toutes les dates appartenant au même mois.

    Exemple de synthaxe : (un exemple de tableau est en pj)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dSum = WorksheetFunction.SumIfs(rgSum, rgNom, "=" & critereNom, rgClass, "=" & critereClass, rgDate, "=" & Format(critereDate, "mm") & "/" & 2014)
    rgSum, rgNom, rgClass et rgDate sont des Ranges, critereNom et critereClass sont des Strings, et critereDate j'hésite entre Date ou String.

    En gros pour la date je veux qu'il ne compare que le mois et l'année, peut importe le jour, et qu'il me somme par exemple toutes les valeurs de février.
    Le problème, c'est qu'il me trouve en permanence 0.

    Je ne dois pas modifier ma colonne 'Date' de mon tableau de départ.

    Tout système de boucle standard est à éviter (données trop nombreuses), le principe est que cette sub doit être rapide.


    En vous remerciant infiniment pour tout aide.

    Guillaume
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Bonjours,

    Je vais peut être dire une bêtise mais pour moi ton 2014 est un chiffre et non une année... Du coup selon mois il recherche un chiffre et pas une date.

    Peut être qu'il faudrait faire un truc du style (*/mm/2014) ou Year(2014)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Salut, merci de ta réponse.

    C'est justement une synthaxe de ce style que je recherche. j'ai bien essayé de convertir le critère en date, mais entre les erreurs d'incompatibilité et de synthaxe, aucune de mes solutions de fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=" & CDate( "**" & Format(critereDate, "mm/2014"))
    (les * ont l'air de le gêner)

    J'avais aussi pensé à utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Like "*" & Format(critereDate, "mm/2014")
    , mais là aussi, ce n'est pas accepté dans la fonction.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Bonjour essais ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Month(Range("C2")) & Year(2014)
    Avec ce code tu récupère la valeur du mois indiqué dans la case C2 puisque c'est le mois que tu veux faire varier.

    Sinon dis moi comment du fais varier ton mois ou simplement dis moi ce que tu veux faire.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Essais avec m au lieu de mm

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Je veux utiliser simplement la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WorksheetFunction.SumIfs
    qui prend en argument des range d'une part, et des critères d'autre part, pour les comparer.
    Je ne peux pas extraire le mois d'une cellule en particulier comme tu l'a écrit, car je dispose uniquement d'une plage de données, qui sont des dates, et c'est cette plage que je vais rentrer en argument dans ma fonction SumIfs.

    Je pourrais faire une boucle parcourant chaque element de cette plage de dates, et en effet en extraire le mois, l'année et tout ce que je veux. L'ennui c'est le temps d'exécution qui explose.

    Dans cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WorksheetFunction.SumIfs
    , il demande en argument la plage à sommer, ça c'est bon. ensuite, il faut lui mettre en gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    une plage, "=" un critère, une autre plage, "=" critère2
    etc..

Discussions similaires

  1. [XL-2007] fonction si avec des dates
    Par mjihanne dans le forum Excel
    Réponses: 6
    Dernier message: 11/09/2020, 12h39
  2. Probleme fonction SumIf avec des dates
    Par Sogestion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/08/2012, 16h05
  3. Fonction Somme.si avec des dates
    Par Breizh22p dans le forum Excel
    Réponses: 1
    Dernier message: 13/03/2012, 14h43
  4. Requetes avec des dates
    Par PrinceMaster77 dans le forum SQL
    Réponses: 1
    Dernier message: 22/11/2004, 17h46
  5. [Requête] Difficile (impossible ?) avec des dates
    Par starch dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/04/2004, 11h26

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