Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Compter le nombre d'occurance selon la valeur de la cellule adjacente

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

alias_2003

XLDnaute Occasionnel
Bonsoir,
Dernière question pour ce soir...
J'aimerais dans le fichier joint, pouvoir compter, par vba, le nombre d’occurrences de "Oui" selon la valeur en "B" et indiquée dans la textbox2. Par exemple, lorsque la valeur renseignée est 5 (textbox2), 3 doit s'afficher dans la textbox1.
Avez-vous des idées ?
Merci beaucoup,
Bonne soirée
 

Pièces jointes

Re : Compter le nombre d'occurance selon la valeur de la cellule adjacente

Bonsoir Alias, bonsoir le forum,

Essaie comme ça :
Code:
Private Sub TextBox2_Change() 'au changement dans la TextBox2
Dim o As Object 'déclare la variable o (Onglet)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim nb As Integer 'dléclare la varoable nb (NomBre)

Set o = Sheets("Feuil1") 'définit l'onglet o
dl = o.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 2 (=B)
Set pl = o.Range("B12:B" & dl) 'définit la plage pl
Me.TextBox1.Value = "" 'vide la TextBox1
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    'si le contenu de la cellule cel (converti en texte) est égal au contenu de la TextBox2 et si la cellule à droite de cel vaut "oui" (accepte les majuscules et les minuscules),
    'incrémente le compteur nb
    If CStr(cel.Value) = Me.TextBox2.Value And UCase(cel.Offset(0, 1).Value) = "OUI" Then nb = nb + 1
Next cel 'prochaine cellule de la boucle
Me.TextBox1.Value = nb 'renvoie le nombre nb dans la TextBox1
End Sub
 
Re : Compter le nombre d'occurance selon la valeur de la cellule adjacente

Bonsoir alias_2003, salut Robert,

Code:
Private Sub TextBox2_Change()
TextBox1 = Evaluate("SUMPRODUCT((""""&B12:B20=""" & TextBox2 & """)*(C12:C20=""oui""))")
End Sub
Les cellules en B12:B20 peuvent contenir des nombres ou du texte ou être vides.

Edit : au lieu de SUMPRODUCT on peut mettre simplement SUM.

A+
 
Dernière édition:
Re : Compter le nombre d'occurance selon la valeur de la cellule adjacente

Re,

Améliorations pour rendre dynamiques les plages étudiées :

Code:
Private Sub TextBox2_Change()
TextBox1 = Evaluate("SUM((""""&T=""" & TextBox2 & """)*(P=""oui""))")
End Sub

Private Sub UserForm_Initialize()
Dim derlig&
derlig = Range("C" & Rows.Count).End(xlUp).Row
Range("B12:B" & derlig).Name = "T" 'nom défini
Range("C12:C" & derlig).Name = "P" 'nom défini
TextBox2_Change
End Sub
Fichier joint.

A+
 

Pièces jointes

Dernière édition:
Re : Compter le nombre d'occurance selon la valeur de la cellule adjacente

Bonjour le fil, le forum,

On peut même rechercher un nombre décimal, une date ou une heure en colonne B :

Code:
Private Sub TextBox2_Change()
Dim x$
x = TextBox2
If IsNumeric(x) Then x = Replace(CDbl(x), ",", ".") Else _
  If IsDate(x) Then x = Replace(CDbl(CDate(x)), ",", ".")
TextBox1 = Evaluate("SUM((""""&T=""" & x & """)*(P=""oui""))")
End Sub

Private Sub UserForm_Initialize()
TextBox2_Change
End Sub
Fichier (2).

A+
 

Pièces jointes

Dernière édition:
Re : Compter le nombre d'occurance selon la valeur de la cellule adjacente

Bonjour Robert, Job75, le Forum,
Merci à vous 2 !! Les 2 solutions me conviennent parfaitement !
Encore merci !
Bonne soirée,
Amicalement
 
Re : Compter le nombre d'occurance selon la valeur de la cellule adjacente

Re,

Concernant la solution du post #5, Jean-Marcel sur un autre fil m'a fait découvrir qu'il fallait utiliser CDec au lieu de CDbl.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
259
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…