XL 2013 VBA critère de filtre dynamique

sardaucar

XLDnaute Nouveau
Bonjour à tous,

Je possède un classeur Excel avec les feuilles suivantes :

Feuille Données : Contient une table de donnée consolidée
Feuille Modèle : Contient une liste de valeur

Je dois éclater ma table selon un critère, et copier chaque ligne répondant au critère dans une autre feuille.

Pour cela j'ai créé une feuille par critère, portant le nom de ce dernier, et le code VBA suivant :

VB:
Sub copie_donnees()

Dim LastLig As Long
Dim cDest As Range
Dim cFilter As String
Dim i As Integer
Application.ScreenUpdating = False

For i = 1 To 2
    'Démarre la boucle avec comme valeur de filtre et de feuille la valeur de la cellule A1 de la feuille modèle
    cFilter = Worksheets("Modèle").Cells(1, i).Value
    With ThisWorkbook
        'cDest: La celllule de destination: première cellule vide de la colonne A de Filter
        With .Worksheets(cFilter)
            Set cDest = .Cells(.Rows.Count, "A").End(xlUp)(1)
        End With
        With .Worksheets("Données")
            'LastLig, ligne de la dernière cellule remplie de colonne A de Données
            LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
            'On fait un filtre automatique sur la colonne A de Feuil1 avec comme critère Filter
            .Range("A1:A" & LastLig).AutoFilter field:=1, Criteria1:=cFilter
            'Si au moins une ligne résultat du filtre (en plus de la ligne 1 des titres)
            If .Range("A2:A" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
                With .Range("A1:A" & LastLig).SpecialCells(xlCellTypeVisible).EntireRow
                    'On copie toutes les lignes visibles vers cDest
                    .Copy cDest
                End With
            End If
            'on vide notre variable cDest
            Set cDest = Nothing
            'On enlève le filtre automatique
            .AutoFilterMode = False
        End With
    End With
Next


End Sub

Malheureusement cela me renvoi une erreur d'indice sur la déclaration de ma variable cFilter, et je ne sais pas pourquoi...

Classeur en pj


Merci d'avance pour toute aide !
 

Pièces jointes

  • copie_données.xlsm
    28.8 KB · Affichages: 44

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel