Pb avec countif vba excel

Fermé
pttvtt Messages postés 2 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 24 février 2010 - 24 févr. 2010 à 19:59
 pttvtt - 26 févr. 2010 à 21:27
Bonjour,

je rencontre un pb avec la fonction countif:
telle quel, cette fonction ne compte que les cellules strictement identiques au terme recherché
je souhaiterais qu'elle compte également les cellules comprenant le terme recherché et sans tenir compte des majuscules/minuscules

voici mon code actuel:

desti = TextBox1.Value

TextBox7.Value = Application.WorksheetFunction.CountIf(Range("a1:e2000"), desti)

MsgBox " La destination " & desti & " a été choisie " & cpt & " fois"

quelqu'un pourrait'il m'aider ?

merci
A voir également:

3 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 257
24 févr. 2010 à 21:56
Bonsoir,

Ce n'est pas un problème de majuscules/minuscules, countif n'y est pas sensible.
Et le résultat n'est pas mis à jour dans cpt (que tu utilises dans msgbox) mais dans textbox7.value (?)
eric
0
pttvtt Messages postés 2 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 24 février 2010
24 févr. 2010 à 22:14
Bonsoir eric,

et merci de ta réponse

tu as raison en ce qui concerne les majuscules/minuscules et mon résultat s'affiche bien dans textbox7

par contre, si une cellule contient par exemple, la chaine de caractères "123456789", je souhaiterais qu'elle soit comptée quand je fais une recherche avec "3456" (ce qui n'est pas le cas).
textbox7 affiche "1" si je fais ma recherche avec"123456789"

je ne sais pas si je me fais bien comprendre

cordialement
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 257
24 févr. 2010 à 23:17
Là à part une boucle de ce style je ne vois pas de worksheetfunction qui ferait l'affaire :
    Dim c As Range
    desti = "3456"
    For Each c In [A1:E2000]
        If InStr(c.Value, desti) > 0 Then cpt = cpt + 1
    Next c

eric

Comme le instr() est gourmand et que tu as beaucoup de cellules tu pourrais peut-être tester le contenu avec isnumeric() avant (à condition que tous tes nombres soient numériques et jamais en string). A voir si tu serais gagnant.

eric
0
bonsoir,

réponse obtenue ailleurs

TextBox7.Value = Evaluate("=SUMPRODUCT(1*ISNUMBER(SEARCH(" & TextBox1.Value & ",$A$1:$E$2000)))")

merci
0