XL 2019 Countifs si les 4 premières lettres = "Toto"

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour,
Je ne comprends pas pourquoio cela ne marche pas.
Application.WorksheetFunction.CountIfs(Left(.Columns(1), 4), "Toto")
Un exemple :
TotoPlus 12
Tata 28
TotoMoins 6

Résultat attendu = 2
Bonne soirée
 

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour Phil69970,
J'ai suivi le lien proposé mais ne trouve pas de reference à un comptage dune chaine de caractère chiffrée.
1718380304552.png

L'exemple ci dessus est interessant mais reste en texte. Ca ne marche pas avec des nombres.
Peut etre faut il transformer la colonne de chiffre en texte en amont?
Merci
 

Gégé-45550

XLDnaute Accro
La formule suivante ne fonctione pas :
Application.WorksheetFunction.CountIfs(Feuil4.Columns(1), "2325760????") donne 0
Colonne 1 :
232576045
232576177
232576079
132576033
Bonjour,
Elle fonctionnera à condition de sélectionner tous les éléments de la colonne 1 et de changer leur format en "Texte".
Sinon, par défaut, Excel les considère comme des nombres et ça ne marche pas.
C'est ce que se tuent à essayer de vous expliquer tous ;)les excellents contributeurs de ce post depuis le début !
 

ALS35

XLDnaute Occasionnel
Bonjour à tous,
La fonction NB.SI.ENS n'autorise pas les plages matricielles, si tu mets gauche(A1:A10). Si tu ne veux pas changer ta plage de nombre en texte comme déjà dit, il te faut passer par sommeprod, par exemple :
VB:
=SOMMEPROD(N(GAUCHE(A1:A10;3)="123"))
Cordialement
 

jurassic pork

XLDnaute Nouveau
Hello,
Pour le fun une fonction personnalisée à base d'expressions régulières à mettre dans un module VBA .
VB:
Public Function CompterVal(plage As Range, str, _
       Optional CaseSensitive As Boolean = False, _
       Optional Debut As Boolean = False, _
       Optional Fin As Boolean = False) As Integer
Dim data, Regex As Object, matches As Object
CompterVal = 0
data = "|" & Join(Application.Transpose(plage.Value), "|") & "|"
Set Regex = CreateObject("VBScript.RegExp")
Regex.Pattern = str
Regex.Global = True
Regex.IgnoreCase = Not CaseSensitive
If Debut Then Regex.Pattern = "\|" & str
If Fin Then Regex.Pattern = str & "\|"
Set matches = Regex.Execute(data)
CompterVal = matches.Count
Set matches = Nothing: Set Regex = Nothing
End Function
plage correspond à la plage sur laquelle s'effectue le comptage (doit être une seule colonne)
CaseSensitive permet de dire si le comptage est sensible à la casse. (optionnel)
Debut permet de dire si la valeur recherchée doit être au début des cellules. (optionnel)
Fin permet de dire si la valeur recherchée doit être à la fin des cellules. (optionnel)

A noter que l'on exécute le regex qu'une seule fois par formule et que toutes les données à traiter sont rapatriées en une seule instruction sans boucle.

CompterVal.gif


Ami calmant, J.P
 

Statistiques des forums

Discussions
312 932
Messages
2 093 724
Membres
105 798
dernier inscrit
Sly67