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 :

Définir une plage de calcul variable en fonction d'un critère


Sujet :

Excel

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 71
    Points : 46
    Points
    46
    Par défaut Définir une plage de calcul variable en fonction d'un critère
    Bonjour,

    J'ai fait pas mal de recherches, mais je bute sur un problème:

    J'aurais besoin d'insérer dans une formule SOMME.SI.ENS une fonction allant rechercher sur une autre feuille du classeur une plage variable pour effectuer le calcul en fonction d'une valeur à renseigner dans une cellule.

    J'ai sur la feuille 1 un tableau avec les années en colonnes, différentes catégories (A,B,C) en lignes et des montants en valeurs.
    Sur la feuille 2, il faudrait que j'additionne les montants correspondants sous une même colonne "Année" et trois sous colonnes pour les catégories A, B,C.
    La fonction SOMME.SI.ENS permet parfaitement de faire le tri sur les catégories qui sont inscrites en lignes sur ma première feuille, mais pas sur les années qui sont inscrites en colonnes.
    En fait, c'est la partie en rouge de la formule =SOMME.SI.ENS(Feuil1!B2:B11;Feuil1!$A$2:$A$11;A$2) qu'il faudrait que je puisse rendre variable en fonction de la valeur de ma cellule A1.
    Pas de tableau croisé dynamique car j'ai besoin sur la feuille 2 de mettre côte à côte plusieurs années ventilées chacune avec les sous-colonnes par catégories.

    Si quelqu'un de plus calé que moi veut bien se pencher sur mon problème, je mets une pièce jointe pour une meilleure compréhension.

    Merci d'avance de vos réponses.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DECALER(Feuil1!B2;0;EQUIV(Feuil2!A1;Feuil1!A1:G1;0);NBVAL(Feuil1!B2:B65536);1)
    La formule ci-dessus ira cherche la bonne colonne dans la feuille 1

    Je te laisse consulter l'aide des différentes fonctions utiliser pour mieux les comprendre

    Antony
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  3. #3
    Membre expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Points : 3 554
    Points
    3 554
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Antony,
    Une idée intéressante mais attention !
    EQUIV (Feuil2!A1 ; Feuil1!A1:G1 ; 0) donne 2
    et
    DECALER(Feuil1!B2 ;0 ; 2 ; NBVAL(Feuil1!B2:B65536) ; 1) donne finalement la plage D2 : D11 correspondant non pas à l'année 2010 mais à 2012.

    marcb03,
    Le problème ennuyeux, dans ta feuille 2, est (comme trop souvent) la fusion des cellules A1:A3 . Cela oblige à trouver une certaine périodicité qui , toutes les trois colonnes,
    fera utliser une même plage de la feuille 1 pour le calcul (B2:B11 pour les colonnes A,B,C ; C2:C11 pour les colonnes D,E,F ...)
    Première proposition avec la fonction DECALER proposée par Antony
    Appelons catégories la plage A2:A11 de la feuille 1.
    La formule de calcul = ENT(COLONNE()-1/3) + 1 donne lorsqu'elle est écrite dans une cellule d'une des trois colonnes A,B,C le même résultat 1 , ce qui est le nombre de
    colonnes dont il faut décaler la plage nommée catégories pour obtenir la plage B2:B11 qui nous intéresse.
    La même formule écrite dans une cellule des colonnes D,E,F renvoie 2 c'est à dire le nombre de colonnes dont il faut décaler la plage nommée catégories pour obtenir
    la plage C2:C11 qui correspond à l'année 2011 ...
    d'où la formule finale en A3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME.SI(catégories;A$2;DECALER(catégories;;ENT((COLONNE()-1)/3)+1))
    Recopier cette formule vers la droite jusqu'en R3.
    Cette proposition est mise en oeuvre dans la feuille 2 du classeur joint.
    Deuxième proposition avec la fonction SOMMEPROD
    En plus du nom catégories, utilisons le nom années pour la plage B1:G1 (feuil1) et le nom tabval pour la plage B2:G11 (toujours feuil1).
    Se placer en A3 et définir un nouveau nom calculannée par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Feuil3!$A$1;;3*ENT((COLONNE()-1)/3))
    Ecrire alors en A3 la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((catégories=Feuil3!A$2)*(années=calculannée)*tabval)
    et recopier cette formule vers la droite jusqu'en R3.
    Cette proposition est mise en oeuvre dans la feuille 3 du classeur joint.
    Remarque pour cette seconde démarche :
    Si quelqu'un peut m'expliquer pourquoi, alors que cette démarche en deux temps (définition du nom calculannée puis formule) donne des résultats satisfaisants, l'écriture en A3 de la formule :
    =SOMMEPROD((catégories=Feuil3!A$2)*(années=DECALER(Feuil3!$A$1;;3*ENT((COLONNE()-1)/3)))*tabval)
    renvoie le message d'erreur #VALEUR!, merci d'avance!
    Cordialement
    Claude
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2003] Affectation de formule de calcul et calcul à partir d'une plage de taux variable
    Par jeandani2012 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/08/2012, 16h32
  2. Sélectionner une plage de cellules variables pour faire un graphique?
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/11/2007, 18h06
  3. Créer un graph avec une plage de donnée variable
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/06/2007, 17h15
  4. Réponses: 25
    Dernier message: 30/05/2007, 13h03
  5. appliquer une macro a une plage de cellule variable
    Par johndeuf dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/11/2006, 16h18

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