VBA : Filtre selon 2 critères

Brudy

XLDnaute Junior
Bonjour à tous,

Pour faire suivre à une demande d'il y'a quelques semaines, ma demande c'est précisée.

situation actuelle : BDD de produits. une appartenance à 14 régions potentielles, en frais ou en sec, et ce frais/sec détermine l'entrepôt. Jusque là, plutôt simple.
upload_2018-2-8_15-51-21.png


Ma demande étant surtout niveau faisabilité et praticité. J'ai réalisé une macro enregistrée par situation, qui pourrait être raccourcis avec une macro. Ici, situation Anjou = Filtre sur Anjou = Oui, et sur ploufragan = non.
upload_2018-2-8_15-32-51.png

Choix de la région à sélectionner, choix de l'entrepôt, alors filtre. Et copier coller les produits trouvés si possible dans la feuille d'origine.... J'avais utilisé une macro type call filtre3 dans une ancienne macro mais avec des critères de filtre, ici j'ai du mal à visualiser mes possibilités. puisque d'un côté je dois sélectionner les produits présent en Tourraine avec l'exemple, et NON PRESENT à Nantes.
upload_2018-2-8_15-37-22.png


j'ai essayé de faire au mieux pour le fichier, allégé au maximum.
Merci pour le temps accordé
 

Pièces jointes

  • upload_2018-2-8_15-32-29.png
    upload_2018-2-8_15-32-29.png
    17.3 KB · Affichages: 21
  • Test Macro.xlsx
    60 KB · Affichages: 69

Brudy

XLDnaute Junior
43 plus exactement, inexploitable en l'état, je dois ajouter en colonne les zones qui sont indiquées dans une case, en AM. Et par la suite, ajouter les entrepôts correspondant.

Oui, je suis assez bloqué par l'extraction, si je vois que le traitement par macro est trop long, je peux supprimer des colonnes une fois l'extraction faites, mais si possible, conserver les infos.
 

Brudy

XLDnaute Junior
Ci dessous la macro qu'un d'ici m'avait largement aidé à produire, qui filtre selon deux critères. Le problème étant que les critères sont identifiés clairement comme deux valeurs, dans ma problématique ici, ce sont deux filtres :/

Sur la feuille BDD :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Then Range("D" & Target.Row) = Date
    Dim FeBase As Worksheet
    Dim Fe As Worksheet
    Dim Ligne As Long

    If Target.Count > 1 Then Exit Sub 'suite à une sélection multiple et suppression par exemple
    If Target.Column <> 19 Then Exit Sub 'colonne AA
    If Target.Row < 6 Then Exit Sub 'pas les lignes d'entêtes
  
    'si la valeur est 1, on lance le transfert
    If Target.Value = 1 Then
  
        Set FeBase = Worksheets("PENALITE")
  
        On Error Resume Next
        Set Fe = Worksheets(Cells(Target.Row, 2).Value)
  
        If Err.Number <> 0 Then
          
            'gèle l 'affichage
            Application.ScreenUpdating = False
          
            Set Fe = Worksheets.Add(, Sheets(Sheets.Count))
            Fe.Name = Cells(Target.Row, 2).Value
            Err.Clear
          
            're-sélectionne la feuille car la création mets le focus sur la nouvelle feuille
            FeBase.Select
          
            'rafraîchi
            Application.ScreenUpdating = True
  
         End If
      
        'transfert
        With Fe: Ligne = .Cells(.Rows.Count, 2).End(xlUp).Row: End With
  
        If Ligne = 1 And Fe.Cells(1, 2).Value = "" Then
        'Collage celulle A1
            Fe.Range(Fe.Cells(1, 1), Fe.Cells(2, 17)).Value = FeBase.Range(FeBase.Cells(5, 2), FeBase.Cells(5, 25)).Value
        End If
   'le Targetrow,25 change rien
  
        Fe.Range(Fe.Cells(Ligne + 1, 1), Fe.Cells(Ligne + 1, 17)).Value = FeBase.Range(FeBase.Cells(Target.Row, 2), FeBase.Cells(Target.Row, 25)).Value
  
    End If
  
End Sub
Sur la feuille tri :
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        If Not Application.Intersect(Target, Range("F8:G8")) Is Nothing Then
        Call filtre3
        End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 166
Messages
2 085 894
Membres
103 021
dernier inscrit
Sergyl75