Comment compter des lettres a l'intérieur de cellules faisant parti d'une plages?

madtnt09

XLDnaute Junior
Bonjour et bonne année à tous santé et succès!

j'ai essayé avec la formule nb, nb.si et nb.si.ens. et ce sans succès avec la fonction droite mais le problème est que le résultat est toujours le total des cellules de la plages qui contiennent un seul caractère.

j'aimerais à l'intérieur de ma plage pouvoir additionner le total des "q" pour chaque cellule.
une seule ou plusieurs lettre peuvent être à l'intérieur de chaque cellule.

en attachement un exemple très simple.

J'ai fait d'autre calcule, mais toujours avec le même résultat

Merci de bien vouloir m'aider.
 

Pièces jointes

  • compte des Q.xlsx
    11.7 KB · Affichages: 47
  • compte des Q.xlsx
    11.7 KB · Affichages: 42
  • compte des Q.xlsx
    11.7 KB · Affichages: 41

pierrejean

XLDnaute Barbatruc
Re : Comment compter des lettres a l'intérieur de cellules faisant parti d'une plages

Bonjour madtn09

Une solution pour compter les Q (limite: 5 Q par cellule mais peut facilement etre modifiée pour +)
 

Pièces jointes

  • compte des Q.xlsx
    11.5 KB · Affichages: 34
  • compte des Q.xlsx
    11.5 KB · Affichages: 35
  • compte des Q.xlsx
    11.5 KB · Affichages: 34

R@chid

XLDnaute Barbatruc
Re : Comment compter des lettres a l'intérieur de cellules faisant parti d'une plages

Bonjour @ tous,
Salut pierrejean :),

Si tes cellules ne contiennent que les "q",
Code:
=SOMMEPROD(NBCAR(D4:I4))

Si tes cellules contiennent autres mots et lettres que "q",
Code:
=SOMMEPROD(NBCAR(D4:I4)-NBCAR(SUBSTITUE(D4:I4;"q";)))

@ + +
 

madtnt09

XLDnaute Junior
Re : Comment compter des lettres a l'intérieur de cellules faisant parti d'une plages

Merci 'a vous deux par contre si,

jintegre dautre lettre a linterieur de certaine cellule comme de "m" ou des "L" la formule serait tel differente.

C<est a dire que dans une cellule je peux avoir une combinaison comme qllmq est-ce que la formule comptera chacune des lettres separement.

donc:
=sommeprod(nbcar(d4:i4)-nbcar(substitute(d4:i4,"q",)))
la celluele adjacente:
=sommeprod(nbcar(d4:i4)-nbcar(substitute(d4:i4,"m",)))
La cellule adjacent:
=sommeprod(nbcar(d4:i4)-nbcar(substitute(d4:i4,"L",)))

Si j<ai bien compris!!
 

job75

XLDnaute Barbatruc
Re : Comment compter des lettres a l'intérieur de cellules faisant parti d'une plages

Bonjour à tous,

Pour compléter la solution de R@chid, on peut compter chaque lettre.

Formule matricielle en K4, à valider par Ctrl+Maj+Entrée :

Code:
=CAR(PETITE.VALEUR(SI(NB.SI(D$4:I$4;"*"&CAR(LIGNE($97:$122))&"*");LIGNE($97:$122));LIGNES($4:4)))
Formule normale en L4 :

Code:
=SOMMEPROD(NBCAR(D$4:I$4)-NBCAR(SUBSTITUE(MINUSCULE(D$4:I$4);K4;)))
Tirer K4:L4 vers le bas et s'arrêter quand on rencontre une valeur d'erreur.

NB.SI ignore la casse, il faut MINUSCULE dans la 2ème formule.

Fichier joint.

A+
 

Pièces jointes

  • compte les lettres(1).xls
    34.5 KB · Affichages: 44

madtnt09

XLDnaute Junior
Re : Comment compter des lettres a l'intérieur de cellules faisant parti d'une plages

Merci a vous tous la fonction de Rachid fonctionne tres bien.

Job75 merci une autre solution un peu plus complexe, mais tres utile merci.

Pierre jean je ne suis pas tout a fait familier avec VBA, mais j<ai compris lastuce derriere le raisonnement.
 

job75

XLDnaute Barbatruc
Re : Comment compter des lettres a l'intérieur de cellules faisant parti d'une plages

Bonjour madtnt09, pierrejean, R@chid,

Si l'on veut respecter la casse, le plus simple est de lister les lettres par cette fonction VBA :

Code:
Function Lettre$(r As Range, ordre)
Dim d As Object, i, a
Set d = CreateObject("Scripting.Dictionary")
For Each r In r
  For i = 1 To Len(r)
    d(Mid(r, i, 1)) = ""
  Next
Next
If ordre > d.Count Then Exit Function
a = d.keys
Call tri(a, 0, UBound(a))
Lettre = a(ordre - 1)
End Function

Sub tri(a, gauc, droi)          ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
Fichier joint.

A+
 

Pièces jointes

  • compte les lettres avec la casse(1).xls
    46.5 KB · Affichages: 25
Dernière édition:

Discussions similaires

Réponses
46
Affichages
807

Statistiques des forums

Discussions
312 113
Messages
2 085 430
Membres
102 889
dernier inscrit
monsef JABBOUR