Utilisation Autofilter

Bonjour,

Je suis amené à modifier un script autofilter. Ce script filtrait auparavant les lignes d'un tableau en fonction de la couleur du fond des cellules (1 même couleur par ligne) correspondant dans mon cas, à quatre types de chantiers.

  • Fonctionnel
  • Habitat
  • Travaux Spéciaux
  • Réhabilitation

Pour des soucis esthétiques, je souhaite enlever les couleurs des lignes.

Pour assurer le nouveau filtrage, les premières lettres des types de chantiers, ("F","H","TS", "R") seront inscrites dans la colonne i.

Voici le bout de code qui me semble correcte, pourtant j'ai un message d'erreur concernant la méthode sélect range : la méthode AutoFilter de la classe Range a échoué.

Public Sub fonctionnel2()
Workbooks("Filtre en fonction valeurs.xlsm").Sheets("Chantiers").Activate

    Application.ScreenUpdating = False
  '  Set objList = Workbooks("Filtre en fonction valeurs.xlsm").Sheets("Chantiers").ListObjects(1)
    Workbooks("Filtre en fonction valeurs.xlsm").Sheets("Chantiers").Range("I1").AutoFilter _
            Field:=1, _
            Criteria1:="F", _
            Operator:=xlFilterValues
 '   Set objList = Nothing

End Sub

Nota : Les filtres s'effectuent lors du click sur les boutons correspondants

Je vous aussi mon fichier.

Merci d'avance à ceux qui m'aideront

Batoine

Bonjour,

Je me permets de réactualiser le message.

Je n'arrive toujours pas à sélectionner la colonne dans laquelle le tris doit être fait. Je m'en remets à la communauté en espérant avoir une réponse.

Merci d'avance !

Bonne journée

Batoine

Bonsoir,

2 erreurs dans ton code :

Ce n'est pas sur le Range("I1") que tu filtres, mais sur le Range("I2").

Et lorsqu'on fait un filtre automatique, Excel rajoute automatiquement des filtres sur tous les titres de ta base de données, tant qu'ils sont contigus...

Ton code donne donc :

    Workbooks("Filtre en fonction valeurs.xlsm").Sheets("Chantiers").Range("I2").AutoFilter _
            Field:=9, _
            Criteria1:="H", _
            Operator:=xlFilterValues

Bonne soirée

Bonjour CousinHub,

Je reviens d'une longue absence pendant laquelle j'ai rédigé mon mémoire associé à ce projet. Je l'ai fini !

Merci ça fonctionne pour tous les boutons sauf un seul, celui "effacer le filtre de type".

J'obtiens une erreur 438 : "Propriété ou méthode non gérée par cet objet"

Après une recherche rapide grâce au site suivant https://msdn.microsoft.com/fr-fr/library/office/ff837833(v=office.15).aspx j'apprends que la propriété ShowautoFilter doit faire appel à un list objet. J'ai donc modifié mon code en écrivant celui là :

Public Sub Effacer_filtre_chantier2()

Workbooks("Filtre en fonction valeurs.xlsm").Sheets("Chantiers").Activate

  '  Workbooks("Filtre en fonction valeurs.xlsm").Sheets("Chantiers").Range("I2").ShowAutoFilter = False

    Set wrksht = Workbooks("Filtre en fonction valeurs.xlsm").Sheets("Chantiers")
    Set oListCol = wrksht.ListObjects("filtre_chantiers")

    Debug.Print oListCol.ShowAutoFilter

End Sub

Et j'obtiens l'erreur : l'indice n'appartient pas à la sélection. Pourtant tous les noms appelés dans le code sont bons.

Pouvez-vous m'éclairez sur le sujet ?

Merci d'avance.

Batoine

Bonjour, à tous,

Petit up pour espérer avoir une réponse...

Merci d'avance à ceux qui m'aideront !

Batoine

Rechercher des sujets similaires à "utilisation autofilter"