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 :

Calcul cumulatif de données connaissant la première date


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut Calcul cumulatif de données connaissant la première date
    Salut le forum

    J'ai conçu un logiciel avec excel pour une facturation.
    Tout se passe bien et maintenant je souhaite faire les statistiques de vente par jour/Hebdomadaire et Mois.
    Avec la fonction sommeprod, j'arrive à faire les statistiques journalières.
    Je n'arrive pas à faire pour la semaine sachant qu'à partir de la solution qui sera trouvée je pourrai en déduire pour le mois.
    La colonne E contient le nom des serveurs, la colonne C contient les quantités vendues et la colonne A contient les dates. Le feuille de référence est ETAT_VENTE.
    La date de référence (date début) est saisie en PARAMETRE!$C$2.
    Voici la formule que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SOMMEPROD((ETAT_VENTE!$E$2:$E$464331=B3)*(ETAT_VENTE!$A$2:$A$464331=PARAMETRE!$C$2)*(ETAT_VENTE!$C$2:$C$464331))
    D'avance merci pour vos aides

  2. #2
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Bonsoir,

    Pour ce qui est du calcul par semaine, j'ajouterais une colonne pour récupérer la WeekIso en fonction de ta date.

    Ci-dessous, une fonction qui calcul la semaine d'une date selon les règles Iso, elle peut aussi bien être utilisée dans un tableau Excel (comme une simple formule) que dans un code Vba.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Function ISOweeknum(ByVal v_Date As Date) As Integer
    ISOweeknum = DatePart("ww", v_Date - Weekday(v_Date, 2)+ 4, 2, 2)
    End Function
    Ensuite un simple tableau croisé dynamique te permettrais de faire toutes les sommes, filtres, graphs, dont tu pourrais avoir besoin.

    Bat,
    MFoxy
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  3. #3
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut
    Bonjour Mfoxy

    Merci pour votre proposition.
    Je souhaite bien comprendre le fonctionnement de la fonction isoweeknum que vous avez créer pour pouvoir bien l'exploiter.
    Dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DatePart("ww", v_Date - Weekday(v_Date, 2)+ 4, 2, 2)
    je vois "ww".
    Que dois-je remplacer par ce . Aussi v_Date correspondrait à quoi?

    A vous relire svp
    Encore merci pour tout

  4. #4
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Bonjour,

    vdate est une variable de type date qui est passée à la fonction.

    Le ww, correspond à la notion temps qui sortira de datepart, dans notre cas un numéro de semaine.

    Tu ne dois faire aucune modif dans la fonction, à coller dans un module vba.

    https://silkyroad.developpez.com/VBA/DebuterMacros/Pour l'utilisation

    Pour utilisation.

    En considérant une table avec en A4 une date, en collant la formule dans b4, le numéro de la semaine pour cette date s'affichera.

    Formule : =ISOweeknum(A4)

    Dans un macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SUB Test
    Dim vdate as Date
    vdate ="12-08-2012"
     
     Msgbox ISOweeknum(vdate)
     
    End sub
    Plus explications sur datepart :
    https://docs.microsoft.com/fr-fr/off...epart-function
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  5. #5
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par capi81 Voir le message
    Avec la fonction sommeprod, j'arrive à faire les statistiques journalières.
    Si tu ne maitrises pas totalement les fonctions Excel, je te conseille d'utiliser SOMME.SI.ENS plutôt que SOMMEPROD.
    Lire ça : https://support.microsoft.com/fr-fr/...6-611cebce642b
    Elle est moins puissante mais beaucoup plus simple.

    Pour faire une somme sur un intervalle de temps, il faut placer deux critère : un qui définit le début de la période et un qui définit la fin.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici une formule avec SOMMEPROD utilisant N0.SEMAINE.ISO qui utilise un tableau structuré nommé T_Vente et CurrentDate est une formule nommée renvoyant soit la date du jour, soit une date test (pour plus d'explication voir Comment simplifier l’utilisation d’une formule d’excel en la nommant).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD( (NO.SEMAINE.ISO(T_Vente[Date])=NO.SEMAINE.ISO(CurrentDate) ) * (T_Vente[Serveur]="Jojo"); T_Vente[Qté])
    La fonction N0.SEMAINE.ISO n'étant présente dans Excel que depuis la version 2013, les versions antérieures devraient utiliser NO.SEMAINE avec comme deuxième argument 21 pour la norme ISO mais je ne me rappelle plus si cet argument est arrivé avec la version 2010 ou 2007 mais de toute manière cette fonction renvoie une erreur lorsqu'elle est utilisée avec une plage de plusieurs cellules avec SOMMEPROD

    Donc avec SOMMEPROD il reste la solution d'une colonne supplémentaire calculant le n° de la semaine et alors la formule ci-dessous fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD( (T_Vente[Sem]=NO.SEMAINE(CurrentDate);21)  * (T_Vente[Serveur]="Jojo"); T_Vente[Qté])
    Une solution également est de créer une fonction personnalisée calculant le n° de la semaine mais qui renvoie une matrice.
    Autre solution proposée dans cette discussion, titrée SOMMEPROD et NO.SEMAINE


    L'autre solution est celle proposée par Menhir avec SOMME.SI.ENS

    [EDIT]
    Reste la solution de BDSOMME qui fonctionne également avec la version 2007
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =BDSOMME(T_Vente[#Tout];T_Vente[[#En-têtes];[Qté]];areaCriteria)
    Où la zone des critères (areaCriteria) est constituée de quatre cellules (2 colonnes et 2 lignes) le titre de la première est Serveur et la seconde _fx_. Le critère de la première est le nom du serveur, le second critère est un critère calculé =NO.SEMAINE(A2;21)=NO.SEMAINE(CurrentDate;21)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Réponses: 11
    Dernier message: 02/03/2018, 23h55
  2. Première date non discontinue contenant une donnée
    Par oliv134 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/01/2017, 14h10
  3. Réponses: 3
    Dernier message: 19/05/2008, 10h36
  4. Réponses: 12
    Dernier message: 02/01/2006, 22h13
  5. calcule du nombre de jours entre 2 dates
    Par nazimb dans le forum ASP
    Réponses: 4
    Dernier message: 28/09/2004, 15h22

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