Sous-totaux

Résolu/Fermé
adrifo07 Messages postés 41 Date d'inscription mardi 5 mars 2013 Statut Membre Dernière intervention 14 janvier 2015 - Modifié par adrifo07 le 5/03/2013 à 17:02
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 12 mars 2013 à 18:38
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

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 418
Modifié par Vaucluse le 5/03/2013 à 18:41
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
adrifo07 Messages postés 41 Date d'inscription mardi 5 mars 2013 Statut Membre Dernière intervention 14 janvier 2015
Modifié par adrifo07 le 6/03/2013 à 10:22
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 418
6 mars 2013 à 10:05
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
adrifo07 Messages postés 41 Date d'inscription mardi 5 mars 2013 Statut Membre Dernière intervention 14 janvier 2015
12 mars 2013 à 18:24
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 418
12 mars 2013 à 18:38
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