Macro Excel - Filtre élaboré et mise en forme contionnelle

Signaler
Messages postés
1
Date d'inscription
jeudi 9 juillet 2009
Statut
Membre
Dernière intervention
9 juillet 2009
-
Messages postés
22
Date d'inscription
vendredi 3 juillet 2009
Statut
Membre
Dernière intervention
3 mai 2010
-
Bonjour,
Voici le sujet que je cherche a développer.
J'ai une base de données, j'ai des macros filtres élaborés qui permettent d'extraire sur un autre onglet certaines lignes de cette BdD selon 3 critères (par ex "oui", "non", "SO") et les lignes ainsi extraites sont mises en formes automatiquement selon ces 3 mêmes critères, par exemple une couleur par critère.
La mise en forme automatique est faite sur la feuille excel et non déterminée par une macro.
Du coup le nombre de lignes exportés varient selon le critère, il peut par exemple y avoir 20 lignes pour "SO" et seulement 5 pour "oui" et dans ce cas la mise en forme auto fait que toutes les lignes vides du tableau qui ont été remplies précédemment ont une mise en forme (genre fond bleu) et du coup à l'impression je vais avoir des pages avec des lignes bleues mais vides.

Par exemple je clique sur le filtre "oui" il m'exporte 20 lignes mises en forme etc..., je clique sur "non" il m'exporte les 5 lignes correspondant au critères "non" et les 15 lignes suivantes redeviennent vides (elles sont effacées) mais il reste les bordures de cellules et le fond coloré.

Je cherche à supprimer ce reliquat de mise en forme et de n'avoir qu'un tableau avec des lignes réellement rempli.

Merci à vous
John

Voici le code servant à l'export par filtre élaboré :

Range("A2").Select
    ActiveCell.FormulaR1C1 = "Non"
   
    Range("A6").Select
    ActiveCell.FormulaR1C1 = "a"
    Range("A5").Select
    Range("BdD").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "A1:A2"), CopyToRange:=Range("A5:I5"), Unique:=False
Columns("E:E").Select
    With Selection
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
   
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .CenterHeader = "&""Arial,Gras""&16Titre du dossier - filtre "Non""
    End With
    Range("B1").Select
End Sub

1 réponse

Messages postés
22
Date d'inscription
vendredi 3 juillet 2009
Statut
Membre
Dernière intervention
3 mai 2010

Pourquoi tu n'effaces pas tout simplement le contenu de toutes les cellules de ta zone de destination avant de copier le résultat du filtre ?

Un truc du genre

Range("Rubriques!A5:I500").Select
Selection.Clear