Sous-totaux
Résolu
adrifo07
Messages postés
41
Date d'inscription
Statut
Membre
Dernière intervention
-
Vaucluse Messages postés 26496 Date d'inscription Statut Contributeur Dernière intervention -
Vaucluse Messages postés 26496 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
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
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
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
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.
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.
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.
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.
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))))
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))))
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
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