[VBA Excel]Compter à l'interieur d'une chaine

Compter à l'interieur d'une chaine [VBA Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 25-10-2007 à 09:44:49    

Bonjour,
 
j'ai un petit soucis.
J'ai une longue chaine de caracteres (alphanumeriques) et je dois compter le nombre de certains caracteres precis.
Est-ce-qu'il y a une fonction directe qui fait ca ? ou est-ce-que je dois passer par des macros (aide bienvenue) ?.
 
Exemple:
Ma cellule contient:  
1161071111611111199619996909691110000AAAAAAAAAAAAAAAAAAAAAAAAAAA191919109091591111111111919199
Et je dois trouver le nombre de 1 et le nombre de 2 à l'interieur de celle ci.


Message édité par Fami le 25-10-2007 à 09:45:00
Reply

Marsh Posté le 25-10-2007 à 09:44:49   

Reply

Marsh Posté le 25-10-2007 à 10:01:59    

À ma connaissance aucune fonction ne fait ça directement.
Mais ça peut facilement se faire.
Si tu sais quels caractères sont à dénombrer, il suffit, pour chacun d'eux, de faire :

nb = Len(chaine) - Len(Replace(chaine, car_a_denombrer, "" ))

Reply

Marsh Posté le 26-10-2007 à 00:38:49    

si tu met tes caracteres sous excel je sais comment faire mais sinon non dsl

Reply

Marsh Posté le 26-10-2007 à 00:41:32    

ah mais comment tu fais pour avoir tout ça dans une meme cellulle? separe chaque caractere pour une cellule. J'ai appris a faire ça la semaine dernier, je parle de lalgo et du vba pour compter ça, sauf que nous cetait les bases de l'adn:'(

Reply

Marsh Posté le 26-10-2007 à 08:10:33    

Bonjour,
Ce bout de code te permet de compter le nombre de fois où "ValACompter" se trouve dans ta chaine "MaVal"
    MaVal = Cells(ValLigne,ValColonne)
    MonRes = Split(MaVal, ValACompter)
    MsgBox UBound(MonRes)

Reply

Marsh Posté le 26-10-2007 à 15:39:56    

Public Function nbOccurences(car As String, chaine As String) As Integer
Dim i As Integer, res As Integer
    res = 0
    For i = 1 To Len(chaine)
        If Mid(chaine, i, 1) = car Then
            res = res + 1
        End If
    Next
    nbOccurences = res
End Function
 
cadeau !
 
à insérer dans un module, tu pourras appeller directement la fonction depuis une feuille Excel
 
(par exemple, en B1 : =nbOccurences("a";A1) )

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed