Problème VBA: filtrer des données

10filtre-db-test.xlsm (158.04 Ko)

Bonjour,

Exemple de fichier: https://www.cjoint.com/c/IHCkR3UcpbI

J’aimerai faire un filtre pour supprimer les lignes dans la feuille « Filtered Data SAP » avec les mots qui se trouvent dans les feuilles Description et Description2.

Dans la feuille « Filtered Data SAP » Description se trouve dans la colonne C et Description2 dans la colonne E.

J’ai 2 boutons Filtre Description et Filtre Description2.

Bouton Filtre Description supprime les lignes avec des mots qui sont dans la feuille Description.

Et Bouton Filtre Description2 supprime les lignes avec des mots qui sont dans la feuille Description2

Des idées pour bien faire.

Merci de votre aide.

Salutations

Bonjour New_VBA8User,

Je te propose :

-De transformer ton tableau de la feuille "Filtered Data SAP" en un tableau "ListObject" : tu sélectionnes toutes les celulles avec les données (y compris la ligne entête), tu cliques sur "insertion" puis sur "Tableau" :

insertiontableau

tu coches "Mon tableau comporte des en-têtes" :

entetestableau

et OK.

-De créer un module et d'y insérer le code :

Sub ApplyFilter(zSelect As String)
    Dim oLO As ListObject
    Dim oRange As Range
    Dim oCell As Range

    Dim aCriteria() As Variant
    Dim lRowEnd As Long, i As Long, lCol As Long

    'Affecter une référence à la table de la feuille "Filtered Data SAP"
    Set oLO = ThisWorkbook.Worksheets("Filtered Data SAP").ListObjects(1)

    'Effacer tous les filtres actifs
    oLO.AutoFilter.ShowAllData

    'On charge le tableau de critères avec les valeurs contenues de la feuille
    lRowEnd = ThisWorkbook.Worksheets(zSelect).UsedRange.Rows.Count
    Set oRange = ThisWorkbook.Worksheets(zSelect).Range(ThisWorkbook.Worksheets(zSelect).Cells(2, 1), ThisWorkbook.Worksheets(zSelect).Cells(lRowEnd, 1))
    ReDim aCriteria(oRange.Rows.Count)
    i = 0
    For Each oCell In oRange
        aCriteria(i) = oCell.Value2
        i = i + 1
    Next

    'On récupère l'index de la colonne à filtrer
    lCol = oLO.ListColumns(zSelect).Index

    oLO.Range.AutoFilter lCol, aCriteria, xlFilterValues

End Sub

En complément, dans ton formulaire "Userform_MenuClean", tu ajoutes le code suivant :

Private Sub CommandButton_FiltreDescription_Click()
    ApplyFilter "Description"

End Sub

Private Sub CommandButton_FiltreDescription2_Click()
    ApplyFilter "Description2"
End Sub

Bonjour,

Est-ce que c'est possible de m'envoyer le fichier que vous avez utiliser, j'ai essayé mais ça ne marche pas.

Avec votre fichier d'exécution, je peux vérifier ou j'ai fait une erreur.

Merci d'avance.

Bonjour New_VBA_User,

Mon EXCEL de test en P.J.

9filtre-db-test.xlsm (165.29 Ko)
Rechercher des sujets similaires à "probleme vba filtrer donnees"