Pb avec countif vba excel

pttvtt Messages postés 2 Statut Membre -  
 pttvtt -
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
Configuration: Windows XP

3 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  2. pttvtt Messages postés 2 Statut Membre
     
    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
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    1. pttvtt
       
      bonsoir,

      réponse obtenue ailleurs

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

      merci
      0