XL 2021 filtre et tri tableau avec macro

le___destin

XLDnaute Occasionnel
bonjour tous le monde
merci de m'aider a filtre et tri un tableau
merci d'avance
 

Pièces jointes

  • test.xlsx
    11.5 KB · Affichages: 7
Solution
Bonsoir à tous,
merci mais je veux un macro
Power Query est vraiment la solution la plus simple mais voici une macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dest As Range, nlig
Set dest = [R6] '1ère cellule du résultat
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
dest.Resize(Rows.Count - dest.Row + 1, 2).Clear 'RAZ
Workbooks.Add xlWBATWorksheet 'document auxiliaire
With ActiveSheet
    [A:P].Copy .[A1] 'copier-coller
    .UsedRange = .UsedRange.Value 'supprime les formules
    .Rows("1:5").Delete xlUp
    .UsedRange.Sort .Columns("P"), xlDescending, Header:=xlYes 'tri
    nlig = Application.CountIf(.Columns("P"), ">=100") + 1
    .Range("D1:D" & nlig).Copy dest...

job75

XLDnaute Barbatruc
Bonsoir à tous,
merci mais je veux un macro
Power Query est vraiment la solution la plus simple mais voici une macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dest As Range, nlig
Set dest = [R6] '1ère cellule du résultat
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
dest.Resize(Rows.Count - dest.Row + 1, 2).Clear 'RAZ
Workbooks.Add xlWBATWorksheet 'document auxiliaire
With ActiveSheet
    [A:P].Copy .[A1] 'copier-coller
    .UsedRange = .UsedRange.Value 'supprime les formules
    .Rows("1:5").Delete xlUp
    .UsedRange.Sort .Columns("P"), xlDescending, Header:=xlYes 'tri
    nlig = Application.CountIf(.Columns("P"), ">=100") + 1
    .Range("D1:D" & nlig).Copy dest 'copier-coller
    .Range("P1:P" & nlig).Copy dest(1, 2) 'copier-coller
End With
ActiveWorkbook.Close False 'ferme le document auxiliaire
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle est placée dans le code de la feuille et se déclenche quand on modifie une cellule quelconque.

Le tableau source doit commencer en ligne 6, le nombre de lignes est variable.

A+
 

Pièces jointes

  • test(1).xlsm
    19.2 KB · Affichages: 6

job75

XLDnaute Barbatruc
Bonjour le forum,

Si l'on préfère utiliser un bouton il suffit de modifier un peu la macro :
VB:
Sub Resultat()
Dim F As Worksheet, dest As Range, nlig
Set F = ActiveSheet
Set dest = F.[R6] '1ère cellule du résultat
Application.ScreenUpdating = False
dest.Resize(Rows.Count - dest.Row + 1, 2).Clear 'RAZ
Workbooks.Add xlWBATWorksheet 'document auxiliaire
With ActiveSheet
    F.[A:P].Copy .[A1] 'copier-coller
    .UsedRange = .UsedRange.Value 'supprime les formules
    .Rows("1:5").Delete xlUp
    .UsedRange.Sort .Columns("P"), xlDescending, Header:=xlYes 'tri
    nlig = Application.CountIf(.Columns("P"), ">=100") + 1
    .Range("D1:D" & nlig).Copy dest 'copier-coller
    .Range("P1:P" & nlig).Copy dest(1, 2) 'copier-coller
End With
ActiveWorkbook.Close False 'ferme le document auxiliaire
End Sub
A+
 

Pièces jointes

  • test(2).xlsm
    21.2 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour le__destin, le forum;

Les formules en colonne AM font référence à la colonne BW donc il faut copier la plage A:BW :
VB:
[A:BW].Copy .[A1] 'copier-coller
A+

Edit : pardon, le nom abdo est la plage BY9:BZ24, il faut l'inclure dans la copie :
VB:
[A:BZ].Copy .[A1] 'copier-coller
 

Pièces jointes

  • test(3).xlsm
    95.3 KB · Affichages: 4
Dernière édition:

Discussions similaires

  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
319
Réponses
16
Affichages
494

Statistiques des forums

Discussions
312 247
Messages
2 086 589
Membres
103 247
dernier inscrit
bottxok