VBA Code pour filtrer une colonne avec un nom spécifique

Résolu/Fermé
Jerome - 14 août 2022 à 14:06
 Jerome - 14 août 2022 à 19:34

Bonjour,

J'ai créé un tableau sur Excel avec plusieurs colonnes. Voici une ligne de code me permettant de placer un filtre sur ma colonne 20 :

ActiveSheet.Range("$B$1:$U$11501").AutoFilter Field:=20, Criteria1:="Codé"

Hors mon tableau est dynamique et l'emplacement de ma colonne 20 peut évoluer et rendre tout faux. Je souhaiterais par conséquent remplacer le Field:=20 par Field:="Nom_de_ma_colonne"

Auriez-vous une idée ?

Merci pour votre aide

Cordialement

A voir également:

8 réponses

M-12 Messages postés 1331 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 284
14 août 2022 à 14:39

Bonjour, il suffit de nommer ta colonne par un Nom et de placer ce noms dans ta formule au lieu de la plage

1

Bonjour M-12

Je vous remercie pour votre retour. J'ai essayé ceci mais ça ne fonctionne pas

PI, GAMA est le nom de ma colonne

ActiveSheet.Range(GAMA).AutoFilter Field:=GAMA, Criteria1:="Codé"

Merci pour votre aide

Cordialement

0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
14 août 2022 à 15:20

Bonjour à vous deux,

il faut plutôt écrire :

ActiveSheet.Range("$B$1:$U$11501").AutoFilter Field:=Range("GAMA").Column, Criteria1:="2"
2

Bonjour,

Vous pourriez essayer avec ("GAMA")

Cordialement.

0

Re,

Oui en effet c'est plus simple je ne voulais pas abuser.

Voici le lien

https://www.cjoint.com/c/LHoofeTsiCN

Cordialement

0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
14 août 2022 à 16:19

C'est plutôt ainsi qu'il faut procéder pour nommer une colonne :

2

Oups au temps pour moi je ne l'avais pas fait dans le fichier joint

En voici un avec

 https://www.cjoint.com/c/LHooD32rRYN

Petite question, le fait d'avoir nommé ma colonne GAMA (qui va être dynamique et se déplacer) est ce que je pourrais le faire en VBA en cherchant la cellule ou il sera inscrit GAMA ?

Merci pour votre aide,

0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
Modifié le 14 août 2022 à 16:52

C'est parce que ton tableau ne commence pas en colonne A que ça met le bazar.

La colonne GAMA (=U) est la 21eme colonne, or dans ton tableau tu veux filtrer sur le 20eme critère et non pas à la colonne n°21.

ActiveSheet.Range("$B$1:$U$1").AutoFilter Field:=Range("GAMA").Column - 1, Criteria1:="Codé"
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question

Re bonjour ozone_,

Super je confirme que ça marche nickel. Désolé j'aurais dû le préciser en effet.

Petite question, saurais tu comment nommer ma colonne GAMA en VBA ?

Merci pour ton aide

Cordialement

0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
14 août 2022 à 18:23

Tu entends quoi par nommer la colonne GAMA ?

Pour l'appel c'est comme pour le filtre :

Cells(1, Range("GAMA").Column).value

Cette instruction permet de récupérer la valeur la première ligne de la colonne GAMA.

Cells(5, Range("GAMA").Column).Select

Et celle ci sélectionne la 5eme ligne de la colonne GAMA. 

1

Re bonjour,

Désolé pour mon manque de clarté. Pour que le code ci dessous fonctionne

ActiveSheet.Range("$B$1:$U$1").AutoFilter Field:=Range("GAMA").Column - 1, Criteria1:="Codé"

J'ai dû nommer la colonne où se trouve GAMA.

Du coup j'aimerais le faire en VBA. J'ai trouver cette boucle me permettant de trouver mon "titre", Cependant avoir l'info sur un msgbox ne m'intéresse pas. Ce que je voudrais c'est que dès qu'il a trouvé mon "titre" via la boucle, il sélectionne toute la colonne afin que je puisse la renommer ?

dim colonne, ligne as variant

ligne = 1
colonne = 1
do while cells (ligne, colonne) <> "titre" ' tant que la cellule située en ligne 2 et colonne 1 est différent de titre

colonne = colonne +1 'on ajoute 1 à colonne pour passer à la colonne suivante
loop

a=magbox("La colonne où se trouve titre est " & colonne)

Cordialement

0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
Modifié le 14 août 2022 à 19:02

Tu peux procéder ainsi :

Dim colonne As Long, ligne As Long

ligne = 1
colonne = 1

Do While Cells(ligne, colonne) <> "titre"  ' tant que la cellule située en ligne 2 et colonne 1 est différent de titre
    colonne = colonne + 1 'on ajoute 1 à colonne pour passer à la colonne suivante
Loop

a = magbox("La colonne où se trouve titre est " & colonne)
ActiveWorkbook.Names.Add Name:="GAMA", RefersTo:=Columns(colonne) ' Ajoute la colonne GAMA dans le gestionnaire de noms
1

C'est formidable ça fonctionne parfaitement.

Un sincère et grand merci pour ton aide et celles des autres

0

Bonjour à chacun d'entre vous,

Je vous remercie tous pour votre aide,

J'ai essayé ceci, mais j'ai une erreur d'exécution '1004' la méthode 'range' de l'objet_Global a échoué

ActiveSheet.Range("$B$1:$U$11501").AutoFilter Field:=Range("GAMA").Column, Criteria1:="2"

ActiveSheet.Range("$B$1:$U$11501").AutoFilter Field:=Range("GAMA").Column, Criteria1:="Codé"

ActiveSheet.Range("GAMA").AutoFilter Field:=Range("GAMA").Column, Criteria1:="2"

ActiveSheet.Range("GAMA").AutoFilter Field:=Range("GAMA").Column, Criteria1:="Codé"

Cordialement

-1
M-12 Messages postés 1331 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 284
14 août 2022 à 15:44

Tu ferais mieux de placer un fichier

Un p’tit classeur avec 10/15 données anonymisées serait mieux pour régler le soucis 

Allez dans http://cjoint.com
Cliquez sur "PARCOURIR" pour sélectionner le classeur
Clic le bouton "CREER LE LIEN"
Clic droit quand le lien est créé "COPIER LE LIEN"
Sur le post Clic droit "Coller".

1