Résultat de lignes filtrées en tant que nouveau Range
Bonjour le forum !
J'ai de nouveau besoin d'un coup de pouce pour un problème de filtrage qui me prend la tête depuis le début de semaine. Ayant tendance à parfois m'entêter dans ma conception de macro, je fais peut-être fausse route, mais bon ... Pourtant, je suis sur que la solution existe mais je ne la trouve pas.
Voilà le problème : suite à un import de données d'une autre appli, je filtre en colonne F les lignes sur deux critères, valeurs à incrémenter ou décrémenter par rapport aux valeurs initiales de la colonne E.
Je filtre alors les lignes de chacun des critères en double-cliquant sur le titre de ma colonne (par un sub de type worksheet_BeforeDoubleClick). Jusqu'à là, tout va bien ...
Là ou cela se corse, c'est que les utilisateurs doivent appliquer un second filtre en double-cliquant sur le titre de la colonne J (colonne indiquant 3 régions géographiques), ceci afin de visualiser les uniquement les lignes les concernant (chaque utilisateur à sa région à produire). Le 1er double-clic, filtrant bien les lignes de la 1ere région dans le filtre initial des valeurs incrémentées ou décrémentées (en fonction de leur choix de départ). Mais lors du 2eme double-clic pour filtrer les demandes pour la 2eme région, la liste des lignes filtrées initialement n'étant plus la même, le résultat s'en trouve erroné.
Pardon, ça fait beaucoup de blabla pour peut-être pour pas grand chose car ma question est simple : peux t-on enregistrer le résultat des lignes affichées lors du 1ere filtre dans une variable, ceci afin que je puisse appeler cette variable en tant que Range initial pour le 2eme filtre.
Sachant que chaque double clic sur le titre de la colonne du 2eme filtre affiche des contenus de cellules de cette même colonne avec des noms de régions différentes, je rappelerai dans la macro la variable d'affichage des lignes filtrées initialement, et ceci à chaque double-clic.
Merci d'avance à ceux ou celles qui peuvent m'orienter dans cette démarche ...
J'ajoute à ma demande une partie de mon code, celui qui me permet de filtrer colonne F :
' Procédure pour filtrer les genres de productions (Up, Down, Tout)
If Not Application.Intersect(Target, Range("F3")) Is Nothing Then
Range("F4:F65536").Rows.Hidden = False
Cancel = True
LastLig = Cells(Rows.Count, 6).End(xlUp).Row
If Target.Value = "Action" Then
Target.Value = "Down" 'Renomme le titre de colonne en Down
Target.Interior.ColorIndex = 35
For i = LastLig To 4 Step -1
If Cells(i, 6) <> "Down" Then Rows(i).Hidden = True
Next i
Else
If Target.Value = "Down" Then
Target.Value = "Up" 'Renomme le titre de colonne en Up
Target.Interior.ColorIndex = 36
For i = LastLig To 4 Step -1
If Cells(i, 6) <> "Up" Then Rows(i).Hidden = True
Next i
Else
If Target.Value = "Up" Then
Target.Value = "Action" 'Renomme le titre de colonne en Action
Target.Interior.ColorIndex = 8
Range("F4:F65536").Rows.Hidden = False
End If
End If
End If
End IfC'est donc après chaque "Next i" que je dois enregistrer le résultat de l'affichage du filtre afin de l'utiliser dans mon 2eme filtre.
J'ai essayé avec des CurrentRegion et autres, mais pas moyen ...
Bonjour
Lors du double clic colonne J tu affiches toutes les lignes et que tu refasses ton "filtre" en tenant compte de la colonne F et de la colonne J
Un fichier serait un plus pour t'aider à trouver une solution
Content de te revoir Bonzai
Comme tu l'a demandé, j'ai copié une partie de mon fichier en PJ.
Quelques explications sur comment utiliser le fichier :
- La colonne "Action" donne la différence ce taille entre les colonnes D et E. Les productions sont alors établies en 2 critères (up et down).
- Le double-clic sur Action permet de filtrer les lignes en fonction de la production à faire.
- Si par exemple, on a choisi les "Down", on doit alors double-cliquer sur Région, ceci afin de choisir sa région à produire (et n'avoir par exemple que les lignes avec "Down" et "NE", ce qui n'est pas le cas).
En résumé, ce que je désire :
Colonne F => Le titre "Down" ne doit afficher que les "Down", idem pour les "Up"
Colonne J => Ne doit afficher soit qu'une région à la fois en correspondance avec soit tout les Up ou tout les Down. A chaque double-clic pour changement de région, on doit retrouver les lignes précédemment affichées par le filtre 1 (de la colonne F), soit les Up ou Down.
En résumé, à chaque changement du filtre J, l'affichage du filtre F doit mettre à disposition toutes les lignes de son option de filtrage.
A terme, toutes les lignes devraient avoir été affichées une fois par n° de client, quelque soit le filtre utilise ...
Chapeau Banzai !
J'ai déjà essayé plusieurs manières de coder, dont certaines avec lesquels j'ai fini avec des "usines à gaz", mais la tienne est vraiment impec. Je l'ai testé : rien à redire ...
Dès que je vais trouver le temps, je vais la décortiquer afin de bien la maitriser.
Merci et encore bravo !
Salut Banzai et le Forum !
J'ai compris la façon dont fonctionnait cette manière de filtrer, c'est vraiment génial.
Mais il me pose un gros problème: quand je partage le fichier pour les utilisateurs, dès que je tente de filtrer, j'obtiens le message d'erreur suivant : "Erreur d'exécution '1004': La méthode AdvancedFilter de la classe Range a échoué."
Je pense que ceci vient du fait que le résultat du filtre en Range "J1:K2", n'est accessible que dans le fichier Excel temporaire qui est ouvert localement sur le PC et que le partage par le réseau ne peut donc pas se faire ...
Est ce bien cela ? Comment contourner ce problème ?
En attendant un éclair de génie de votre part, je cherche moi-même ...
Bonjour
Désolé mais le partage de classeur je n'y comprend rien
Il ne te reste qu'à attendre une réponse d'une personne compétente
Si pas de réponse, clôtures ce post et ouvres un sujet avec ce problème
Tu as raison, je vais clôturer ce sujet là avant d'en ouvrir un autre.
Merci beaucoup pour ton aide ...