Décalage de plage et maximum

Bonjour à tous!

Je cherche une formule qui permet de décaler une plage de façon dynamique. Chaque plage commence par 1 et le reste est constitué de 0. Et je voudrais bien décaler ma plage de façon dynamique à chaque fois qu'un 1 apparait.

Pour ensuite calculer le maximum de cette plage sur une autre colonne.

Ce sera peut etre plus simple de comprendre sur le fichier excel, je vous le joins.

Bonjour

Pour comprendre mieux --> En F4 et F5, vous devez avoir quoi comme résultat ?

Cordialement

Bonjour,

Une formule possible en F3 :

=SI(A3=1;MAX(DECALER($B$1;LIGNE()-1;0;EQUIV(1;$A4:$A$149;0)));"")

PS : la ligne 149 doit contenir un 1 pour délimiter la fin de la dernière plage...

DECALER renvoie une plage décalée de X ligne(s) et Y colonne(s) par rapport à une référence. Il est aussi possible de modifier la longueur et largeur de la plage par rapport à cette même référence.

LIGNE() renvoie le numéro de ligne de la cellule dans laquelle la formule se trouve.

EQUIV renvoie la position relative d'un élément dans une plage. Ici on cherche la position du prochain 1 (qui détermine la fin de la plage).

edit : salut Dan !

@+ Dan

Je voudrais bien qu'en F3 s'affiche le maximum de la plage B3 :B20 c'est à dire 60, F4 et F5 0 puis en F21 le maximum de la plage B21: B39 qui est 60. et ainsi de suite

Merci pedro la formule fonctionne comme je le souhaitais!

j'aimerai apporter une amélioration. Est-ce ,que ce serait possible de mettre le maximum au niveau de la ligne. Par exemple pour la première plage en case F7

Merci pedro la formule fonctionne comme je le souhaitais!

j'aimerai apporter une amélioration. Est-ce ,que ce serait possible de mettre le maximum au niveau de la ligne. Par exemple pour la première plage en case F7

Pas avec la formule transmise, qui se base sur la présence du 1 pour connaitre la ligne de début de la plage. Une structure de données plus adaptée le permettrait plus facilement, par exemple avec un index différent pour chaque plage en colonne A, plutôt que des 0 ou des 1...

Re

Je voudrais bien qu'en F3 s'affiche le maximum de la plage B3 :B20 c'est à dire 60, F4 et F5 0 puis en F21 le maximum de la plage B21: B39 qui est 60. et ainsi de suite

Avec la formule de Pedro22, cela fait ce que vous demandez. Pour les 0 en F4, F5 et suivante, il vous suffit de remplacer les " " par 0 dans la formule.

Cordialement

D'accord pedro, je vois.

Si les index évoluaient par exemple 1 de A3àA20 puis 2 de A21 à A39... ce serait possible ?

D'accord pedro, je vois.

Si les index évoluaient par exemple 1 de A3àA20 puis 2 de A21 à A39... ce serait possible ?

Oui, et aussi plus simple en terme de formule...

Fichier modifié avec intégration d'un tableau structuré + ajout d'une fonction matricielle (à valider avec CTRL + MAJ + ENTREE) :

=SI([@Consommation]=MAX(SI([Charge de la batterie]=[@[Charge de la batterie]];[Consommation]));[@Consommation];"")

ok ça marche, quelle serait la nouvelle formule tu penses ?

ok ça marche, quelle serait la nouvelle formule tu penses ?

J'ai modifié mon post précédent pour illustrer mon propos.

Bonjour,

Merci pedro, c'est exactement ce que je voulais comme résultat.

Peux-tu m'en dire plus sur la création de ce tableau matriciel ? Je ne connaissais pas avant. Et notamment sur la présence des @
Merci!

Bonjour,

Merci pedro, c'est exactement ce que je voulais comme résultat.

Peux-tu m'en dire plus sur la création de ce tableau matriciel ? Je ne connaissais pas avant. Et notamment sur la présence des @
Merci!

Tableau structuré et formule matricielle sont 2 choses distinctes. Le tableau structuré permet une syntaxe spécifique des formules (souvent plus claire car on fait référence aux noms de colonne). Il permet aussi le report automatique des formules et de la mise en forme à l'ajout de nouvelles lignes, et fait apparaître automatiquement les options de filtre et de tri.

Pour creuser : tuto tableaux structurés

Les formules matricielles permettent des syntaxes qui ne fonctionnent pas avec les formules classiques. Par exemple pour faire un calcul conditionnel. Il existe par exemple des fonctions NB.SI.ENS, MOYENNE.SI.ENS ou SOMME.SI.ENS, mais en tout cas sur ma version 2010 par de fonction MAX.SI. En combinant MAX() et SI() en matriciel, on peut s'en sortir...

Lien : fonctions matricielle

D'accord, merci pour l'explication.

Dans ma version excel, la fonction max.si.ens existe. Tu penses que ça donnerait quoi ?

D'accord, merci pour l'explication.

Dans ma version excel, la fonction max.si.ens existe. Tu penses que ça donnerait quoi ?

=SI([@Consommation]=MAX.SI.ENS([Consommation];[Charge de la batterie];[@[Charge de la batterie]]);[@Consommation];"")

Pour info, dans un tableau structuré : [@NomColonne] correspond à la cellule de la ligne correspondante, et [NomColonne] à la plage complète.

Je n'arrive pas à transposer la formule suivante sans utiliser un tableau structuré, vois tu une solution ?
Merci d'avance!

SI([Charge de la batterie]=[@[Charge de la batterie]]

Je n'arrive pas à transposer la formule suivante sans utiliser un tableau structuré, vois tu une solution ?
Merci d'avance!

SI([Charge de la batterie]=[@[Charge de la batterie]]

Imaginons que charge de la batterie correspond à la colonne A, et que ta formule se trouve en ligne 2 :

=SI($A$2:$A$100=$A2;...

Attention, c'est une formule matricielle (à valider avec CTRL + MAJ + ENTREE). Mais si tu disposes d'une fonction MAX.SI.ENS, cette syntaxe est inutile... Utilise plutôt la syntaxe proposée dans mon post précédent.

Ok, merci beaucoup pour les explications!

Mais j'ai l'impression que le tableau structuré ralentit mon fichier .. quelle serait la transposition de la formule suivante sans utiliser de tableau structuré ?

Merci d'avance,

=SI([@Consommation]=MAX.SI.ENS([Consommation];[Charge de la batterie];[@[Charge de la batterie]]);[@Consommation];"")

Ok, merci beaucoup pour les explications!

Mais j'ai l'impression que le tableau structuré ralentit mon fichier .. quelle serait la transposition de la formule suivante sans utiliser de tableau structuré ?

Merci d'avance,

=SI([@Consommation]=MAX.SI.ENS([Consommation];[Charge de la batterie];[@[Charge de la batterie]]);[@Consommation];"")

Je ne vois aucune raison pour que le tableau structuré ralentisse la formule. La formule, qu'elle repose sur un tableau structuré ou non sera lente à exécuter si elle concerne une plage conséquente. Si vous souhaitez un gain de performance, utilisez un tableau croisé dynamique.

Par ailleurs, je pense vous avoir fourni tous les éléments nécessaires pour que vous puissiez faire cette modification par vous même. En ce qui me concerne, je ne passerais pas de temps supplémentaire sur cette même demande.

Rechercher des sujets similaires à "decalage plage maximum"