compter combien de fois a la suite

  • Initiateur de la discussion Alias R
  • Date de début
A

Alias R

Guest
Bonjour

Je cherche depuis quelques temps une formule excel mais je ne trouve pas ... j'ai pas mal appris sur ce site alors je me dis que peut etre pourriez vous m'aider ..

Voilà

alors j'ai une colonne contenant uniquement des valeurs 1 et 0 genre :

0
0
0
0
1
1
0
1
1
1
1
0
1
0
1
0
0
0
1
1

.... et je souhaiterai en fait calculer un écart

c'est à dire le nombre de fois maximum où il y a eu un 0 à la suite avant de rencontrer un 1. Et ensuite aussi le nombre de fois ou il n'y a eu qu'un seul 0 avant de rencontrer un 1 .... et ainsi de suite pour le nombre de fois qu'il y a eu 1 ou 2 ou 3 ou 4 ou .... etc ... un 0 à la suite ..

j'espere que vous comprenez ce que je faire .... sinon je suis à votre disposition pour toutes questions ...

autant c'est facile à faire et à noter manuellement quand on a une trentaine de 0 ou de 1 mais dans mon cas la colonne contient pour le moment 2500 valeurs et grandit de jour en jour .....

La seule chose simple que j'arrive a calculer pour le moment est le nombre de 0 et le nombre de 1 contenu dans cette colonne ... c'est déjà pas si mal mais j'ai besoin de calculer l'ecart et ca j'y arrive pas ...

merci de m'avoir lu et merci d'avance aux personnes qui sauront m'aider !

Alias R

aliasr_54@hotmail.com
 
P

Pierre

Guest
Bonsoir Alais R
Bonsoir le forum

Voici un fichier attaché qui compte dans la colonne A les 0 et les 1.

J'espère que cela te conviendra.

Bonne soirée

Pierre
 

Pièces jointes

  • Alias.zip
    0 bytes · Affichages: 38
P

Pierre

Guest
Bon ben les fichiers attachés sont toujours en rade.
Je te copie donc le code à mettre derrière une bouton de commande

Private Sub CommandButton1_Click()
Dim zone As Range
Dim cpt As Byte
Dim cell As Range

Set zone = Range("a:a")
cpt = 0
For Each cell In zone
If cell.Value = "" Then Exit Sub
If cell.Value = 0 Then
cpt = cpt + 1
If cell.Offset(1, 0).Value = 0 Then
GoTo suivant
Else
cell.Offset(0, 1) = cpt
cpt = 0
End If
Else
If cell.Value = 1 Then
cpt = cpt + 1
If cell.Offset(1, 0).Value = 1 Then
GoTo suivant
Else
cell.Offset(0, 1) = cpt
cpt = 0
End If
End If
End If

suivant:
Next


End Sub


BS
Pierre
 
L

Lord Nelson

Guest
Salut R,

A question rigolote, réponse fonction marrante :

Function NBConsec(Cible, Plage As Range) As Long
Dim NBCible As Long, NBTemp As Long
Dim CL As Range
For Each CL In Plage
If CL = Cible Then
NBTemp = NBTemp + 1
If NBTemp > NBCible Then NBCible = NBTemp
Else
NBTemp = 0
End If
Next
NBConsec = NBCible
End Function

Cette fonction "maison" est à placer dans un module.
Elle s'utilise comme ceci dans Excel :
=nbconsec(0;A1:A20)
(pour trouver la plus grande série de 0 entre A1 et A20)
ou bien :
=nbconsec(C3;A1:A20)
(pour trouver la plus grande série de ce qu'il y a dans C3
ou encore :
=nbconsec("abc";A1:A20)
(pour trouver la plus longue répétition du texte "abc")

A toi de jouer !

A+
Horatio
 
P

PhiBou

Guest
Bonjour le fil, le Forum

SI(ET("J'ai tout compris";"Le fichier joint passe");"tu auras une réponse sans VBA";"Autant pour moi")

Bonne journée

PhiBou
 

Pièces jointes

  • AliasR.zip
    0 bytes · Affichages: 41

Discussions similaires

Réponses
4
Affichages
322

Statistiques des forums

Discussions
312 305
Messages
2 087 089
Membres
103 464
dernier inscrit
Inconnu2