Conserver une MEFC avec un filtre élaboré

C60a

XLDnaute Junior
Bonjour à tous,

Comment puis-je conserver une mise en forme conditionnelle lors d'une application d'un filtre élaboré ?

Code:
Private Sub Worksheet_Activate()
    [T2] = "En attente"
    derlig = Sheets("Feuil1").[A1].End(xlDown).Row
    derlign = [A1].End(xlDown).Row
    Range("A2:C" & derlign).Delete

    With Sheets("Feuil1")
        .Range("A1:C" & derlig).AdvancedFilter Action:=xlFilterCopy, _
                                               CriteriaRange:=.[T1:T2], _
                                               CopyToRange:=[A1:C1], Unique:=False
    End With
End Sub

la mise en forme utilisée est celle d'un jeux d’icônes à 4 indicateurs avec un "Ordre inverse des icônes" et "Afficher l'icone uniquement" .

Merci d'avance.
 

Pièces jointes

  • FiltreElaboréMFC.xlsm
    17.3 KB · Affichages: 39

C60a

XLDnaute Junior
Bonjour,

Voila un autre essai :

VB:
Private Sub Worksheet_Activate()
    Dim Derlig As Byte
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    ActiveSheet.Cells.Delete

    With Sheets("Feuil1")
        .[T2] = "En cours"
        Derlig = .[A1].End(xlDown).Row
        .Range("A1:C" & Derlig).AdvancedFilter Action:=xlFilterInPlace, _
                                               CriteriaRange:=.[T1:T2], _
                                               Unique:=True
        .Range("A1:C" & Derlig).SpecialCells(xlCellTypeVisible).Copy
    End With
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("Feuil1").AutoFilterMode = False
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub

Il consiste à appliquer un filtre avancé sur place puis recopier le résultat dans Feuil2.

Mais je n'obtient rien !
 

Pièces jointes

  • FiltreElaboréMFC_v002.xlsm
    14.8 KB · Affichages: 28

Staple1600

XLDnaute Barbatruc
Bonsoir à tous

Quand j'active, la feuille 2, j'ai bien une recopie sur la feuille 2 des données filtrées ave conservation de la MFC
(testé sur Excel 2013)
NB: Si ta macro a généré au moins une fois une erreur
mets cette macro dans un module standard et éxécutes là en étant dans VBE.
VB:
Sub Macro1()
Application.EnableEvents = True
End Sub


Sinon, je me suis permis ce petit ajout
VB:
Private Sub Worksheet_Activate()
    Dim Derlig As Long
    Application.ScreenUpdating = False
    'Application.EnableEvents = False
    Cells.Clear
    With Sheets("Feuil1")
        .[T2] = Choose(InputBox("Choisir le critère?" & Chr(13) & "1=En cours, 2=Annulé, 3=En attente", "Filtre", 1), "En cours", "Annulé", "En attente")
        Derlig = .Cells(Rows.Count, 1).End(xlUp).Row
        .Range("A1:C" & Derlig).AdvancedFilter Action:=xlFilterInPlace, _
                                               CriteriaRange:=.[T1:T2], _
                                               Unique:=True
        .Range("A1:C" & Derlig).SpecialCells(xlCellTypeVisible).Copy
    End With
    ActiveSheet.[A1].Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("Feuil1").ShowAllData
    Application.ScreenUpdating = True
   ' Application.EnableEvents = True
End Sub
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
591

Statistiques des forums

Discussions
312 323
Messages
2 087 300
Membres
103 512
dernier inscrit
sisi235