Fonction Si avec plusieurs critères/dans plusieurs colonnes. Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
l
luprt
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 7 avril 2014
Version d'Excel : 2003 en

Message par luprt » 7 avril 2014, 20:26

Bonsoir,

Je me permets de venir vers vous car je ne réussi pas à créer un code VBA.

J'aimerais pouvoir trier une extraction de base suivant plusieurs critères:

- je ne reussi pas à coder une fonction si à partir de la colonne G (G1:G), en effet j'aimerais uniquement garder les lignes qui ont un montant >=500000 ( en cellules G).
- Puis avec les lignes restantes j'aimerais savoir comment supprimer celles qui ont un résultat < 5 en colonnes O (O1:O).

J'ai tenté avec la fonction .union et Target.Offset mais rien y fait je reste bloqué.

Si quelqu'un pouvait m'aider ça me permettrait de partir un peu plus tôt du bureau chaque jour!!! :lol:

Merci d'avance pour vos réponses.

bonne soirée.

luprt
c
cousinhub
Membre impliqué
Membre impliqué
Messages : 1'948
Appréciations reçues : 5
Inscrit le : 28 mai 2009
Version d'Excel : xl 2016

Message par cousinhub » 7 avril 2014, 21:34

Bonsoir,

On veut bien t'économiser un peu de temps, mais si toi aussi, tu pouvais nous en économiser, ce serait mieux....

Aussi, si tu pouvais joindre un fichier exemple, exempt de toutes données confidentielles, on pourrait ajuster notre réponse.

Et est-ce qu'une extraction de ta base vers un nouvel onglet, et ne conservant que les lignes qui t'intéressent, ça pourrait t'aller?

@ te relire
1/ on se demande à quoi servent les correcteurs d'orthographe....
2/ Notre seule récompense est un "Merci".....
l
luprt
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 7 avril 2014
Version d'Excel : 2003 en

Message par luprt » 7 avril 2014, 21:58

Bonsoir cousinhub,

Je joints un fichier avec mes débuts de code, si cela peut-étre utile, plus le formalisme de l'extraction de base.

Après ma base arrive comme ceci, donc quand tu parle d'un nouvel onglet tu veux parler d'une nouvelle feuille?
J'essaye que tout se passe sur un même fichier excel mais si tu pense que cela sera plus facile et plus pratique de le mettre dans un nouvel onglet je veux bien tes conseils car je ne pense pas pouvoir le coder seul.

Merci encore pour ton aide.
si + critéres .xlsx
(34.5 Kio) Téléchargé 57 fois
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 8'848
Appréciations reçues : 335
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 7 avril 2014, 22:10

bonsoir,

rebonsoir consinhub,

une macro faite sur base de tes explications et sans avoir vu ton fichier que tu viens de mettre.
Sub test()
    Set ws1 = Worksheets("feuil1")
    Set ws2 = Worksheets("feuil2")
    derlig = ws1.Cells.Find("*", , xlValues, , xlByRows, xlPrevious).Row
    dercol = ws1.Cells.Find("*", , xlValues, , xlByColumns, xlPrevious).Column
    ws1.Cells.AutoFilter
    ws1.Range(Cells(1, 1), Cells(derlig, dercol)).AutoFilter Field:=7, Criteria1:=">50000", Operator:=xlAnd
    ws1.Range(Cells(1, 1), Cells(derlig, dercol)).AutoFilter Field:=15, Criteria1:="<5", Operator:=xlAnd
    ws1.Rows("1:" & derlig).Copy ws2.Range("A1")
    ws2.Cells.AutoFilter
    ws1.Cells.AutoFilter
    Set ws1 = Nothing
    Set ws2 = Nothing
End Sub
c
cousinhub
Membre impliqué
Membre impliqué
Messages : 1'948
Appréciations reçues : 5
Inscrit le : 28 mai 2009
Version d'Excel : xl 2016

Message par cousinhub » 7 avril 2014, 22:17

Re-,

Dans le fichier joint, 2 onglets

L'onglet "base", qui contient tes données, et l'onglet "resultat", qui va recevoir les données voulues....

Attention, il faut que les en-têtes de colonne soient strictement identiques et que les onglets se nomment bien comme les miens (ou alors les changer dans le code)

Bon courage
si + critéres_v1 .xlsm
(18.36 Kio) Téléchargé 60 fois
1/ on se demande à quoi servent les correcteurs d'orthographe....
2/ Notre seule récompense est un "Merci".....
l
luprt
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 7 avril 2014
Version d'Excel : 2003 en

Message par luprt » 7 avril 2014, 22:39

Genial merci beaucoup,

Par contre juste deux dernières questions:

si je veux utiliser cette formule pour un autre document comment je peux faire, car comme tu me l'as mentionné si je change juste le nom d'une colonne la macro ne fonctionne plus?

Sub extract()
Dim FBase As Worksheet, FResult As Worksheet
Set FBase = Sheets("base")
Set FResult = Sheets("resultat")
Dim Plg As Range
With FBase
Set Plg = .Range("A1:V" & .Cells(Rows.Count, "G").End(xlUp).Row)
.Range("AB2").FormulaR1C1 = "=AND(RC7>=500000,RC15>5)"
Plg.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range( _
"AB1:AB2"), CopyToRange:=FResult.Range("A1:V1"), Unique:=False

.Range("AB2").Clear
End With
End Sub

pourrais tu juste m'expliquer la partie en gras que je puisse mieux comprendre si tu as encore du temps?

ENcore une fois Merci de votre aide.
c
cousinhub
Membre impliqué
Membre impliqué
Messages : 1'948
Appréciations reçues : 5
Inscrit le : 28 mai 2009
Version d'Excel : xl 2016

Message par cousinhub » 7 avril 2014, 22:48

Re-,

en fait, c'est juste la transcription en VBA du filtre élaboré...

Dans ce filtre, je mets une formule dans la cellule AB2, qui donnera VRAI ou Faux si les 2 conditions sont réunies.

Et l'extraction se fera sur les lignes qui réuniront ces 2 conditions.

Et effectivement, il est impératif que les en-têtes soient strictement identiques, entre la feuille de données, et la feuille d'extraction.


Regarde un peu dans l'aide pour le filtre élaboré, personnellement, je l'utilise énormément, car c'est une des fonctions natives d'Excel, qui plus est, très très rapide.

Bon courage
1/ on se demande à quoi servent les correcteurs d'orthographe....
2/ Notre seule récompense est un "Merci".....
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message