[réglé] Application.WorksheetFunction.CountIf

Jefekoi

XLDnaute Junior
Bonjour,

J'ai dans un onglet 2 colonnes où je voudrais récupérer des infos :

Dans la colonne Q j'ai des noms de poste
Dans le colonne M j'ai des résultats

Je voudrais chercher en Q un poste exemple : "Atelier A"
Et qu'il me dise combien il y a de résultat "Mauvais"

Sans passer par le filtre classique mais en utilisant uniquement une macro

J'ai réussi à sortir ceci :

TrucMuche= Application.WorksheetFunction.CountIf(Columns(Q), "Atelier A")

Mais comment faire pour avoir une condition : Si Colonne Q= "Atelier A" combien de "Mauvais il y a t-il ?


Merci pour votre aide

Eric
 

Pièces jointes

  • exemple.xlsx
    20.3 KB · Affichages: 20

cp4

XLDnaute Barbatruc
Bonjour, remplacer q5 par q2
VB:
Option Explicit

Sub test()
   Dim dl As Integer, c As Range, i As Integer
   With Sheets("Report")
      dl = .Range("Q" & Rows.Count).End(xlUp).Row
      For Each c In .Range("Q2:Q" & dl)
         If c.Value = .Range("S1") Then
            If c.Offset(, -4).Value = "Mauvais" Then
               i = i + 1
            End If
         End If
      Next
      MsgBox "Pour l'" & .Range("S1") & " il y a " & i & " mauvais"
   End With
  
End Sub
 

Jacky67

XLDnaute Barbatruc
les 3 solutions fonctionnent merci

Question je voudrais remplacer Q2:Q10000 par son nom "Station" c'est une plage .
Merci

Bonne journée

Re..
Dans ce cas, pour que les 2 plages aient la même longueur (obligatoire), il vaut mieux nommer les deux plages
Exemple avec les deux plages nommées dynamiquement en PJ
 

Pièces jointes

  • exemple TrucMuch.xlsm
    54.5 KB · Affichages: 17
Dernière édition:

youky(BJ)

XLDnaute Barbatruc
Bonjour tous,
Perso je ne suis pas pour nommer chaque plages.
Je préfère insérer direct un tableau et le tour est joué rien d'autre à gérer.
[Tableau1[nom de entête de colonne]].select 'suffit pour sélectionner la bonne plage
Ceci même si on décale le tableau. (ajout de colonne ou de ligne avant l'entête)
Fichier avec exemple de Tableau1
Bruno
 

Pièces jointes

  • exemple (Y).xlsm
    32.5 KB · Affichages: 22

Jefekoi

XLDnaute Junior
Merci Messieurs vous êtes super :)

J'ai une question :
Si je choisi cette formule :
OP = [SUMPRODUCT((Status<>"")*(Station="Atelier A"))]
Le résultat est correct

Par contre si je fais comme cela :
Dim Poste As Variant
Poste = Array("Atelier A")
OP = [SUMPRODUCT((Status<>"")*(Station=Poste(0)))]
Le résultat ne fonctionne pas j'ai : #NOM?

Pourtant il me semble que c'est bon comme syntaxe .
 

Discussions similaires

Réponses
4
Affichages
156

Statistiques des forums

Discussions
311 716
Messages
2 081 848
Membres
101 826
dernier inscrit
dododu89