Bonjour,
Une proposition est de définir une fonction personnalisée .
Dans un module, écrire le code suivant :
1 2 3 4 5 6 7
| Function nbseq(macel As Range, montexte As String) As Long
Dim refchaine As String, compteur As Long
refchaine = macel.Value
For compteur = 1 To Len(refchaine) + 1 - Len(montexte)
If Mid(refchaine, compteur, Len(montexte)) = montexte Then nbseq = nbseq + 1
Next compteur
End Function |
Avec la chaine "AABBABAAAA" en A1, on décomptera le nombre de séquences "AA" contenues dans la cellule A1 avec la formule :
Si l'on ne veut pas de VBA, on peut s'en sortir avec une ligne de travail supplémentaire sur la même feuille ou une autre feuille lorsque la séquence de texte recherchée comprend 2 caractères.
La chaine "AABBABAAAA" étant en Feuil1!A1, écrire en feuille 2 en A1 la formule :
=STXT(Feuil1!$A$1;COLONNE();1)
Recopier cette formule vers la droite en ligne 1 de la feuille 2.
La formule (à écrire en feuille 1 ou 2)
=SOMMEPROD((DECALER(Feuil2!A1;;;1;NBCAR(Feuil1!A1)-1)="A")*(DECALER(Feuil2!B1;;;1;NBCAR(Feuil1!A1)-1)="A"))
donne la réponse attendue
Cordialement
Claude
Partager