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

Excel Discussion :

Sommeprod ET OU [XL-2016]


Sujet :

Excel

  1. #1
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut Sommeprod ET OU
    Bonjour,

    Galère avec le SOMMEPROD, je m'explique :
    1 fichier, 2 onglets "Plan actions" et "recap"

    Dans l'onglet "plan actions", j'ai un vrai tableau dans lequel j'ai nommé les colonnes. Parmi ces colonnes, j'ai :
    - "date de fin previsionnelle"
    - "date de fin recalee"
    - "date de fin reelle"

    Dans l'onglet "recap", j'ai egalement un vrai tableau. La colonne A nommée "Annee-Actions" comporte en A2 "01/01/2020" au format aaaa soit "2020" pour A3 j'ai "2021", A4 "2022" et A5 "2023"
    Je dois en colonne B calculer par année, le nbre de date en retard se situant sur l'onglet "plan actions".

    Si en colonne "date de fin reelle" j'ai une date, je ne doit donc pas compter le retard puisque l'action concernée est cloturée.
    Il faut donc que je calcule uniquement le nbre de date qui sont soit en retard en "date de fin previsionnelle" qui n'ont pas ete recalee ou celles qui ont ete recalée est qui sont en retard par rapport à la date du jour.

    j'ai tapé cette formule mail elle me renvoie #valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(--(ANNEE(Tab_Plan_Actions[Date de fin recalée])=ANNEE([@Actions]));--(ANNEE(Tab_Plan_Actions[Date de fin prévisionnelle])=ANNEE([@Actions]));OU(Tab_Plan_Actions[Date de fin recalée]<AUJOURDHUI();Tab_Plan_Actions[Date de fin prévisionnelle]<AUJOURDHUI());--(ESTVIDE(Tab_Plan_Actions[Date de fin réelle])))
    Quelqu'un pourrait il m'aider ?

    Cordialement,
    Graphikris.

    Nom : plan actions.png
Affichages : 108
Taille : 9,9 KoNom : recap.png
Affichages : 108
Taille : 82,7 Ko

  2. #2
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 2 878
    Points
    2 878
    Par défaut
    Bonjour

    Je peux vous proposer la solution suivante :
    Nom : SommeProd2.png
