Calculer combien de fois une lettre apparait

gb5978

XLDnaute Nouveau
Bonjour,
Je souhaite créer une feuille dans laquelle je ferai apparaître un code perso à base de lettres. Le but serait de calculer automatiquement en bout de ligne, le nombre de fois où apparait chaque lettre dans les cellules qui composent cette ligne.
Donc par exemple, en bout de ligne, j'aurai une colonne s'intitulant "Total A" dans laquelle je veux voir apparaître le nombre de fois où la lettre A apparaît dans la ligne concernée ; puis une colonne s'intitulant "Total C" dans laquelle je veux voir apparaître le nombre de fois où la lettre C apparaît...
(NB : je ne sais pas si c'est important de le préciser mais il est possible que je mette parfois plusieurs fois la lettre C dans la même cellule)

J'espère m'être expliqué clairement...
Merci pour votre aide.
 

Minick

XLDnaute Impliqué
Re : Calculer combien de fois une lettre apparait

Salut,

Avec une petite fonction perso par exemple:
a placer dans un module standard:

Code:
Option Explicit

Function CompteOccurrence(Plage As Range, Chaine As String) As Integer
    Dim Cellule As Range
    Dim Total As Integer, Position As Integer
    
    Application.Volatile
    For Each Cellule In Plage
        Position = 1
        Do
            Position = InStr(Position, Cellule.Value, Chaine)
            If Position <> 0 Then
                Total = Total + 1
                Position = Position + Len(Chaine)
            End If
        Loop While Position <> 0
    Next Cellule
    
    CompteOccurrence = Total
End Function

Pour l'utiliser dans une cellule =CompteOccurrence(LaPlage;"LaChaine")

Attention respecte la casse et on peut compter une chaine ou 1 caractere.
 

gb5978

XLDnaute Nouveau
Re : Calculer combien de fois une lettre apparait

Merci pour ta réponse si rapide.
Par contre je ne maîtrise pas encore ce genre de choses (fonctions...).
Pourrais-tu m'expliquer ce que je dois taper dans ma cellule en bout de ligne (celle où je veux voir apparaître le total) ;
quand tu dis "la plage", est-ce que ça correspond à cellule B2 jusqu'à B12 par exemple ?
Et ce que tu appelles "la chaîne" ça serait quoi ?

Salut,

Avec une petite fonction perso par exemple:
a placer dans un module standard:

Code:
Option Explicit

Function CompteOccurrence(Plage As Range, Chaine As String) As Integer
    Dim Cellule As Range
    Dim Total As Integer, Position As Integer
    
    Application.Volatile
    For Each Cellule In Plage
        Position = 1
        Do
            Position = InStr(Position, Cellule.Value, Chaine)
            If Position <> 0 Then
                Total = Total + 1
                Position = Position + Len(Chaine)
            End If
        Loop While Position <> 0
    Next Cellule
    
    CompteOccurrence = Total
End Function

Pour l'utiliser dans une cellule =CompteOccurrence(LaPlage;"LaChaine")

Attention respecte la casse et on peut compter une chaine ou 1 caractere.
 

Minick

XLDnaute Impliqué
Re : Calculer combien de fois une lettre apparait

re,

tu tapes ALT + F11 pour ouvrir l'editeur VBE
Ensuite Menu Insertion / Module
et tu copies la fonction que j'ai jointe.
tu peux fermer vbe.

plage c'est bien ca : B2:B12
et chaine c'est le caractere a compter (ou la chaine)

Pour compter les A en B2:B12 par exemple:
=CompteOccurrence(B2:B12;"A")
 

gb5978

XLDnaute Nouveau
Re : Calculer combien de fois une lettre apparait

ok, je devrai m'en sortir.
Je te remercie et te tiens au courant


re,

tu tapes ALT + F11 pour ouvrir l'editeur VBE
Ensuite Menu Insertion / Module
et tu copies la fonction que j'ai jointe.
tu peux fermer vbe.

plage c'est bien ca : B2:B12
et chaine c'est le caractere a compter (ou la chaine)

Pour compter les A en B2:B12 par exemple:
=CompteOccurrence(B2:B12;"A")
 

SubEndSub

XLDnaute Occasionnel
Re : Calculer combien de fois une lettre apparait

Bonjour chez vous



En utilisant une formule

Code:
=SOMMEPROD(NBCAR((A1:D1))-NBCAR(SUBSTITUE((A1:D1);E1;"")))

avec dans cet exemple , la lettre à compter en E1, et les cellules contenant cette lettre en A1 : D1.
 
Dernière édition:

ghu

XLDnaute Nouveau
Re : Calculer combien de fois une lettre apparait

Une autre astuce:

Code:
=(NBCAR($A$1&$B$1&$C$1)-NBCAR(SUBSTITUE($A$1&$B$1&$C$1;"a";"")))

L'idée c'est de compter combien de caractères composent tes chaines et tu remplaces la valeur recherchée (a, b , c, d...) et tu soustraits les caractères restants.

Le pb c'est que je ne sais pas combien tu as de colonne mais ça peut vite devenir compliqué...

A++

edit : et du coup la formule de SubEndSub enlève le pb des formules à rallonge que j'avais proposé ;)
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Calculer combien de fois une lettre apparait

Bonjour gb5978, salut Minick,

Une solution par formules pour compter le nombre de "A" dans la plage A1:H1 :

- quelle que soit la casse :

Code:
=SOMMEPROD(1*(STXT(A1:H1;LIGNE($1:$100);1)="A"))

- en respectant la casse :

Code:
=SOMMEPROD(1*EXACT(STXT(A1:H1;LIGNE($1:$100);1);"A"))

On suppose qu'il n'y a pas plus de 100 caractères dans une cellule, mais ajuster ce nombre si nécessaire.

Edit : salut aussi à SubEndSub et ghu

A+
 
Dernière édition:

gb5978

XLDnaute Nouveau
Re : Calculer combien de fois une lettre apparait

Désolé pour les doublons mais ça buggait au moment de l'envoi de ma réponse...
Merci pour votre aide, ça marche nickel, des heures et des heures de gagnées !
Je vais sauvegarder précieusement ces formules.
Merci
 

gb5978

XLDnaute Nouveau
Re : Calculer combien de fois une lettre apparait

Re bonjour,
Je reviens à vous car le but est d'utiliser tout ça sur mon pocket pc mais pocket excel ne gère pas les macros ni sommeprod.
Auriez-vous une idée pour résoudre ce pb ?
 

job75

XLDnaute Barbatruc
Re : Calculer combien de fois une lettre apparait

Bonjour,

Evidemment, si le "Excel" du pocket pc ne sait rien faire... ce n'est pas Excel.

Mais peut-être est-ce une version anglaise, dans ce cas utiliser les formules :

Code:
=SUMPRODUCT(LEN((A1:D1))-LEN(SUBSTITUTE((A1:D1),E1,"")))

=SUMPRODUCT(1*(MID(A1:H1,ROW($1:$100),1)="A"))

=SUMPRODUCT(1*EXACT(MID(A1:H1,ROW($1:$100),1),"A"))

A+
 

Discussions similaires

Réponses
5
Affichages
138
  • Question
XL pour MAC mise en forme
Réponses
2
Affichages
272

Statistiques des forums

Discussions
312 839
Messages
2 092 700
Membres
105 511
dernier inscrit
karimdauphins