Filtre suivant une cellule dans un autre onglet

Résolu/Fermé
mchotard Messages postés 415 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 18 mars 2024 - 26 oct. 2014 à 11:10
mchotard Messages postés 415 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 18 mars 2024 - 26 oct. 2014 à 20:24
Bonjour

Comment écrire une macro pour effectuer un filtre dans une feuille 2 par rapport à une cellule qui serait dans la feuille 1.

Merci à tout le monde
MC

6 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
26 oct. 2014 à 11:48
Bonjour MChotard, bonjour le forum,

la ligne ci-dessous filtre la colonne 3 (=C) de l'onglet Feuil2 avec comme critère la valeur de la cellule A1 de l'onglet Feuil1 :
Sheets("Feuil2").Range("A1").AutoFilter Field:=3, Criteria1:=Sheets("Feuil1").Range("A1").Value

tu adapteras à ton cas...
0
mchotard Messages postés 415 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 18 mars 2024 38
26 oct. 2014 à 12:20
Merci Thautherme c'est super, cela m'arrange tout à fait. Je ne voudrais pas abuser mais aurais-tu une solution pour un autre problème. J'ai un tableau avec des noms qui se répète chaque mois. Parfois je suis amené à ajouter d'autres noms. J'au une macro qui marche très bien pour insérer, les noms dans mon fichier général.
Ma question : est-il possible de générer automatiquement une liste des noms à partir de mon fichier général pour avoir une liste des noms sans doublon et à jour. Autrement dit si j'ajoute des noms dans mon fichier générale, je souhaite que ma liste soit mise à jour automatiquement âr une macro par ex.

Mois Nom ma liste
Janvier AAA AAA
Janvier CCC CCC
Janvier DDD DDD
Janvier EEE EEE
Janvier FFF FFF
Février AAA
Février CCC
Février DDD
Février EEE
Février FFF
Mars AAA
Mars CCC
Mars DDD
Mars EEE
Mars FFF

Merci si tu peux m'aider, mais ta première intervention me satisfait pleinement

A+
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
26 oct. 2014 à 12:56
Bonjour MChotard, bonjour le forum,

Essaie comme ça :
Public Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim CEL As Range 'déclare la variable CEL (CELlule)

Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter)
DL = O.Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 2 (=B) de l'onglet O
Set PL = O.Range("B2:B" & DL) 'définit la plage PL
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
D(CEL.Value) = "" 'alimente le dictionnaire D
Next CEL 'prochaine cellule de la boucle
'si C2 n'est pas vide, efface les annciennes données (l'ancienne liste)
If Range("C2").Value <> "" Then O.Range("C2:C" & O.Cells(Application.Rows.Count, 3).End(xlUp).Row).ClearContents
'renvoie dans la colonne C (à partir de C2) la liste du dictionnaire D sans doublons (=D.Keys)
O.Range("C2").Resize(D.Count) = Application.Transpose(D.keys)
End Sub

0
mchotard Messages postés 415 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 18 mars 2024 38
26 oct. 2014 à 18:54
Décidément tu es à la fois un pro et un rapide, grand merci. Ça marche super.
Une dernière demande et après je cesse de t'importuner. Est-il possible que ma liste (c2:c) puisse s'insérer dans une autre feuille que j'ai appelé "constantes".
Tu es formidable et mille fois merci
MC
0

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

Posez votre question
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
26 oct. 2014 à 19:00
Bonsoir MChotard, bonsoir le forum,

Remplace la fin de la macro par cette partie :

With Sheets("constantes") 'prend en compte l'onglet "constantes"
'si C2 n'est pas vide, efface les annciennes données (l'ancienne liste)
If .Range("C2").Value <> "" Then .Range("C2:C" & .Cells(Application.Rows.Count, 3).End(xlUp).Row).ClearContents
'renvoie dans la colonne C (à partir de C2) la liste du dictionnaire D sans doublons (=D.Keys)
.Range("C2").Resize(D.Count) = Application.Transpose(D.keys)
End With 'fin de la prise en compte de l'onglet "constantes"

0
mchotard Messages postés 415 Date d'inscription vendredi 6 mai 2011 Statut Membre Dernière intervention 18 mars 2024 38
26 oct. 2014 à 20:24
Génial et un très cordial merci.
J'ai tout ce qu'il me faut
A+
0