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

Compter une série de nombres consécutifs

quickfuture

XLDnaute Junior
Bonsoir à tous

Dans une de mes colonnes disont colonne A, contient une centaine de nombres qui peuvent être soit positifs ou négatifs. Exemple :

22
-12
73
122
21
-13
-112
-4
-27
-128
32
185

Dans ma colonne B j'aimerais connaitre quelle a été la plus grande série de nombres positifs consécutifs ?
Dans ma colonne C la plus grande série de nombres négatifs consécutifs. Dans l'exemple, pour les nombres négatifs, c'est de l'ordre de 5.

Merci d'avance
 

l.et.lilou

XLDnaute Junior
Re : Compter une série de nombres consécutifs

Salut

Il faut que tu utilises la formule =Nb.si

exemple : =NB.si(dans la plage que tu utilises ('A1 à A100');ta condition : <0)

Espérant avoir répondu a tes attentes
 

job75

XLDnaute Barbatruc
Re : Compter une série de nombres consécutifs

Bonsoir quickfuture, l.et.lilou,

On peut utiliser ces fonctions VBA :

Code:
Function MAXPOSITIF&(Liste As Range)
Dim n&, i&, c&, j&
n = Liste.Count
For i = 1 To n
  c = 0
  For j = i To n
    If Liste(j) > 0 Then c = c + 1: i = j Else Exit For
  Next
  MAXPOSITIF = Application.Max(c, MAXPOSITIF)
Next
End Function

Function MAXNEGATIF&(Liste As Range)
Dim n&, i&, c&, j&
n = Liste.Count
For i = 1 To n
  c = 0
  For j = i To n
    If Liste(j) < 0 Then c = c + 1: i = j Else Exit For
  Next
  MAXNEGATIF = Application.Max(c, MAXNEGATIF)
Next
End Function
Fichier joint.

A+
 

Pièces jointes

  • Max série(1).xls
    34.5 KB · Affichages: 59
Dernière édition:

quickfuture

XLDnaute Junior
Re : Compter une série de nombres consécutifs

Bonsoir Lilou,

Merci pour la réponse, cependant j'ai pas tout compris, pour la plage je sélectionne les nombres OK, mais pour la conditions je m'ai quoi, j'ai pas tous saisi.

Merci
 

R@chid

XLDnaute Barbatruc
Re : Compter une série de nombres consécutifs

Bonsoir @ tous,
Un essai par formules matricielles @ valider par Ctrl+Maj+Entree
@ + +
 

Pièces jointes

  • quickfuture.xlsx
    9.7 KB · Affichages: 101
  • quickfuture.xlsx
    9.7 KB · Affichages: 109
  • quickfuture.xlsx
    9.7 KB · Affichages: 115

quickfuture

XLDnaute Junior
Re : Compter une série de nombres consécutifs

Merci à tous,

Je me suis peut etre mal exprimé, donc je post le fichier de R@chid, avec se que je souhaite pour etre plus clair, merci de votre patience
 

Pièces jointes

  • quickfuture.xlsx
    12.2 KB · Affichages: 100
  • quickfuture.xlsx
    12.2 KB · Affichages: 95
  • quickfuture.xlsx
    12.2 KB · Affichages: 89

eriiic

XLDnaute Barbatruc
Re : Compter une série de nombres consécutifs

Bonsoir,

E2: =SI(A2>0;SOMME(E1;1);0)
F2: =SI(A2<0;SOMME(F1;1);0)
I7: =MAX(F:F)
J7: =MAX(E:E)
eric
 

Pièces jointes

  • Classeur3.xlsx
    12.6 KB · Affichages: 82
  • Classeur3.xlsx
    12.6 KB · Affichages: 96
  • Classeur3.xlsx
    12.6 KB · Affichages: 100

R@chid

XLDnaute Barbatruc
Re : Compter une série de nombres consécutifs

Bonsoir @ tous,
Salut eriiic..
Les formules que je t'ai donné sur le fichier en Post#6 , n'ont pas besoin de les incrémenter vers le bas, elles vont te donner le résultat final 6 et 7 sans aucune colonne intermédiaire.
@ + +
 

R@chid

XLDnaute Barbatruc
Re : Compter une série de nombres consécutifs

Bonsoir eriiic,
On s'est mal compris...
Les formules que je t'ai donné sur le fichier en Post#6 , n'ont pas besoin de les incrémenter vers le bas, elles vont te donner le résultat final 6 et 7 sans aucune colonne intermédiaire.
Par ce msgs je m'adresse à quickfuture car j'ai vu sur son dernier fichier du Post#10 qu'il tire mes 2 formules vers le bas, par-contre j'ai aimé ton intervention...
@ + +
 

job75

XLDnaute Barbatruc
Re : Compter une série de nombres consécutifs

Bonjour à tous,

Je repasse par là avec un autre code pour les fonctions VBA :

Code:
Function MAXPOSITIF&(colonne As Range)
Dim t, i&
t = colonne.Resize(Application.Match(9 ^ 9, colonne))
t(1, 1) = -(Val(t(1, 1)) > 0)
For i = 2 To UBound(t)
  t(i, 1) = -(Val(t(i, 1)) > 0) * (Val(t(i - 1, 1)) + 1)
Next
MAXPOSITIF = Application.Max(t)
End Function

Function MAXNEGATIF&(colonne As Range)
Dim t, i&
t = colonne.Resize(Application.Match(9 ^ 9, colonne))
t(1, 1) = -(Val(t(1, 1)) < 0)
For i = 2 To UBound(t)
  t(i, 1) = -(Val(t(i, 1)) < 0) * (Val(t(i - 1, 1)) + 1)
Next
MAXNEGATIF = Application.Max(t)
End Function
Fichier (2).

A+
 

Pièces jointes

  • Max série(2).xls
    36 KB · Affichages: 59

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…