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,
à 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
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
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?
MathildeT
Pas trop dispo ce week-end pour poursuivre le coup de main
Espérons que gosselien repassera par ici ou que mes agapes familiales dominicales finiront plus tôt que prévu
@MathildeT
Les agapes étant terminées, je repasse par ici
Est-ce que tu peux reposter un classeur qui illustrera ces différentes colonnes et cellules références ?
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
où [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]
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?
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...
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)
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