Critère de filtre

  • Initiateur de la discussion Ronan
  • Date de début
R

Ronan

Guest
Salut à toutes et à tous,
Je voudrai sélectionner une information en feuille N°1, et que cette information devienne le critère de mes filtres en feuille N° 2, 3, 4… ( Voir fichier en annexe ).
Si quelqu’un à une idée, elle était la bien venue.
Bonne fin de journée.
Ronan.
 

Pièces jointes

  • filtre.zip
    2.8 KB · Affichages: 14
  • filtre.zip
    2.8 KB · Affichages: 15
  • filtre.zip
    2.8 KB · Affichages: 11
L

Lord Nelson

Guest
Salut Ronan,

Tu pourrais la jouer comme ceci :

Dim Temp As String

Private Sub Worksheet_Activate()
Temp = Range("B1")
End Sub

Private Sub Worksheet_Calculate()
If Range("B1") <> Temp Then
Dim ST As String
Dim WS As Worksheet
ST = Feuil1.Range("B1")
For Each WS In Worksheets
If WS.Name <> "Feuil1" Then
WS.Range("A5").AutoFilter Field:=1, Criteria1:=ST
End If
Next
Temp = Range("B1")
End If
End Sub

A chaque changement de valeur dans la cellule B1, les feuilles 2 à 6 reçoivent le critère de filtrage contenu dans B1.

A+
LN
 

Pièces jointes

  • Filtres_LN.zip
    9.6 KB · Affichages: 17
D

Dugenou

Guest
Lord Nelson : you are great !

Depuis longtemps je révais d'un truc comme ça ! !

Mais je suis une tache en vba : explique moi comment ça se fait qu'il n'est pas nécessaire de lancer la macro pour qu'elle s'exécute à chaque fois qu'on change le critère de la feuille 1 !!

pousserais tu jusqu'a mette des remarques d'explication pour chaque ligne de ces private subs ?

merci d'avance

Jean yves
 
L

Lord Nelson

Guest
Bonsoir à tous et merci,

Je vais essayer d'expliciter le code de la feuille 1 :

'En code général de la feuille 1, on déclare une variable pour la comparer au contenu de la cellule B1 :
Dim Temp As String
'Initialisation de la variable Temp au démarrage de la Feuille 1
Private Sub Worksheet_Activate()
Temp = Range("B1")
End Sub

'On interroge l'évènement Calculate de la feuille 1 pour vérifier la valeur de B1
'En effet, B1 devient différent de notre variable Temp lorsque qu'un calcul est effectué en application de sa formule =RECHERCHE.
'Donc, lorsque B1 a changé, il nous faut passer l'info aux feuilles 2 à 6
'Sachant que toutes les feuilles d'un classeur appartiennent à l'objet WorkSheets,
'une boucle For Each...Next permet de visiter chacune des feuilles pour
'leur passer ST (Contenu de B1 dans la feuille 1) pour actionner leurs filtres.

Private Sub Worksheet_Calculate()
If Range("B1") <> Temp Then
Dim ST As String
Dim WS As Worksheet
ST = Feuil1.Range("B1")
For Each WS In Worksheets
If WS.Name <> "Feuil1" Then
WS.Range("A5").AutoFilter Field:=1, Criteria1:=ST
End If
Next
Temp = Range("B1")
End If
End Sub

'Enfin, on réinitialise la variable Temp avec la nouvelle valeur de B1 et l'on
'reste dans l'attente d'un nouvel évènement Calculate susceptible de changer le filtre.

A bientôt pour de nouvelles aventures !
LN
 
B

BocBoc

Guest
Salut,

J ai un peu le meme pb pour associer un critere de tri mais se serait plutot avec des chiffres

Voir pour les details:

http://www.excel-downloads.com/html/French/forum/messages/1_101768_101768.htm

Peux tu me filer un petit coups de main Lord Nelson.....!??

Merci d'avance
 
@

@+Thierry

Guest
Bonjour Ronan, Jean Yves, mon cher Amiral ! Re BocBoc

Inutile de faire un ram dam dans tout le Forum ! Si tu t'étais expliqué clairement dans ce fil au lieu de t'obstiner à répondre "çà ne fonctionne pas", "C'est chiant"...:

=> Lien supprimé

Tu as la réponse dans cet autre Fil :

=> Lien supprimé

Bonne Journée et désolé pour le dérangement Ronan, Jean Yves et LN.
@+Thierry
 

Discussions similaires

Réponses
69
Affichages
4 K

Statistiques des forums

Discussions
312 467
Messages
2 088 680
Membres
103 918
dernier inscrit
comite des fets allonzier