Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA - Filtrer Colonnes par son nom plutôt que son emplacement

  • Initiateur de la discussion Initiateur de la discussion Piloul
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

Piloul

Guest
Bonjour,

Je reviens à nouveau faire appel à votre génie !

Je suis sur que c'est tout bête mais je n'arrive pas à adapter le code ci-dessous afin qu'au niveau "Field" ce ne soit pas le numéro de la colonne que je veuille filtrer mais plutôt son nom "Nom"

ActiveSheet.Range("$A$1:$DZ$1" & Range("A" & Rows.Count).End(xlUp).Row).AutoFilter Field:=5, Criteria1:="Nicolas"

j'ai tenté de faire ça mais non 😛 :

ActiveSheet.Range("$A$1:$DA" & Range("A" & Rows.Count).End(xlUp).Row).AutoFilter Field:="Nom", Criteria1:="Nicolas"

Ma question est donc: comment faire pour filtrer "Nicolas" dans la colonne "Nom" suivant l'entête de la colonne et non son emplacement ? car la colonne "Nom" peut bouger suivant qui fait l'extraction... ça serait trop simple sinon 😀

Mon but final étant de supprimer les critères sélectionnés puis de repartir sur une autre colonne pour faire un autre filtre et procéder à la même opération... et ça plusieurs fois. Je passerai grâce à cela d'un tableau de 8000 lignes à 300 lignes. Un bon programme d'amaigrissement 😉

Merci par avance pour votre aide

Nico
 
Re : VBA - Filtrer Colonnes par son nom plutôt que son emplacement

Bonjour,

suivant le nom de l'entête de colonne, je ne sais pas .

Mais une solution est de définir une plage nommée (par exemple Plage_Nom) puis d'utiliser le code:

ActiveSheet.Range("$A$1:$DA" & Range("A" & Rows.Count).End(xlUp).Row).AutoFilter Field:=Range("Plage_Nom").Column, Criteria1:="Nicolas"


Si une colonne est ajoutée avant cette colonne, les références de la plage nommée sont décalées automatiquement.

A+
 
Re : VBA - Filtrer Colonnes par son nom plutôt que son emplacement

Merci pour ton aide !
Je vais essayer de faire quelque chose avec ta solution 🙂

Ce qui me gêne c'est qu'il y a une grosse partie manuelle où il faut que je renomme les entêtes de colonne une à une, sachant que j'en ai une vingtaine à filtrer ça risque de prendre un peu de temps malheureusement :/

Avec VBA on doit être capable de pouvoir sélectionner une valeur précise non ? Sans repartir de ma proposition, est ce que vous auriez une solution différente ?

----------------------------------------------------
Je viens de trouver ceci qui marche parfaitement, mais avec un TCD :

With ActiveSheet.PivotTables("PivotTable9").PivotFields("Nom")
.PivotItems("Nicolas").Visible = True
End With

Mais je ne peux pas faire de TCD pour mon tableau et m'amuser à cocher les 150 colonnes de mon tableau, ça risque d'être un peu long 😛

Si cela marche avec un TCD, il doit y avoir un moyen de le faire en dehors non ?

Merci

Nico
 
Dernière modification par un modérateur:
Re : VBA - Filtrer Colonnes par son nom plutôt que son emplacement

re,

c'est parce qu'une cellule fait partie d'une 'structure' qu'on peut la retrouver comme vous précisez
soit dans un TCD
soit dans un tableau (au sens excel 2007)

un lien pour la gestion des tableaux Les tableaux dans Excel 2007
un pour la partie VBA Ce lien n'existe plus

Sinon une autre solution pourrait consister à utiliser find sur la ligne d'entête de colonne pour trouver la cellule contenant "noms" .

Il existe peut-être d'autres solutions ?

Bonne suite
 
Re : VBA - Filtrer Colonnes par son nom plutôt que son emplacement

Bonsour®
nommer automatiquement les colonnes selon le nom de l'entete :
sélectionner les colonnes souhaitées...
Ctrl+Maj+F3
exemple :
 

Pièces jointes

  • Capture.JPG
    83.3 KB · Affichages: 244
  • Capture.JPG
    83.3 KB · Affichages: 212
Dernière édition:
Re : VBA - Filtrer Colonnes par son nom plutôt que son emplacement

Merci beaucoup à vous deux ! je vais tester tout ce que vous me dites.
La piste "find" va être mon premier test !

Si je trouve la solution qui fera mon bonheur je vous tiens au courant 🙂

Bonne journée
 
Re : VBA - Filtrer Colonnes par son nom plutôt que son emplacement

J'ai la solution !

Alors ce que j'ai fait grâce aux différentes pistes que vous m'avez donné :
- J'ai converti mon tableau en table (pour que ça fasse parti d'une structure comme le TCD --> merci PAF pour la piste)
- Et grace au lien Ce lien n'existe plus j'ai pu adapter ce que je voulais.

Ce qui donne donc :

Sub Filtre ()

'Filtre "Nicolas" sur la colonne "Nom" qui se trouve dans la "Table1"
ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=Range("Nom").Column - 1, Criteria1:= _
"Nicolas", Operator:=xlAnd
'Supprime le résultat
Range("A2:A" & Range("A" & Rows.Count).End(xlDown).Row).SpecialCells(xlCellTypeVisible).EntireRow.Delete
'Enlève le filtre existant
Rows("1:1").Select
ActiveSheet.ShowAllData

End Sub

En espèrant que ça pourra servir à d'autres 🙂

Bonne journée à tous.

Nicolas
 
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
8
Affichages
612
A
Réponses
2
Affichages
975
AntoineLTO
A
J
Réponses
3
Affichages
5 K
O
Réponses
5
Affichages
2 K
A
Réponses
8
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…