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.
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.
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 ?
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.
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é
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
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 ?