compter combien de fois a la suite

  • Initiateur de la discussion Initiateur de la discussion Alias R
  • 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 !

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
 
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
 
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
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
581
Réponses
5
Affichages
712
Réponses
14
Affichages
477
Réponses
7
Affichages
372
Retour