Filtrer une colonne suivant la valeur d'une cellule

Johann60

XLDnaute Nouveau
Coucou à toutes et à tous,

Johann et ses petits problèmes de la nuit....

Et oui, une fois de plus, je cale sur mon tableau.
Quelqu'un parmis vous, a peut-être la solution ?
En espérant que ça soit possible...

Voici donc mon souci :

Objectif => Filtrer une colonne suivant la valeur d'une cellule.


Info sur mon tableau :

Dans cette feuille, j'ai en cellule C2, le nom du fichier Excel actuellement ouvert. Ce nom apparaît sans son extension (*,xlsm).

Pour information, le nom affiché en cellule C2 sera obligatoirement présent à un moment ou à un autre dans la colonne C.


J'ai pour l'instant simplement crée un bouton ainsi qu'une macro ***(vide je précise... lol)***

Résultat souhaité :

J'aimerais savoir s'il est possible que mes données de la colonne C, soient automatiquement filtrées par rapport au nom affiché en cellule C2 ?

Soit, en utilisant une macro affectée au bouton présent sur cette feuille,
Soit, et c'est encore mieux pour moi, que le filtre se fasse automatiquement à l'ouverture du fichier.

J'ai cherché longuement déjà mais sans succès hélas....
Snif....

Au secours

D'avance MERCI

Johann

(PS: Ci-joint, mon fichier d'exemple)
 

Pièces jointes

  • Johann60-01.zip
    182.1 KB · Affichages: 93

DoubleZero

XLDnaute Barbatruc
Re : Filtrer une colonne suivant la valeur d'une cellule

Bonjour, Johann60, le Forum,

Si chaque onglet doit être filtré selon la valeur de C2 - onglet "Feuil1", un essai avec ce code, placé dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
Dim w As Worksheet
For Each w In Worksheets
    w.Range("b4").CurrentRegion.AutoFilter Field:=2, Criteria1:=Sheets("Feuil1").Range("c2")
Next
End Sub

A bientôt :)
 

Johann60

XLDnaute Nouveau
Re : Filtrer une colonne suivant la valeur d'une cellule

Bonjour à toutes et à tous,
Bonjour DoubleZero,

Je viens de tester ton code. C'est génial, j'arrive presque à mon souhait.

Tout d'abord, un grand MERCI pour ton aide. Je n'obtiens pas encore le résultat final désiré mais je m'en approche grandement.
Et je sais déjà qu'à défaut de pouvoir affiner ce code à mon goût, celui-ci sera dans son état actuel, me sera d'une aide très précieuse.


J'aimerais cependant pouvoir apporter une légère modification. Si toutefois cela est possible bien entendu... lol

Une fois le code copié dans ThisWorkbook (comme indiqué),
je souhaiterais qu'il ne s'applique qu'à certaines feuilles de mon choix.


Je peux m'arranger pour placer les feuilles concernées par le filtrage les unes à la suite des autres si besoin est.
Mais plusieurs feuilles dont la première ainsi que la dernière ne doivent pas être concernées par l'application de ce filtre.

Débutant comme je suis (et oui, il faut dire ce qui est... lol), me suis dit :

Facile, y'a qu'à supprimer ''Next'' dans le code... (ahahahaha....)

Et non hélas

Puis-je à nouveau solliciter l'aide d'un utilisateur plus chevronné que moi ?

D'avance merci

Johann
 

DoubleZero

XLDnaute Barbatruc
Re : Filtrer une colonne suivant la valeur d'une cellule

Re-bonjour,

... je souhaiterais qu'il ne s'applique qu'à certaines feuilles de mon choix...

La macro s'applique à l'ensemble des onglets compte tenu de la mention portée sur le bouton présent en Feuil1 :

attachment.php

Si deux onglets doivent être exclus de la procédure, cette dernière peut être modifiée comme suit :

VB:
Private Sub Workbook_Open()
Dim w As Worksheet
For Each w In Worksheets
'Remplacer Framboise et Cerise par les noms réels !
    If w.Name <> "Framboise" And w.Name <> "Cerise" Then
    w.Range("b4").CurrentRegion.AutoFilter Field:=2, Criteria1:=Sheets("Feuil1").Range("c2")
    End If
Next
End Sub


En cas de difficulté, ne pas hésiter à lancer un appel au secours.

Bon courage et à bientôt :)
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    16 KB · Affichages: 410
  • Capture.JPG
    Capture.JPG
    16 KB · Affichages: 428
  • Capture.JPG
    Capture.JPG
    16 KB · Affichages: 436

Johann60

XLDnaute Nouveau
Re : Filtrer une colonne suivant la valeur d'une cellule

Re DoubleZero,

Et oui, l'heure tardive de mon premier post y est sans doute pour beaucoup.

Excuses moi, j'aurais du rectifier le texte de mon bouton avant d'envoyer le post.

En tous cas, merci pour ton aide, j'arrive à obtenir le résultat souhaité.

Mon problème étant résolu, je te remercie vivement pour ton soutien.

Encore un grand Merci à toi.

Excellente journée

Johann
 

Johann60

XLDnaute Nouveau
Re : Filtrer une colonne suivant la valeur d'une cellule

Bonsoir,

Je me permet de revenir à nouveau içi.

Et oui, je rencontre encore un souci.... Snif

J'ai parfaitement réussi à utiliser ce code en l'exécutant à l'aide d'un bouton affecté à une macro :

Sub Filtrer_Selection()
' Filtrer les colonnes C sur certaines feuilles du classeur
Dim w As Worksheet
For Each w In Worksheets
'Indiquer le nom des feuilles à ne pas filtrer !
If w.Name <> "Tendance" And w.Name <> "Résultats" Then
w.Range("b4").CurrentRegion.AutoFilter Field:=2, Criteria1:=Sheets("Tournois").Range("c2")
End If
Next
End Sub

En revanche, je n'arrive pas à exécuter ce code automatiquement à l'ouverture du fichier.

Si j'ai tout bien compris, c'est en l'insérant dans ThisWorkbook ?

Pour information, j'ai déjà dans ThisWorkbook ce code qui me ferme automatiquement le fichier au bout de 30 secondes :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime Temps, "FermerClasseur", , False
On Error GoTo 0
End Sub

Private Sub Workbook_Open()
Temps = Now + TimeValue("00:00:30")
Application.OnTime Temps, "FermerClasseur"
End Sub



Pour info, mon fichier pèse environ 30Mo. Il met donc un petit moment avant de s'ouvrir entièrement. Idem pour le filtrage des données sur les feuilles désirées (5 feuilles au total avec 20 000 lignes chacunes)

Je pense que l'opération prend moins de 3 minutes entre le debut d'ouverture et la fin du filtrage.


Mon but est de pouvoir ouvrir le fichier, que le filtrage se fasse tout seul (toujours en rapport avec le nom de la cellule), et que ce fichier se referme seul après 30 secondes.


Es-ce possible ?

D'avance merci

Johann
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 233
Membres
103 497
dernier inscrit
JP9231