pb avec fonction COUNTIF

pttvtt

XLDnaute Nouveau
Bonjour,

je rencontre un pb avec la fonction countif:
telle quelle, cette fonction ne compte que les cellules strictement identiques au terme recherché
je souhaiterais qu'elle compte également les cellules comprenant le terme recherché

voici mon code actuel:

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

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"

quelqu'un pourrait'il m'aider ?

merci
 

pttvtt

XLDnaute Nouveau
Re : pb avec fonction COUNTIF

Bonjour ROGER2327 et merci pour cette réponse,

Quand je remplace ma ligne de code par celle que tu me dis d'essayer, j'ai ma msgbox "le terme recherché n'existe pas" qui s'affiche

voici mon code en entier:

Private Sub Suivant_Click()

On Error GoTo erreur '<==Ajout pour envoyer un message en cas d'erreur

If Not Me.TextBox1.Value = "" Then

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

Cells.Find(What:=TextBox1.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate

Range("A" & ActiveCell.Row).Select
TextBox2.Value = ActiveCell

Range("B" & ActiveCell.Row).Select
TextBox6.Value = ActiveCell

Range("C" & ActiveCell.Row).Select
TextBox3.Value = ActiveCell

Range("D" & ActiveCell.Row).Select
TextBox4.Value = ActiveCell

Range("E" & ActiveCell.Row).Select
TextBox5.Value = ActiveCell

End If

Exit Sub '<=== ajouter pour sortir si pas d'erreur

erreur: '<=== ajout pour message d'erreur
MsgBox "Le terme recherché n'existe pas"

End Sub



cordialement
pttvtt
 

ROGER2327

XLDnaute Barbatruc
Re : pb avec fonction COUNTIF

Re...
Difficile de tester un code sans son support...
Essayez ceci :
Code:
[COLOR="DarkSlateGray"][B]TextBox7.Value = Evaluate("=SUMPRODUCT(1*ISNUMBER(SEARCH(" & TextBox1.Value & ",$A$1:$E$2000)))")[/B][/COLOR]
ROGER2327
#2853
 

pttvtt

XLDnaute Nouveau
Re : pb avec fonction COUNTIF

Merci ça fonctionne très bien

je vous joins tout de même le support car l'idéal serait d'afficher dans le textbox7: réponse 1/x (puis réponse 2/x à chaque clic sur le bouton suivant, x étant le résultat de la ligne de code que vous m'avez transmise)

je vous dis déjà merci pour l'aide apportée

pttvtt
 

Pièces jointes

  • Recherche stock.xls
    42 KB · Affichages: 123

ROGER2327

XLDnaute Barbatruc
Re : pb avec fonction COUNTIF

Re...
Code de UserForm1 :
Code:
[COLOR="DarkSlateGray"][B][COLOR="Red"]Private n&[/COLOR]

Private Sub Suivant_Click()

   On Error GoTo erreur [COLOR="SeaGreen"]'<==Ajout pour envoyer un message en cas d'erreur[/COLOR]
   If Not Me.TextBox1.Value = "" Then
   
      [COLOR="Red"]v = Evaluate("=SUMPRODUCT(1*ISNUMBER(SEARCH(" & TextBox1.Value & ",$A$1:$E$2000)))")
      TextBox7.Value = n Mod v + 1 & " / " & v
      n = n + 1[/COLOR]
   
      Cells.Find(What:=TextBox1.Value, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
         :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
         False, SearchFormat:=False).Activate
     
      Range("A" & ActiveCell.Row).Select
      TextBox2.Value = ActiveCell
      Range("B" & ActiveCell.Row).Select
      TextBox6.Value = ActiveCell
      Range("C" & ActiveCell.Row).Select
      TextBox3.Value = ActiveCell
      Range("D" & ActiveCell.Row).Select
      TextBox4.Value = ActiveCell
      Range("E" & ActiveCell.Row).Select
      TextBox5.Value = ActiveCell
   End If
Exit Sub [COLOR="SeaGreen"]'<=== ajouter pour sortir si pas d'erreur[/COLOR]
'
erreur: [COLOR="SeaGreen"]'<=== ajout pour message d'erreur[/COLOR]
MsgBox "Le terme recherché n'existe pas"
End Sub


Private Sub Quitter_Click()
   [COLOR="Red"]n = 0[/COLOR]
   Unload UserForm1
End Sub

Private Sub Effacer_click()
   [COLOR="Red"]n = 0[/COLOR]
   TextBox1.Value = ""
   TextBox2.Value = ""
   TextBox3.Value = ""
   TextBox4.Value = ""
   TextBox5.Value = ""
   TextBox6.Value = ""
   TextBox7.Value = ""
   TextBox1.SetFocus
End Sub[/B][/COLOR]
ROGER2327
#2856
 

pttvtt

XLDnaute Nouveau
Re : pb avec fonction COUNTIF

Bonjour,

je viens de trouver un petit pb que je n'avais pas remarqué

avec ISNUMBER ma recherche ne se fait qu'avec des nombres
aussi, si je recherche un texte ou un mélange de chiffres et de texte, j'ai une erreur

merci

pttvtt
 

ROGER2327

XLDnaute Barbatruc
Re : pb avec fonction COUNTIF

Re...
Au vu de votre premier message, j'avais imaginé que vous cherchiez des sous-chaînes de chiffres dans des chaînes de chiffres :
(...) 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" (...)
Comme ce n'est pas le cas, reprenez votre formule initiale sans mettre d'espace entre 2 et 000 (2000, et pas 2_000) et ajoutez-y le caractère générique "*" avant et après le terme recherché.
Finalement, vous devriez obtenir ce que vous souhaitez en remplaçant la ligne
Code:
[COLOR="DarkSlateGray"][B]      v = Evaluate("=SUMPRODUCT(1*NOT(ISNUMBER(SEARCH(" & TextBox1.Value & ",$A$1:$E$2000)))")[/B][/COLOR]
par
Code:
[COLOR="DarkSlateGray"][B]      v = Application.WorksheetFunction.CountIf(Range("a1:e2000"), "*" & TextBox1.Value & "*")[/B][/COLOR]
ROGER2327
#2896
 

Discussions similaires

Réponses
2
Affichages
1 K

Statistiques des forums

Discussions
312 175
Messages
2 085 952
Membres
103 058
dernier inscrit
florentLP