Rechercher la colonne et filtrer dessus

Bonjour,

J'ai un tableau Excel structuré, je recherche la colonne ou l'entête est prod 3A (ca cela marche) puis je veux filtrer sur cette colonne les valeurs non nul et la mon autofilter plante erreur 1004 "la méthode Autofilter de la classe Range à échoué."

Bon je suis autodidact en VBA et je me limite à recopier et adapter des bouts de code, mais la ... je seche

Je suis la dessus depuis 2 jours, j'ai chercher mais je n'ai pas trouvé de solution ou n'ai pas réussis à les faire fonctionner.

Voila mon code :

 Dim feuille As String, tableau As String
    Dim stRech As String, c As Range, Col As Integer

    feuille = "ARTICLES"
    tableau = "ARTICLES"

    Sheets(feuille).Activate
' trouver la colone prod 3A

        With Sheets(feuille)
        stRech = "prod 3A"
        If stRech <> "" Then
        'On fait la recherche dans la ligne 1 de Feuil1
            Set c = Sheets("Suivi").Rows(1).Find(stRech, LookIn:=xlValues, LookAt:=xlWhole)
                If Not c Is Nothing Then
                    Col = c.Column
                    Set c = Nothing
                    'MsgBox Col
                End If
        End If
        End With

    ActiveSheet.ListObjects("ARTICLES__2").Range.AutoFilter Field:=Col, Criteria1:="<>0"

Bonjour à tester

Dim feuille As String, tableau As String
Dim stRech As String, c As Range, Col As Integer

feuille = "ARTICLES"
tableau = "ARTICLES"

Sheets(feuille).Activate

' Trouver la colonne "prod 3A"
With Sheets("Suivi")
    stRech = "prod 3A"
    If stRech <> "" Then
        ' On fait la recherche dans la ligne 1 de la feuille "Suivi"
        Set c = .Rows(1).Find(stRech, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            Col = c.Column
            Set c = Nothing
        Else
            MsgBox "La colonne 'prod 3A' n'a pas été trouvée."
            Exit Sub
        End If
    End If
End With

' Vérifiez que Col a été défini avant d'appliquer le filtre
If Col > 0 Then
    ActiveSheet.ListObjects("ARTICLES__2").Range.AutoFilter Field:=Col, Criteria1:="<>0"
Else
    MsgBox "Aucune colonne valide trouvée pour le filtrage."
End If

Merci beaucoup, avec vos teste, je me suis rendu compte que col restait à 0 ?

Pour tout dire, mon code fonctionne, mais je prenais la première ligne de ma feuille, alors que la première ligne du tableau est en ligne 2.

J'ai simplement corrigé ma ligne :

Set c = Sheets("Suivi").Rows(2).Find(stRech, LookIn:=xlValues, LookAt:=xlWhole)

Il faut quand meme que j'améliore cela, pour que cela prenne en compte que le tableau, comme cela ce sera toujours la première ligne qui aura les entête de colonne.

1000x merci.

Bonjour à tous ,

Vous semblez utiliser un tableau structuré de nom ARTICLES sur la feuille de nom ARTICLES.

Dans ce cas, on peut utiliser le code suivant qui s'adapte automatiquement aux nombres de lignes du TS. Le tableau peut être n'importe où sur la feuille. Cliquer sur le bouton bleu.

Le code dans module1 :

Sub FiltrerNonNul()
Const NomFeuille = "ARTICLES", NomTS = "ARTICLES", NomColonne = "prod 3A"
Dim IndexChamp As Long
   With Sheets(NomFeuille).ListObjects(NomTS)      ' avec le tableau structuré NomTS
      If .ListRows.Count = 0 Then Exit Sub         ' si aucune ligne de données, on sort
      .Range.AutoFilter: .Range.AutoFilter         ' ôter un éventuel filtre actif
      On Error GoTo ERRnoCOL                       ' si on ne trouve pas la colonne recherchée
      IndexChamp = .ListColumns(NomColonne).Index  ' index du champ à filtrer
      .Range.AutoFilter Field:=IndexChamp, Criteria1:="<>0"    ' filtrer
   End With
   Exit Sub                                        ' sortie "normale" de la procédure
ERRnoCOL:      ' information en cas d'erreur
   MsgBox "'" & NomColonne & "' n'est pas un nom de colonne" & vbLf & _
      "du tableau structuré de nom '" & NomTS & "'" & vbLf & _
      "au sein de la feuille nommée '" & NomFeuille & "'.", vbCritical
End Sub

nota : Comme il est recommandé dans la charte du site, c'est tellement plus simple pour les répondants de travailler sur un petit classeur représentatif et anonymisé joint par le demandeur. Pensez-y la prochaine fois, merci .

Merci, je test ça dès lundi.

Merci

Ce code fonctionne à merveille.

Je note pour le fichier exemple.

Merci beaucoup

Rechercher des sujets similaires à "rechercher colonne filtrer dessus"