XL 2016 RechercheV sur liste déroulante !

Jaykerz

XLDnaute Nouveau
Bonjour à tous,

Déjà un grand merci pour les personnes qui prendrons le temps de répondre à ma demande !

Je vais essayer d'être le plus précis possible sur ma problématique :

Nous pouvons voir sur le fichier que nous avons cellule B2 & B3 (Mois étudié et l'agence) qui est une liste déroulante.

Je cherche à actualiser le tableau automatiquement, c'est à dire que si je sélectionne le mois de Janvier et l'agence en question selon l'onglet "BDD CLIENTS AGENCE" cela affiche dans le tableau (Onglet top 20) la liste des clients et code client qui est rattaché (Voir onglet BDD CLIENTS AGENCE) selon le choix que je fais sur la liste déroulante cellule B2 & B3

L'idée est que je vienne compléter sous le même format dans l'onglet BDD CLIENTS AGENCE avec Mars et une nouvelle liste de 20 clients puis Avril.... qui chargera la liste selon le mois et l'agence de la liste déroulante

Exemple : Je choisis dans la liste déroulante cellule B2 & B3 : Cela me charge les 20 clients définis dans l'onglet "BDD CLIENTS AGENCE"
Je choisis Février : Cela me charge les 20 clients de Février

Bien évidemment je suis ouvert à toutes propositions et encore un grand merci pour votre aide !

Le fichier est en PJ !

Belle journée à tous.
 

Pièces jointes

  • TEST CLIENTS - TOP 20.xlsx
    119.4 KB · Affichages: 4

JHA

XLDnaute Barbatruc
Bonjour à tous,

Un essai avec décaler en modifiant le second onglet.
VB:
=INDEX(DECALER('BDD CLIENTS AGENCE'!$A$1;EQUIV('Top 20'!$B$3;'BDD CLIENTS AGENCE'!A:A;0)-1;EQUIV('Top 20'!$B$2;'BDD CLIENTS AGENCE'!$1:$1;0);20);LIGNE()-5)

JHA
 

Pièces jointes

  • TEST CLIENTS - TOP 20.xlsx
    116.7 KB · Affichages: 4

wDog66

XLDnaute Junior
Bonjour Jaykerz

Pourquoi utiliser RECHERCHEV()
alors qu'avec un TCD vous avez moyen de pouvoir le faire sans trop de soucis 🤔
1713947715089.png


Edit : bonjour JHA

A+
 

job75

XLDnaute Barbatruc
Avec ce code 100 clients sont filtrés :
VB:
Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
[B2].Name = "Mois"
[B3].Name = "Agence"
Application.EnableEvents = False
Range("A6:B" & Rows.Count).Delete
With Sheets("BDD CLIENTS AGENCE").[A1].CurrentRegion
    .Cells(2, 6) = "=(A2=Mois)*(B2=Agence)" 'critère
    .AdvancedFilter xlFilterCopy, .Cells(1, 6).Resize(2), [A5:B5] 'filtre avancé
    .Cells(2, 6) = ""
End With
Application.EnableEvents = True
End Sub
 

Pièces jointes

  • Liste filtrée.xlsm
    123.2 KB · Affichages: 4

Jaykerz

XLDnaute Nouveau
Bonjour à tous,

Déjà un grand merci à tous pour m'avoir accorder de votre temps et aussi pour les solutions apportées.

@JHA C'est exactement l'idée recherchée un grand merci pour votre travail et votre temps.

@wDog66 Merci pour ton travail et ton temps ! Je n'ai pas choisis de TCD car l'idée est d'actualiser cela sous forme de tableau automatique car ces clients vont changer de mois en mois donc l'idée était de rendre le fichier automatique si je colle des données vu que cela va être répétitif et cela sur énormément d'agence. :p

@job75 L'idée de limiter à 20 est que dans mes directives chaque agence doit se baser sur un top 20 de ces meilleurs clients qui vont changer de mois en mois, c'est pour cela que je parle de 20 clients. 😁 Merci également pour le partage de tes lignes de code qui vont pouvoir m'être utile sur différents sujets !

@sylvanu Merci pour ton travail et ton temps, c'est aussi exactement ce que je recherchais.

Merci à tous, mon problème est résolu grâce à vos différentes aides !

Vous souhaitant à tous une excellente journée, prenez soin de vous 😄
 

job75

XLDnaute Barbatruc
Avec la macro de mon post #6 les agences ne sont pas filtrées.

J'ai eu du mal à en trouver la raison.

En fait il ne faut pas nommer "Agence" la cellule B3 car c'est une en-tête de colonne.

En la nommant "Ag" plus de problème :
VB:
Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
[B2].Name = "Mois"
[B3].Name = "Ag"
Application.EnableEvents = False
Range("A6:B" & Rows.Count).Delete
With Sheets("BDD CLIENTS AGENCE").[A1].CurrentRegion
    .Cells(2, 6) = "=(A2=Mois)*(B2=Ag)" 'critère
    .AdvancedFilter xlFilterCopy, .Cells(1, 6).Resize(2), [A5:B5] 'filtre avancé
    .Cells(2, 6) = ""
End With
Application.EnableEvents = True
End Sub
Résultat : 20 clients sont filtrés.
 

Pièces jointes

  • Liste filtrée.xlsm
    123.3 KB · Affichages: 6

Discussions similaires