Bonjour franck70, bonjour à toutes et à tous 🙂
Franck, je te joins le classeur avec le code commenté, ainsi tu pourras voir les instructions avec l'explication associée.
Pour ListeLibelles, la formule est (en simplifiant, i.e. sans le nom de la feuille) :
=DECALER($O$8;;;EQUIV(RECHERCHE(9^9;$O:$O);$O$8:$O$65536;0);2)
On va procéder par étape :
1) RECHERCHE(9^9;$O:$O)
- renvoie la dernière valeur numérique de ta colonne O (660 dans ton exemple)
2) EQUIV(660;$O$8;$O$65536;0)
- retourne la position relative de la valeur 660 (on recherche la valeur exacte - 3ème paramètre à '0' dans EQUIV).
Si 660 est trouvé en O8, EQUIV retournera 1 (position relative), dans ton fichier avant la création des sous-totaux, 660 est à la position 13, soit en ligne 8 + 13 - 1 = 20, et après la création (lignes vides), en position 16, soit en ligne 8 + 16 - 1 = 23.
3) DECALER($O$8;;;[13 ou 16];2)
DECALER(Cellule, nbLignes, NbCol, Hauteur, Largeur)
Avec les explications précédentes, on peut déterminer que ListeLibelles représentera soit $O$8:$P$20 (13 lignes de haut et 2 colonnes de large), soit $O$8:$P$23.
Voilà, avec le fichier en complément, tu auras à peu près toutes les explications que tu souhaites. N'hésite pas au besoin, de faire signe à nouveau... :silly:
[file name=franck70_macrosoustotauxComments.zip size=24805]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/franck70_macrosoustotauxComments.zip[/file]
A+ 😉