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