Extraction de données multicritère

Kageeby

XLDnaute Nouveau
Bonjour à tous,

Je suis tout nouveau sur ce forum et je ne fais que bricoler sur Excel et plus récemment sur VBA en programmation mais j'avoues être un peu perdu alors je me suis décidé à m'inscrire ici afin d'obtenir un peu d'aide auprès d'experts comme vous ;)

J'ai donc une première question surement toute bête que je résumerais ainsi, j'ai besoin de compter le nombre de lignes qui répondraient à un critère de département dans une colonne (le 22, 29, 35 et 56 en fait) tout en répondant à un autre critère intitulé "modif /neuf" dans une autre colonne. Est-ce que cela est possible , J'imagine que oui mais je ne sais comment y parvenir, j'ai fait des recherche sur le web mais rien pour mon cas à priori...

Je vous joins mon exemple pour plus de clarté ;)

Merci par avance pour votre aide précieuse et bonne soirée à vous ;)
 

Pièces jointes

  • Exemple.xls
    43 KB · Affichages: 67
  • Exemple.xls
    43 KB · Affichages: 73
  • Exemple.xls
    43 KB · Affichages: 70

Enthalpie

XLDnaute Nouveau
Re : Extraction de données multicritère

Bonjour à toi,

Je suis également nouveau, c'est le premier message que je rédige ;) .

Pour répondre à ta question, il existe la fonction NB.SI qui pourrait t'aider.
Pour ton exemple, la fonction =NB.SI(Feuil1!D2:D32;"=44") comptera le nombre de valeurs 44 entre D2 et D32.
Il te suffit ensuite de changer 44 en 22, 29, 35 ou 56 comme tu le souhaites.

En espérant t'avoir aidé.
 

Enthalpie

XLDnaute Nouveau
Re : Extraction de données multicritère

Re bonsoir,

Pour compléter ma réponse, tu peux faire une recherche multi-critère grâce à la fonction nb.si.ens tel que :

=NB.SI.ENS(Feuil1!$D$2:$D$32;"=17";Feuil1!$H$2:$H$32;"modif /neuf")

Cela te permet de rajouter le critère intitulé "modif /neuf".

En espérant t'avoir aidé.
 

Enthalpie

XLDnaute Nouveau
Re : Extraction de données multicritère

En effet, j'avais mal compris la question.

avec nb.si.ens cette fonction répondrait à ton problème :

