Occurence dans une feuille

  • Initiateur de la discussion Fraille
  • Date de début
F

Fraille

Guest
Bonjour,

J'ai un peu flané sur les différents sujets du forum mais je n'ai pas trouvé la réponse à ma question qui est celle de savoir s'il est possible de compter le nombre d'occurence d'un caractère (par exemple le caractère '$') dans une feuille excel.

Est ce possible ou non?
 

dg62

XLDnaute Barbatruc
Bonjour Fraille


C'est possible, tu dois boucler sur toutes les cellules de la feuille et décompter par cellule le nombre de caractères correspondant à ton critère.

dim cel as range
dim caract as string
dim nbcaract, totalcaract as double
for each cel in selection ' par exemple
chaine=cel.value
nbcaract=0
for i = 1 to len(chaine)
if mid(chaine,i,1)=caract then
nbcaract=nbcaract+1
endif

totalcaract=totalcaract+nbcaract
next

msgbox caract & ' trouvé ' & totalcaract & ' fois'
end sub

macro non testé mais l'esprit y est.
 
S

sousou

Guest
bonjour
Un exemple de fonction à installé dans un module qui compte le nombre d'ocurrence d'une'valeur' dans une zone

Function compte(valeur, zone As Range)
Set maplage = zone
For Each i In maplage
For n = 1 To Len(i)
If Mid(i, n, 1) = valeur Then compte = compte + 1
Next
Next

End Function
 

dg62

XLDnaute Barbatruc
re


testé et corrigé

Sub comptecaract()
Dim cel As Range
Dim caract As String
Dim nbcaract, totalcaract As Double
caract = 'f'
For Each cel In Selection ' par exemple
chaine = cel.Value
nbcaract = 0
For i = 1 To Len(chaine)
If Mid(chaine, i, 1) = caract Then
nbcaract = nbcaract + 1
End If


Next
totalcaract = totalcaract + nbcaract
Next
MsgBox caract & ' trouvé ' & totalcaract & ' fois'
End Sub
 
F

fraille

Guest
lool merci pour le code.

Mais si nous ne travaillons pas sur une selection mais sur une feuille entière dont nous ne connaissons pas la taille, existe t il un moyen d'utiliser cette fonction? Bien que je puisse surdimensionner ma selection (par exemple en prennant un tableau de 65000 cellules), y a til plus efficace?
 

JeanMarie

XLDnaute Barbatruc
Bonjour

Dans une feuille de calcul, tu peux directement utiliser la fonction =NB.SI(Feuil1!1:65536;'*$*'). Attention, cette formule n'est pas à mettre dans la feuille 'Feuil1', sous peine d'avoir un message d'erreur indiquant 'référence circulaire'.

@+Jean-Marie
 

Discussions similaires

Réponses
5
Affichages
196

Statistiques des forums

Discussions
312 613
Messages
2 090 238
Membres
104 463
dernier inscrit
lbo