Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Macro filtre avancé

aragdur

XLDnaute Junior
Salut,

J'ai une feuille et tout un tas d'onglets.
j'ai une macro filtre élaboré qui joue en fonction de l'intitulé de l'onglet.
Je voulais rajouter deux lignes mais ça ne fonctionne visiblement pas.
Le but de ces lignes était de rajouter une valeur filtre en fonction d'une cellule située sur une autre feuille.
J'ai fait la macro suivante :
VB:
Sub Filtre_avancé()
'
' Filtre_avancé Macro
' Applique un filter sur la colonne G - Critère = 2 dernière lettres du nom de la feuille: exemple: SJF==>JF
    Application.ScreenUpdating = False

    For Each ws In Sheets
        If ws.Name <> "Accueil" And ws.Name <> "Tableau de saisie" And ws.Name <> "Catalogue" And ws.Name <> "Tableau de données" Then
            With ws
                .UsedRange.AutoFilter
                .UsedRange.AutoFilter Field:=5, Criteria1:=Left(ws.Name, 1)
                .UsedRange.AutoFilter Field:=7, Criteria1:=Right(ws.Name, 2)
                .UsedRange.AutoFilter Field:=2, Criteria1:='Accueil'!$G$18
                .UsedRange.AutoFilter Field:=3, Criteria1:='Accueil'!$G$21
                Compteur = 0
                For Each ele In .UsedRange.Offset(1, 0).Columns(1).SpecialCells(xlCellTypeVisible)
                    If ele.Offset(0, 1) <> "" Then
                        ele.FormulaR1C1 = Compteur + 1
                        ele.NumberFormat = "000"
                        Compteur = Compteur + 1
                    End If
                Next ele
            End With
        End If
    Next ws

    Sheets("Accueil").Select
    Application.ScreenUpdating = True
End Sub
 

Staple1600

XLDnaute Barbatruc
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Je ne télécharge pas un fichier exemple de 10.2 Mo
(J'ai donc testé sur ton fichier du premier fil , en ne gardant que pour le test, la feuille Tableau de saisie)
J'ai repris un code issu de mes archives
Désolé pour la poussière
Test OK sur mon PC
VB:
Sub EclaterFeuilles()
'source|mirabeau|18913
'[x]/archives/[SSD7]
Const sname As String = "Tableau de saisie" 'changer le nom de la feuille
Const s As String = "G" 'changer la colonne qui sert de critère
Dim d As Object, a, cc&
Dim p&, i&, rws&, cls&
Set d = CreateObject("scripting.dictionary")
With Sheets(sname)
    rws = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
    cls = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
    cc = .Columns(s).Column
End With
For Each Sh In Worksheets
    d(Sh.Name) = 1
Next Sh
Application.ScreenUpdating = False
With Sheets.Add(after:=Sheets(sname))
Sheets(sname).Cells(1).Resize(rws, cls).Copy .Cells(1)
.Cells(1).Resize(rws, cls).Sort .Cells(cc), 2, Header:=xlYes
a = .Cells(cc).Resize(rws + 1, 1)
p = 2
For i = 2 To rws + 1
    If a(i, 1) <> a(p, 1) Then
        If d(a(p, 1)) <> 1 Then
            Sheets.Add.Name = a(p, 1)
            .Cells(1).Resize(, cls).Copy Cells(1)
            .Cells(p, 1).Resize(i - p, cls).Copy Cells(2, 1)
        End If
        p = i
    End If
Next i
Application.DisplayAlerts = False
    .Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End With
Sheets(sname).Activate
End Sub
 

aragdur

XLDnaute Junior
Salut,

merci pour ton aide, mais je pars sur une base pour obtenir un filtre complémentaire et non pour revenir à zéro.
je pense que je vais faire plus simple et juste faire une macro pour filtrer en fonction de la cellule en question.
ça fera une macro de plus mais ça évitera une boucherie certaine.

cdlt
 

aragdur

XLDnaute Junior
le soucis en fait, c'est que j'essaye bien avec le filtre avancé (sans macro pour l'instant), mais sans résultat actuellement ^^'
c'est comme si il ne prenait pas en compte le résultat de ma liste déroulante.
y a t'il une incompatibilité là dedans svp ?
 

aragdur

XLDnaute Junior
J'ai fait mon fichier word à la suite de ce post.
Mais il y a beaucoup de contrainte derrière.
Et vu mon but final, excel répondra beaucoup plus facilement à mon besoin.

En effet, ce que word peut faire via 40K fonctions, excel le résout en 2.
ça reste en même temps logique vu que word n'est que du traitement de texte.

donc, je me retourne vers la fonction filtre avancé qui me paraissait intéressante.
 

Discussions similaires

Réponses
7
Affichages
528
Réponses
1
Affichages
432
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…