CompterDansUnMotLes"A"

M

Moa

Guest
Voilà,

J'aimerais pouvoir compter le nombre de A ou E, qu'il y a dans un mot, dans ma cellule A1 et afficher le résultat dans la cellule A2.

Tout simplement.

En fait, j'ai cherché à adapter la formule =Nb.Si bla bla, que l'on applique pour plusieurs cellules, mais cela ne marche pas.

Si qqn à une idée

Merci @ +

Moa
 
T

Ti

Guest
ben moi quand je sèche j'écris une macro, alors en voilà une :

Function NbOccurences(Cel As Range, Car As String, _
Optional Casse As Boolean = False) As Long
Dim Ofs As Long, Critere as Integer
If Casse Then Critere = vbBinaryCompare Else Critere = vbTextCompare

Do
Ofs = InStr(Ofs + 1, CStr(Cel.Value), Car, Critere)
If Ofs > 0 Then NbOccurences = NbOccurences + 1
Loop Until Ofs = 0
End Function

pour l'utiliser, tu la mets dans un module, puis tu peux l'appeler directement dans ta feuille.
Par exemple, en A2 tu écris

= nboccurences(A1;"a";FAUX)

le dernier argument n'est pas obligatoire, il dit s'il faut respecter les majuscules (vrai) ou non (faux)
 
T

Thierry

Guest
Sacré Ti !! toujours plus rapide !! surtout sur les Functions !!

Moi j'ai cherché (pour Moa) dans les formules normales.. (Cherche, NbCar etc etc... en tout cas il n'y a pas de NB.si pour faire çà !!)
Et puis j'ai rien trouvé...

Puis je me suis lancé dans la création d'une Function... J'ai pas géré la "Casse" comme a fait Ti !! mais bon çà le fait ...

çà donne çà :
Function MOA(Cellule As Range, Lettre As String)
Dim cel As Range
For Each cel In Cellule
For i = 1 To Len(cel)
If Mid(cel, i, 1) = Lettre Then MOA = MOA + 1
Next
Next
End Function

et comme Moa cherche "A" et "E" il pourra taper en "A2" :

=MOA(A1;"A")+MOA(A1;"E")

(et vi une formule à ton nom !! lol)

on peut chercher aussi sur plusieurs cellules (si y a besoin)
=MOA(A1:A10;"A")+MOA(A1:A10;"E")

Bon enfin c'était juste un exercice, suis nul en function !

Bonne nuit
@+Thierry
 
Q

Quaisako

Guest
Bonsoir MOA, bonsoir Ti,

En A2, tu mets : =CHERCHE("e";A1;1), et normalement tu dois avoir le

nombre de "e" qu'il y a dans le mot en A1.

Le 1 indique que la recherche doit commencer à partir du premier caractère

en partant de la gauche.

Quaisako
 
T

Thierry

Guest
Et Non Quasako !!!

CHERCHE t'indique la POSITION de la lettre dans la string ET PAS son Occurence (je viens de chercher pedant + d'une heure !! lol)

par exemple :

A1 "QUASAKO"

B1 =Cherche("A";A1;1) retournera 3 et pas 2 !!!

Bonne Nuit
@+Thierry
 
Q

Quaisako

Guest
Bonjour à tout le monde,

En fichier joint une petite formule, qui a priori répondra à ta question.

Enfin, j'espère.

Ca à l'air de fonctionner, mais je ne la trouve pas très pratique.

Si tu l'améliores, fais un signe.


Bon samedi Quaisako
 

Pièces jointes

  • Quaisko_MOA.xls
    14.5 KB · Affichages: 50
  • Quaisko_MOA.xls
    14.5 KB · Affichages: 53
  • Quaisko_MOA.xls
    14.5 KB · Affichages: 58
Q

Quaisako

Guest
Re bonjour Moa,

Désolé, je ne savais pas si tu avais résolu ton problème.

Tu l'as fais en VBA?

Je viens d'améliorer la formule précédente.

Ca servira peût-être à qq'un d'autre. (Fichier joint).

Salut Quaisako
 

Pièces jointes

  • Quaisko_MOA.xls
    15.5 KB · Affichages: 51
  • Quaisko_MOA.xls
    15.5 KB · Affichages: 57
  • Quaisko_MOA.xls
    15.5 KB · Affichages: 54
M

Moa

Guest
Je viens de tester ta 2è solution, cela marche très bien aussi.

En ce qui concerne le vba, c'est très bien, mais comme, je vais donner mon projet, à plusieurs personnes, au cas où, ce sera plus facile de s'y retrouver, avec une formule.

Ceci dit, le code Vba de Ti, est très intéressant, car il ne tiens pas compte des majuscules ou minuscules, ce qui a l'avantage, en cas d'erreur de saisie, de l'utilisateur, de compter quand-même juste.

(Car en théorie, dans ma cellule, il ne doit y avoir que des majuscules).

Je te remercie encore, de t'être creusé la tête pour moi.

@ +

Moa
 

Discussions similaires

Réponses
6
Affichages
415

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof