Tri d'un tableau avec une liste déroulante

  • Initiateur de la discussion Initiateur de la discussion nitram22
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nitram22

XLDnaute Nouveau
Bonjour,

Merci à tous ceux qui nous aide sur ce forum!

Je voulais savoir si quelqu'un pouvait m'aider pour réaliser une macro qui permet d'afficher seulement des lignes d'un tableau si les valeurs d'une colonne sont comprises entre 2 bornes.

Le fichier joint est un outil pour gérer les tâches d'un projet et j'aimerais afficher dans l'onglet "Dashboard_Priorities" les tâches qui sont dans "Database_task" et dont le temps restant (colonne N de "database_Task") est soit entre maintenant et 2 jours, soit entre 2 jours et 7 jours soit entre 7 et 15 jours.

Ainsi en cliquant sur ma liste déroulante, j'aurais les lignes correspondantes qui seraient copiées et trié selon la colonne Urgence (Colonne T de Dashboard_Task).

Merci beaucoup d'avance !

Martin
 

Pièces jointes

Re : Tri d'un tableau avec une liste déroulante

Bonjour,
Quel est ton niveau pour les macros ?
Utilises-tu l'enregistreur de macro?
cheminement à suivre :
1- trier
1- filtrer database en fonction de la date
2- sélectionner la zone à copier
3- faire Edition/Atteindre... /Cellules.../cellules visibles seulement
4- copier coller
5- rétablir le tri d'origine
à placer en macro événementielle de Dasboard_Priorities changement de F2
si tu as besoin d'aide, n'hésite pas à demander
A+
 
Dernière édition:
Re : Tri d'un tableau avec une liste déroulante

Re,
Tu as de la chance, j'ai pu trouver un peu de temps
Dans Sheet4 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F2")) Is Nothing Then
        InputDP
    End If
End Sub
Dans un module :
VB:
Option Explicit

Sub InputDP()
    Dim DlignDP, DlignDT, Debut, Fin, AppCalcInitial
    
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    AppCalcInitial = Application.Calculation
    'neutralisation des calculs au cas où les tris auraient une incidence sur le résultat des formules + gain de temps
    Application.Calculation = xlCalculationManual
    
    'initialisation
    DlignDP = Sheets("Dashboard_Priorities").Cells(Rows.Count, 4).End(xlUp).Row
    DlignDT = Sheets("Database_Task").Cells(Rows.Count, 3).End(xlUp).Row
    Sheets("Dashboard_Priorities").Range("C6:M" & DlignDP + 1).Clear '+1 au cas où DlignDP = 5
    Select Case Sheets("Dashboard_Priorities").Range("F2")
    Case "Within 2 days"
        Debut = 0
        Fin = 3
    Case "Within 7 days"
        Debut = 2
        Fin = 8
    Case "Within 15 days"
        Debut = 8
        Fin = 16
    End Select
    
    Sheets("Database_Task").Activate
    With Sheets("Database_Task")
        On Error Resume Next
        .ShowAllData ' au cas où Database aurait un filtre déjà actif
        .Range("B5:U" & DlignDT).Sort Key1:=.Range("T5"), Order1:=xlDescending, _
                                Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
                                Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
        Selection.AutoFilter Field:=13, Criteria1:=">=" & Debut, _
                                Operator:=xlAnd, Criteria2:="<" & Fin
        On Error Resume Next 'évite de planter si aucune ligne visible
        .Range("B5:L" & DlignDT).SpecialCells(xlCellTypeVisible).Copy _
                                Destination:=Sheets("Dashboard_Priorities").Range("C6")
        'Remise en forme de Database
        .ShowAllData
        .Range("B5:U" & DlignDT).Sort Key1:=.Range("B5"), Order1:=xlAscending, Header:=xlGuess, _
                       OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                       DataOption1:=xlSortNormal
    End With
    
    Sheets("Dashboard_Priorities").Activate
    Application.Calculation = AppCalcInitial
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour