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
    0
    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.
      0
      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.
        0
      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))))
        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
        0