Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Compteur de résultats consécutifs

  • Initiateur de la discussion Initiateur de la discussion pingouinal
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pingouinal

XLDnaute Occasionnel
Bonjour à tous,

Tout d'abord désolé pour ce titre, je n'ai pas trouvé comment synthétiser ma demande. ^_^'
Voici mon problème : dans la pièce jointe, j'aimerais compter le nombre de fois consécutivement en partant de la dernière ligne où la différence relative (donc en + ou en -) entre la colonne B et la colonne A donne 3 ou plus.

Dans l'exemple attaché, la réponse attendue est 4.
Pour le moment j'y arrive, mais uniquement avec des si imbriqués. Ce n'est donc pas des plus pratique et ça limite le nombre de lignes comptées.

Merci par avance pour votre aide.
 

Pièces jointes

Bonjour Pinguouinal, bonjour le forum,

Une solution VBA :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableu des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim T As Integer 'déclare la variable T (Total)
Dim V As Integer 'déclare la variable V (Valeur)
Dim MV As Integer 'déclare la variable VM (Valeur max)

Set O = Worksheets("Sheet1") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle sur toutes es lignes I du tableau des valeurs TV
    If Abs(CDbl(TV(I, 2)) - CDbl(TV(I, 1))) >= 3 Then 'condition : si la valeur absolue de la différence ente des deux valeurs de la ligne est supérieure ou égale à 3
        T = T + 1 'incrémente T
        If T > 3 Then V = T: If V > VM Then VM = V 'si T est supérieur à 3 définit la valeur V, garde la plus grande valeur de V dans VM
    Else 'sinon
        T = 0 'réinitialise T
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
MsgBox VM 'affiche VM dans un message
End Sub
 
Bonjour le Forum,
Bonjour pingouinal

a tester suivant ton exemple

Code:
=SOMMEPROD((A1:A7-B1:B7>=3)*((A2:A8="")+(A2:A8-B2:B8>=3))*1)

Cordialement

EDIT : Bonjour Robert désolé pour la collision pas rafraichi
 
Dernière édition:
Bonjour Jocelyn,

Pas une collision, bien au contraire, un complément et un choix de plus pour Pingouinal !... Mais je te déteste quand même pour écrire des formules avec autant de facilité...
 
Bonjour Robert, bonjour Jocelyn,

Merci beaucoup pour vos réponses.
La macro marche parfaitement mais j'avoue qu'idéalement une formule serait plus appropriée à la syntaxe et à l'utilisation de mon fichier. Je garde néanmoins cette solution sous le coude et surtout sa logique car elle pourrait m'aider pour d'autres fichiers.

J'ai donc testé la version formule, mais le résultat obtenu est 6. A priori elle compte donc l'ensemble des lignes pour lesquelles la valeur est >=3 et non pas les lignes consécutives.
Selon vous, est-il possible d'ajouter ce critère dans la formule?

D'avance merci
 
Bonjour Dugenou,

Merci pour la proposition. Par contre, j'ai besoin (je me suis sûrement mal exprimé au début, mea culpa) du nombre de fois consécutives en partant de la fin.

Dans mon exemple, il s'agit effectivement du maximum mais c'est un hasard. Si les résultats de la colonne B changent, celui de la formule ne concerne alors pas forcément la dernière série, mais uniquement la plus longue.
 
Merci pour la formule matricielle Jocelyn, mais ce que je voulais dire à Dugenou était justement l'inverse.
Il me faut bien le nombre de valeurs dans la dernière série (en partant de la dernière ligne) et pas la plus longue.
Si il y a possibilité de remplacer le "max" par une sorte de "compteur depuis la dernière ligne", ça serait la formule parfaite pour mon cas.

Merci également pour la formule Dugenou, elle fonctionne mais vu la structure de mon fichier source, il m'est délicat de rajouter une colonne.
 
Bonjour

Merci pour la formule matricielle Jocelyn, mais ce que je voulais dire à Dugenou était justement l'inverse.
Il me faut bien le nombre de valeurs dans la dernière série (en partant de la dernière ligne) et pas la plus longue.

Pour être certain d'avoir de bons résultats, c'est en général plus efficace si on met plusieurs exemples...

@ plus
 
rebonjour CISCO,

En H, je trouve 0 car la série commençant par la dernière ligne n'entre pas dans les critères (différence >=3 ou <=-3 entre H et G).
Comme je cherche à savoir le nombre de fois consécutivement où, en partant de la dernière ligne, la différence relative entre deux colonnes est >=3, si la première différence est <3, alors la série est nulle.
 
Bonjour

Tu peux faire avec
Code:
INDEX(FREQUENCE(SI(A1:A7-B1:B7>=3;LIGNE(A1:A7));SI(A1:A7-B1:B7<3;LIGNE(A1:A7)));NBVAL(FREQUENCE(SI(A1:A7-B1:B7>=3;LIGNE(A1:A7));SI(A1:A7-B1:B7<3;LIGNE(A1:A7)))))
toujours en matriciel, donc à valider avec les touches Ctrl+maj+entrer.

@ plus
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
420
Réponses
12
Affichages
1 K
Réponses
306
Affichages
33 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…