Affichages : 93
Taille : 29,4 Ko



    Basée sur la formule ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =SOMMEPROD(1*(ANNEE(Tabl1[DFPrév])=[@Actions])*(Tabl1[DFRéelle]<LaDJ)*(Tabl1[DFRéelle]<>0))
    +SOMMEPROD(1*(ANNEE(Tabl1[DFPrév])=[@Actions])*(Tabl1[DFRecalée]<LaDJ)*(Tabl1[DFRecalée]<>0))
    +SOMMEPROD(1*(ANNEE(Tabl1[DFPrév])=[@Actions])*(Tabl1[DFRéelle]=0)*(Tabl1[DFRecalée]=0)*(Tabl1[DFPrév]<LaDJ))


    Afin d'être un peu plus lisible, j'ai facilité de la façon suivante :
    - mon tableau bleu est nommé Tabl1
    - la date du jour est en E1 est est nommée LaDJ (mais peut bien sûr être remplacée par AUJOURDHUI())
    - les actions dans mon tableau orange sont des années (mais peuvent bien sûr être remplacées par ANNEE([@Actions]))
    - j'ai fait 3 SOMMEPROD que j'additionne afin de faciliter grandement la compréhension et la maintenance (pour info : passer à la ligne dans une formule s'effectue en faisant Alt+Entrée)

    Le début de chaque formule est le même : on ne prends en compte que les lignes dont l'année de la date de fin prévisionnelle est égale à l'année de l'action.
    Puis, sur la première ligne, on cherche celles dont la date de fin réelle est inférieure à aujourd'hui (tout en étant différente de 0).
    Sur la deuxième ligne, on cherche celles dont la date de fin recalée est inférieure à aujourd'hui (tout en étant différente de 0).
    Sur la troisième ligne, on cherche celles dont la date de fin réelle est égale à zéro, et dont la date de fin recalée est égale à zéro et dont la date de fin prévisionnelle est inférieure à aujourd'hui.


    En espérant avoir bien compris et que cela aide

    Bon après-midi

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut
    Bonjour Pierre,

    je vous remercie pour votre aide.
    J'ai remplacé vos noms de colonnes par les miens mais les résultats sont incorrects.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =SOMMEPROD(1*(ANNEE(Tab_Plan_Actions[Date de fin prévisionnelle])=[@Actions])*(Tab_Plan_Actions[Date de fin réelle]<AUJOURDHUI())*(Tab_Plan_Actions[Date de fin réelle]<>0))
    +SOMMEPROD(1*(ANNEE(Tab_Plan_Actions[Date de fin prévisionnelle])=[@Actions])*(Tab_Plan_Actions[Date de fin recalée]<AUJOURDHUI())*(Tab_Plan_Actions[Date de fin recalée]<>0))
    +SOMMEPROD(1*(ANNEE(Tab_Plan_Actions[Date de fin prévisionnelle])=[@Actions])*(Tab_Plan_Actions[Date de fin réelle]=0)*(Tab_Plan_Actions[Date de fin recalée]=0)*(Tab_Plan_Actions[Date de fin prévisionnelle]<AUJOURDHUI()))
    et voici mon vrai tableau avec mes dates. en fond vert les actions cloturées et en fond rouge les actions en retard. Ici j'ai 1 action en retard pour 2020 et 2 pour 2021 et pour l'instant j'ai "0" pour toutres les années.
    Nom : 1 retard 2020 _ 2 retards 2021.png
Affichages : 84
Taille : 10,3 Ko

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Les ET et OU ne passent pas en matricielle. On est obligé d'utiliser l'arithmétique booléenne de bout en bout.

    Le fait d'avoir des dates et pas uniquement les années dans ton tableau de bord complexifie et allonge un peu la formule. La version XL365 permettrait de gagner un peu grâce à la fonction LET qui permet de définir des variables dans la formule.


    =SOMMEPROD((Tableau1[Date de fin réelle]="")*((((Tableau1[Date de fin recalée]<>"")*Tableau1[Date de fin recalée]<AUJOURDHUI())*(ANNEE(Tableau1[Date de fin recalée])=ANNEE(E1)))+((Tableau1[Date de fin recalée]="")*(Tableau1[Date de fin prévisionnelle]<AUJOURDHUI())*(ANNEE(Tableau1[Date de fin prévisionnelle])=ANNEE(E1)))>0))

    Nom : 2021-04-15_171505.png
Affichages : 92
Taille : 107,1 Ko


    En arithmétique booléenne, ET se traduit par la multiplication et OU se traduit par l'addition. Si tu veux tester ET(A;OU(B;C)), tu dois réaliser l'opération A * ((B+C)>0) qui va transformer tes valeurs booléennes en valeurs numériques (VRAI = 1 et FAUX = 0). Dans l'exemple qui nous concerne, tout tient donc dans un seul SOMMEPROD.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre confirmé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 214
    Points : 522
    Points
    522
    Par défaut
    Merci beaucoup Pierre Fauconnier,

    Sans vous je serais toujours en galère. Vous m'enlevez une énorme épine.
    Vous êtes brillant

  6. #6
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 2 878
    Points
    2 878
    Par défaut
    Bonsoir

    Même si Pierre Fauconnier (que je salue) a déjà posté une bonne réponse, ainsi que la bonne explication (petit problème sur l'année que vous n'aviez pas pris en compte comme je l'avais indiqué), je donne la mienne (histoire que je n'ai pas bossé pour rien ).
    Nom : SommeProd4.png
Affichages : 92
Taille : 51,7 Ko


    La formule est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =SOMMEPROD(1*(ANNEE(Tabl1[DFPrév])=ANNEE([@Actions]))*(Tabl1[DFRecalée]<AUJOURDHUI())*(Tabl1[DFRecalée]<>0)*(Tabl1[DFRéelle]=0))
    +SOMMEPROD(1*(ANNEE(Tabl1[DFPrév])=ANNEE([@Actions]))*(Tabl1[DFRéelle]=0)*(Tabl1[DFRecalée]=0)*(Tabl1[DFPrév]<AUJOURDHUI()))


    En espérant que cela soit aussi une aide

    Belle fin de journée

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut Pierre,

    J'espère que tu vas bien

    La tienne est plus lisible et compréhensible que la mienne puisqu'elle éclate le OU en en deux SOMMEPROD. On s'y retrouve plus facilement dans les parenthèses que dans la mienne =>
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 2 878
    Points
    2 878
    Par défaut
    Bonjour Pierre

    Oui, je vais bien et j'espère que tu vas au moins aussi bien que moi

    Quant à la formule j'avais aussi commencé en une seule, mais je me suis emberlificoté. J'avais donc un peu changé de fusil d'épaule en utilisant deux SOMMEPROD.
    De plus, en écrivant sur plusieurs lignes la formule dans la cellule, je trouve que cela aide grandement à la maintenance.

    Belle soirée à toi et à ceux qui lisent.

    Pierre
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

Discussions similaires

  1. la fonction SOMMEPROD dans une boucle dynamique
    Par Mounamidou dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/10/2007, 16h32
  2. sommeprod ou pas ?
    Par alsimbad dans le forum Excel
    Réponses: 3
    Dernier message: 28/08/2007, 22h22
  3. [FORMULE]Probleme avec la fonction SOMMEPROD()
    Par MasterZORG dans le forum Excel
    Réponses: 2
    Dernier message: 27/07/2007, 10h02
  4. SOMMEPROD avec critere particulier
    Par Orakle dans le forum Excel
    Réponses: 2
    Dernier message: 12/07/2007, 15h22
  5. Sommeprod
    Par bud.boundy dans le forum Access
    Réponses: 1
    Dernier message: 08/12/2006, 17h14

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