Sous-totaux

Résolu
adrifo07 Messages postés 47 Statut Membre -  
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  2. adrifo07 Messages postés 47 Statut Membre
     
    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. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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. adrifo07 Messages postés 47 Statut Membre
       
      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. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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