Sous-totaux

Résolu
Bonjour,
Je construit actuellement des modèles de DPGF (Décomposition Globale et forfaitaire) pour mon entreprise.

je suis arrivé comme un grand a mettre en forme automatiquement les cellules via les mises en formes conditionnelles en fonction des numéro de chapitre 1; 1,1; 1,1,1
mais j'aimerais que les calculs des sous-totaux se fassent seules.

je pense qu'il est possible de faire cela par une formule du genre :
=SI(A7="";D7*E7;SOMME.SI(A7:A150;"";F8:F150)

le problème c'est que le 150 peux être variable c'est la dernière ligne du chapitre. je me suis servi du nombre de virgule contenu dans la colonne A pour faire la mise en forme, peut-être est-il possible de réutiliser cette info pour le sous-totale?

merci pour vos réponses

2 réponses

  1. Contributeur
    Bonsoir
    pas tout compris:

    =SOMME.SI(A:A;"1,1,1";F:F)
    fonctionne pour compter le total de F lorsque A est 1,1,1 et la limite de ligne n'est pas utile.
    Crdlmnt
    Errare humanum est, perseverare diabolicum
    1. Bonjour j'aimerais joindre un fichier mais je ne sais pas comment faire.

      en gros j'ai :

      REP......NOM...........................NBR...PU...Prix Total en€
      1..........Alimantaire.................................24
      1,1.........Légumes...................................17
      1,1,1.........Légumes frais.........................7
      ...........................- Asperge.......4....1.00...4
      ...........................- Aubergine.....6...0.50...3
      ...........................- xxx..............x.....x.....x
      1,1,2..........Légumes sec.........................10
      ...........................- lentille.........4....1.00...4
      ...........................- petit pois......6...0.50...3
      ...........................- Hricot sec.....6...0.50...3
      ...........................- xxx..............x.....x.....x
      1,2 ..........Fruit........................................7
      ...........................- pomme........6...0.50...3
      ...........................- poire...........4....1.00...4
      ...........................- xxx..............x.....x.....x
      2..........Produit autre..............................24
      2,1..........Produit ménagé..........................7
      ...........................- sol...............4....1.00..4
      ...........................- vitre.............6...0.50...3
      ...........................- xxx..............x.....x.....x
      2,2..........Produit de bauté......................17
      2,2,1..........homme...................................7
      ...........................- rasoir...........6...0.50...3
      ...........................- gel douche....4....1.00...4
      ...........................- xxx..............x.....x.....x
      2,2,2..........Femme..................................10
      ...........................- gel douche....4....1.00...4
      ...........................- maquillage... 6...0.50...3
      ...........................- crème..........4....1.00...4
      ...........................- xxx..............x.....x.....x

      Ce que je veux c'est que la colonne Prix Total en€ soit déjà rempli avec une unique formule, et quelle fasse soit le NBR*PU soit la somme le sous-totale
      le problème c'est qu'il faut arrêté la somme soit au REP du même niveau (1 à 2) soit au niveau supérieur (1.1.2 à 1.2)
      les REP seront forcément composé comme suivant pour les titres de chapitre "X" ; "X,X" ; "X,X,X" ;
      et il ne peut y avoir que 3 niveaux.
      les lignes de valeur auront un REP vide.

      voilà j'espère que c'est un peu plus claire comme ça.
      1. Contributeur
        Bonjour
        effectivement avec un fichier ce serait mieux! Ca éviterait de se repayer la mis en page
        Allez ici:
        https://www.cjoint.com/
        déposez le fichier
        en bas de page, créer le lien
        et revenez placer ce lien dans un prochain message.
        A vous lire.
      2. Bonjour,
        merci mais après de nombreux essais j'y suis arrivé mais la formules est un peu (vraiment trop) longue ! la voici (en tout cas merci pour t'as réponse):
        =SI(DPGF[ligne;[REP]]="";DPGF[ligne;[QTE]]*DPGF[ligne;[Prix Unitaire € HT]];
        SI(1+NBCAR(DPGF[ligne;[REP]])-NBCAR(SUBSTITUE(DPGF[ligne;[REP]];",";""))=1;
        SOMME.SI(INDIRECT(CONCATENER("A";CELLULE("ligne";DPGF[ligne;[REP]])+1)):INDIRECT(CONCATENER("A";
        MIN(
        SIERREUR(EQUIV(1;INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF[ligne;[REP]])+1);1):INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1);0);CELLULE("ligne";DPGF#Totaux)-1))
        +CELLULE("ligne";DPGF[ligne;[REP]])-1;));
        "";
        INDIRECT(CONCATENER("F";CELLULE("ligne";DPGF[ligne;[REP]])+1)):INDIRECT(CONCATENER("F";
        MIN(
        SIERREUR(EQUIV(1;INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF[ligne;[REP]])+1);1):INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1);0);CELLULE("ligne";INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1))))
        +CELLULE("ligne";DPGF[ligne;[REP]])-1)));

        SI(1+NBCAR(DPGF[ligne;[REP]])-NBCAR(SUBSTITUE(DPGF[ligne;[REP]];",";""))=2;
        SOMME.SI(INDIRECT(CONCATENER("A";CELLULE("ligne";DPGF[ligne;[REP]])+1)):INDIRECT(CONCATENER("A";
        MIN(
        SIERREUR(EQUIV(2;INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF[ligne;[REP]])+1);1):INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1);0);CELLULE("ligne";DPGF#Totaux)-1);
        SIERREUR(EQUIV(1;INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF[ligne;[REP]])+1);1):INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1);0);CELLULE("ligne";DPGF#Totaux)-1))
        +CELLULE("ligne";DPGF[ligne;[REP]])-1;));
        "";
        INDIRECT(CONCATENER("F";CELLULE("ligne";DPGF[ligne;[REP]])+1)):INDIRECT(CONCATENER("F";
        MIN(
        SIERREUR(EQUIV(2;INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF[ligne;[REP]])+1);1):INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1);0);CELLULE("ligne";INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1)));
        SIERREUR(EQUIV(1;INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF[ligne;[REP]])+1);1):INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1);0);CELLULE("ligne";INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1))))
        +CELLULE("ligne";DPGF[ligne;[REP]])-1)));

        SI(1+NBCAR(DPGF[ligne;[REP]])-NBCAR(SUBSTITUE(DPGF[ligne;[REP]];",";""))=3;
        SOMME.SI(INDIRECT(CONCATENER("A";CELLULE("ligne";DPGF[ligne;[REP]])+1)):INDIRECT(CONCATENER("A";
        MIN(
        SIERREUR(EQUIV(3;INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF[ligne;[REP]])+1);1):INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1);0);CELLULE("ligne";DPGF#Totaux)-1);
        SIERREUR(EQUIV(2;INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF[ligne;[REP]])+1);1):INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1);0);CELLULE("ligne";DPGF#Totaux)-1);
        SIERREUR(EQUIV(1;INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF[ligne;[REP]])+1);1):INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1);0);CELLULE("ligne";DPGF#Totaux)-1))
        +CELLULE("ligne";DPGF[ligne;[REP]])-1;));
        "";
        INDIRECT(CONCATENER("F";CELLULE("ligne";DPGF[ligne;[REP]])+1)):INDIRECT(CONCATENER("F";
        MIN(
        SIERREUR(EQUIV(3;INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF[ligne;[REP]])+1);1):INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1);0);CELLULE("ligne";INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1)));
        SIERREUR(EQUIV(2;INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF[ligne;[REP]])+1);1):INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1);0);CELLULE("ligne";INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1)));
        SIERREUR(EQUIV(1;INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF[ligne;[REP]])+1);1):INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1);0);CELLULE("ligne";INDIRECT(CONCATENER("G";CELLULE("ligne";DPGF#Totaux)+1);1))))
        +CELLULE("ligne";DPGF[ligne;[REP]])-1)));0))))
      3. Contributeur
        Bonsoir

        effectivement on doit pouvoir faire mieux, mais pour ça mettez votre modèle sur
        https://www.cjoint.com/
        et revenez ici placez le lien donné par le site
        Ça évitera de se tromper en reconstituant à partir de votre message.

        à vous lire

        Crdlmnt