=NB.SI.ENS(Feuil1!$D$2:$D$32;22;Feuil1!$H$2:$H$32; "modif /neuf")+NB.SI.ENS(Feuil1!$D$2:$D$32;29;Feuil1!$H$2:$H$32; "modif /neuf")+NB.SI.ENS(Feuil1!$D$2:$D$32;35;Feuil1!$H$2:$H$32; "modif /neuf")+NB.SI.ENS(Feuil1!$D$2:$D$32;56;Feuil1!$H$2:$H$32; "modif /neuf"

Mais la fonction Somme.prod proposé par haonv me semble moins lourde et plus appropriée.

En m'excusant d'envoyer trop de messages.

Cordialement
 

Kageeby

XLDnaute Nouveau
Re : Extraction de données multicritère

Bonjour !

Un grand merci à vous, je n'avais pas pensé à cette combinaison et je me heurtais à un problème de synthaxe, sans vous je n'aurais jamais réussi, j'ai donc finalement opté pour la solution SOMMEPROD qui répond parfaitement à mon attente. Merci infinimement, ça m'enlève une épine du pied.
 

Kageeby

XLDnaute Nouveau
Re : Extraction de données multicritère

Bon, je vais vous embêter sur le même tableau et abuser de votre gentilesse car je bloque sur une autre problématique concernant du texte. Je m'explique, dans le même tableau, j'aurais besoin de compter le nombre de cellule contenant le texte "pas de vt" dans la colonne S (Raison de la NC), depuis le début, j'essaie la formule =NB.SI('octobre 2012'!S:S;"=pas de vt") qui me semble approprié mais pas de résultat. Y'a-t-il une limitation de nombre de caractère, d'espace ou autre car quand mes critères sont "ok" ou "ko" cela fonctionne très bien. Merci par avance ;)
 

R@chid

XLDnaute Barbatruc
Re : Extraction de données multicritère

Bonjour @ tous,
c'est parce que "pas de vt" est ecrit avec un espace a la fin dans la colonne S, et peut être à gauche aussi,
Code:
=NB.SI(S:S;"*pas de vt*")
J'ai mis le "*" dans les 2 cotés au cas où il existe un espace à gauche
@ +

Edit : Bonjour Jocelyn :eek:, je ne l'avais pas remarqué :cool:
 
Dernière édition:

Jocelyn

XLDnaute Barbatruc
Re : Extraction de données multicritère

Bonjour le Forum,
Bonjour kageeby, enthalpie, haonv,

Lorsque tu écris "=NB.SI('octobre 2012'!S:S;"=pas de vt")" il me semble que cela ne fonctionne pas car suivant l'exemple que tu joint tu as un espace après vt donc a essayer :

=NB.SI('octobre 2012'!S:S;"=pas de vt ")

Cordialement

EDIT : Bonjour l'ami rachid :), voila une belle collision dans la même minute:)
 

Kageeby

XLDnaute Nouveau
Re : Extraction de données multicritère

Merci infiniment et quelle rapidité !!!! Vous assurez trop, je sens que je vais me plaire ici et mes cheveux vont vous remercier lol

Alors, je savais que c'était tout un tas de détails auquel il fallait faire attention et j'en suis au début donc avec le temps certains automatismes viendront grâce à vos explications, car ce qui est bien c'est que vous ne vous contentez pas d'apporter la réponse mais vous expliquez le pourquoi du comment et ça ça va vraiment m'aider !!!
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Extraction de données multicritère

Bonjour le fil, bonjour le forum,

Une proposition VBA avec le code ci-dessous :
Code:
Private Sub CommandButton1_Click() 'bouton "Extract"
Const cr As String = "modif /neuf" 'définit la constante cr (CRitère)
Dim pad As Range 'définit la variable pad (Plage des Anciennes Données)
Dim dl As Integer 'définit la variable dl (Dernière Ligne)
Dim pl As Range 'définit la variable pl (PLage)
Dim cel As Range 'définit la variable cel (CELlule)
Dim dest As Range 'définit la variable dest (cellule de DESTination)

Application.ScreenUpdating = False 'masque les changements à l'écran
ActiveCell.Select 'enlève le focus au bouton
Set pla = Range("A2").CurrentRegion 'définit la plage des anciennes données pla
If pla.Rows.Count > 1 Then 'condition si pla contient des données
    Set pla = pla.Offset(1, 0).Resize(pla.Rows.Count - 1, pla.Columns.Count) 'redéfinit pla
    pla.Clear 'supprime les anciennes données
End If 'fin de la condition
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
    dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'de'finit la dernière ligne éditée dl de la colonne 1 (=A)
    Set pl = .Range("A1:T" & dl) 'définit la plage pl
    .Range("A1").AutoFilter 'lance le filtre automatique
    .Range("A1").AutoFilter , Field:=8, Criteria1:=cr 'filtre la colonne 8 (=H) en fonction du critère cr
    For Each cel In Application.Intersect(pl.SpecialCells(xlCellTypeVisible), .Columns(4)) 'boucle sur toutes les cellules visible cel de la colonne 4 (=D)
        Set dest = Sheets("Feuil2").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination dest
        'si le département est 22 ou 29 ou 35 ou 56, copie et colle la ligne de cel dans dest
        If cel.Value = 22 Or cel.Value = 29 Or cel.Value = 35 Or cel.Value = 56 Then cel.EntireRow.Copy dest
    Next cel 'prochaine cellule de la boucle
    .Range("A1").AutoFilter 'annule le filtre automatique
End With 'fin de la prise en compte de l'onglet "Feuil1"
Application.ScreenUpdating = True 'affiche les changements à l'écran
If Range("A2").CurrentRegion.Rows.Count = 1 Then MsgBox "Aucune donnée ne correspond aux critères !" 'message si pas d'extraction
End Sub
Le fichier :
 

Pièces jointes

  • Kageeby_v01.xls
    61 KB · Affichages: 46

Kageeby

XLDnaute Nouveau
Re : Extraction de données multicritère

Bonjour Robert,

Merci pour cette proposition qui est super interessante et que je vais surement prendre en compte et intégrer dans un avenir proche, pour le moment, je ne me sens pas encore assez à l'aise pour intégrer VBA sur ce fichier mais j'ai toutes les explications détaillées pour le faire et je vous en suis extrèmement reconnaissant ;) (et désolé pour la version du fichier, j'ai fait ça vite fait hier soir afin que mon exemple soit illustré mais je n'ai pas pensé du tout à ce problème de version qui est très juste, je ferais donc davantage attention la prochaine fois, un grand merci à vous en tout cas !)
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 347
Membres
103 526
dernier inscrit
HEC