Filtrer une colonne en fonction de la valeur d'une cellule

MathildeT

XLDnaute Nouveau
Bonjour,

Je cherche à filtrer automatiquement la colonne M en fonction de la valeur de la cellule F2 :
si dans F2 je rentre le chiffre 33, je souhaiterais que les cellules M10:M23 qui contiennent 33 soient filtrer automatiquement.
J'utilise Excel 2016. Je ne m'y connais pas en macros.
Est-ce que cela est réalisable? Si oui, pouvez-vous m'aider?
En vous remerciant,
 

gosselien

XLDnaute Barbatruc
re,

à copier dans le code de la feuille1 (ALT F11) prendre Feuille1 coller ceci

VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Me.Range("F2")) Is Nothing Then
Dim Plage As Range
Set Plage = Sheets("Feuille 1").Range("A7:M23")
  With Plage
   .AutoFilter field:=13, Criteria1:=[F2]
  End With
End If
End Sub
 

MathildeT

XLDnaute Nouveau
Merci pour votre réponse.
J'ai le message d'erreur suivant qui apparaît :
upload_2017-8-14_14-35-40.png
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@>MathildeT
J'ai modifié un peu le code proposé par gosselien (que je salue au passage ;))
et j'ai changé d'événement
Test OK sur le fichier joint dans le post
VB:
Private Sub Worksheet_Change(ByVal T As Range)
If Not Intersect(T, [F2]) Is Nothing Then
Range("A7:M" & Cells(Rows.Count, "M").End(xlUp).Row).AutoFilter 13, [F2]
End If
End Sub
 

MathildeT

XLDnaute Nouveau
Bonjour Staple1600,

Merci beaucoup cela fonctionne.
Dernière petite question : comment est-ce que je fais pour appliquer cela pour les autres onglets de mon classeur sachant que la colonne à filtrer et la cellule référence ne sont pas forcément les mêmes?

Merci.
 

Si...

XLDnaute Barbatruc
Bonjour

Bien que certains ne daignent pas me parler de mes propositions* … un autre code que tu peux copier dans les pages de codes des feuilles voulues en adaptant les 2 éléments clés :
VB:
Private Sub Worksheet_Change(ByVal R As Range)
  If Not Intersect(R, [F2]) Is Nothing Then [M6:M9999].AutoFilter 1, [F2]
End Sub

[F2] désigne la cellule dont le contenu change en appelant cette macro et qui sert de critère
M6:M9999 désigne la plage à filtrer (les autres colonnes étant automatiquement aussi concernées).

Nota j'ai mis 9999 par flegme mais tu peux changer en fonction du nombre de lignes étudiées dans l'onglet.

*[détails]
Je réponds rarement à des problèmes ponctuels car les demandeurs travaillent dans un autre contexte que celui donné et donc réclament toujours des réajustements sans arrêts. Les novices s'accrochent souvent à la première proposition qui n'est pas toujours optimisée.
Je préfère donner d'autres points de vue quand cela me parait utile .

Stp, pas de commentaire l'ami Staple quand tu liras ceci après avoir bien digéré ;) .
[/c'est dit quand même]
 

MathildeT

XLDnaute Nouveau
Bonjour,

Merci pour vos réponses mais je n'y arrive toujours pas. Je ne comprend pas pourquoi ne comprenant pas le langage.
Je remets le classeur avec les différentes feuilles. Si vous voulez encore bien m'aider un peu?
 

Pièces jointes

  • Classeur.xlsx
    419.4 KB · Affichages: 52

gosselien

XLDnaute Barbatruc
Bonjour,

La ligne Set Plage = Sheets("Feuille 1").Range("A7:M23") ne peut fonctionner puisque cet onglet est "Fr"
ensuite , il est VIVEMEMENT conseillé de ne pas fusionner les cellules..
d'autre part, il faut un titre à chaque colonne !
A mon avis il faut repenser ça sous forme de 1 colonne = 1 donnée et les dates par dans une ligne mais dans une colonne , et pas écrites en texte mais sous forme de date avec le format date bien sur...

P.
 

merinos

XLDnaute Accro
Bonjour Mathilde,
Salut au fil,

Je regarde le dernier fichier... et je vois que plein de cellules des colonnes a filtrer reçoivent la valeur de F2...
donc je veux filtrer la semaine 15, il y en a 5 ... et je reçois 17 résultats...

Pour moi tu as intérêt a trouver une autre méthode pour remplir la colonne M...
(du style F2: semaine actuelle et M2 filtre)

Bernard
 

Dugenou

XLDnaute Barbatruc
Bonjour,
Toujours un peu dangereux de demander une macro si on ne peut pas ensuite en assurer la maintenance.
un essai en pj
le code doit etre sur chaque feuille comme indiqué par Si,
Dans le code il faut adapter la partie M6:M9999 à la vraie colonne à filtrer : par exemple K6:K9999 pour les feuilles Ca et FE
Puisque vous avez deux colonnes qui filtrent (L et M) il a fallu changer aussi la partie Then [M6:M9999].AutoFilter 1, en Then [M6:M9999].AutoFilter 2,
car on utilise la deuxieme colonne de filtre
Cordialement
 

Pièces jointes

  • mathildeT.xlsm
    474.2 KB · Affichages: 92

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87