Compter le nb de valeurs consécutives

njars

XLDnaute Nouveau
Bonjour,

voici mon problème, je ne sais pas quelle formule utiliser pour compter combien il y a de "C" consécutifs.
par exemple sur la plage A1:J1
CCCBCCCCBDD

Merci de me venir en aide.
njars
 

mutzik

XLDnaute Barbatruc
Re : Compter le nb de valeurs consécutives

bonjour Njars,

colles ce code dans un module VBA
Function CL(Lt As String, C As Range) As Integer
Application.Volatile
Dim l As Integer, i, j, total As Integer, index, result
total = 0
index = 0
l = Len(C.Value)
For i = 1 To l
If Mid(C, i, 1) = Lt Then
total = total + 1
Else
If total > result Then result = total
total = 0
End If
Next i
CL = result
End Function

et dans une cellule à droite (ou ailleurs) de ta cellule contenant ton texte, tu mets :
=CL("C";LaCelluleQuiContientMonTexte)
 

Pièces jointes

  • ed.xls
    22 KB · Affichages: 118
  • ed.xls
    22 KB · Affichages: 116
  • ed.xls
    22 KB · Affichages: 121
Dernière édition:

njars

XLDnaute Nouveau
Re : Compter le nb de valeurs consécutives

Merci pour cette réponse rapide, je vais l'essayer tout de suite.

Seulement, je ne pensais pas à une solution VBA mais plutôt à une formule (peut être avec Sommeprod?)

merci
njars
 

njars

XLDnaute Nouveau
Re : Compter le nb de valeurs consécutives

Mutzik,

je viens de regarder ton fichier :
en fait, dans mon exemple, il y a une lettre par cellulle sur la plage A1:J1 et il s'agit de compter le nb de "C" inscrit consécutivement.

ton fichier ne semble pas fonctionner si la dernière lettre de la cellule est un C!

merci quand même.
njars
 

Feutrine

XLDnaute Occasionnel
Re : Compter le nb de valeurs consécutives

Bonjour njars, mutzik, le forum,

njars, dans ton exemple le mot "consécutif" me gêne. Il y a 3 "C" puis une autre lettre, puis 4 "C" et encore des lettres ...

Veux-tu trouver le total 7 ou bien la plus grande série (dans ce cas 4)

Pour le total, la formule est :

=NB.SI(A1:I1;"C")

Amicalement
Feutrine
 

Gael

XLDnaute Barbatruc
Re : Compter le nb de valeurs consécutives

Bonjour Njars, Feutrine, mutzik,

Un essai avec une formule un peu compliquée mais qui a l'air de marcher:

=SOMME(ESTNUM(CHERCHE(REPT(L5;LIGNE(INDIRECT("1:"&NB.SI(A5:K5;L5))));A5&B5&C5&D5&E5&F5&G5&H5&I5&J5&K5;1))*1)

Formule matricielle à saisir avec ctrl-Maj-entrée

Explications:
La lettre à rechercher en L5

NB.SI(A5:K5;L5) est le nombre de fois où la lettre est trouvée (ici 8)

LIGNE(INDIRECT("1:"&NB.SI(A5:K5;L5))) va créer une matrice de 1 à x, x étant le nombre précédent.

REPT(L5... va créer des combinaisons de 1, 2, 3,...8 fois la lettre choisie

Cherche va chercher chaque combinaison dans la chaîne

estnum(...)*1 va génerer une matrice de 1 si la combinaison est trouvée ou 0 sinon.

et la somme des 1 va donner le nombre max de lettre consécutives.

Exemple dans le fichier joint.

@+

Gael
 

Pièces jointes

  • Lettremax.xls
    13.5 KB · Affichages: 126

Christian0258

XLDnaute Accro
Re : Compter le nb de valeurs consécutives

Bonjour Njars, Feutrine, mutzik,Gae

Mutzik, comment modifier ta function pour avoir un résultat identique mais en comptant des "CA" consécutifs et non des "C" ?.

Merci à vous pour vos réponses,

Bien amicalement,

Christian.
 

Gael

XLDnaute Barbatruc
Re : Compter le nb de valeurs consécutives

Bonjour Jean-Marie, bonjour à tous,

Super ta formule Jean-Marie.
J'ai un peu simplifié la mienne en supprimant le NB.SI que j'ai remplacé par le nombre total de cellules mais elle sera toujours plus lourde du fait de la création d'une chaîne de caractères à partir des cellules. En utilisant les macros complémentaires Morefun, on peut simplifier un peu avec un MCONCAT mais ça reste moins astucieux.

Ci-joint un exemple avec les 2 formules.

Christian, les formules fonctionnent de la même façon pour une lettre ou une chaîne de caractères, tu peux donc rechercher "CA" au lieu de "C".

@+

Gael
 

Pièces jointes

  • Lettremax_V2.xls
    13.5 KB · Affichages: 131

Discussions similaires

Statistiques des forums

Discussions
312 765
Messages
2 091 883
Membres
105 084
dernier inscrit
lca.pertus