Macro sélection de tableau
Bonjour,
Sur le fichier test ci dessous, j'ai une macro dans la feuille 1 qui sélectionne mon tableau puis trie les données selon les critères souhaités. Jusqu'ici pas de problème mais dans le code on voit que la macro sélectionne jusqu'à la ligne 56, et moi j'aimerais rendre le truc plus flexible en codifiant que la macro doit aller chercher automatiquement jusqu'à la dernière ligne qui contient des données, je crois que c'est faisable mais je n'arrive pas à le faire...
Sur la feuille 2 c'est un peu le même principe, je sélectionne le tout pour intégrer des sous-totaux, cela semble correct quel que soit le nombre de lignes que contient le tableau, est-ce bien exact?
Merci pour votre attention
bonjour
suggestion sans VBA :
clic dans ton tableau, menu Données créer liste
désormais on peut trier ou filtrer d'un clic dans les flèches grises de la ligne 1
les totaux se font dans un TCD, avec ou sans le détail par ligne. Tu saisi faire ?
amitiés
Bonjour,
Ceci n'est qu'un petite partie du fichier d'origine, j'ai des tableaux similaires dans une multitude de feuille différentes, d'où l'utilité de juste pouvoir appuyer à un endroit pour trier le tout (le fichier vient ensuite s'enregistrer tout seul en PDF sur le bureau, ce qui est très pratique).
Le fichier tel qu'il est maintenant avec un code de ce type fonctionne, le soucis c'est quand le nombre de lignes va changer, moi je peux adapter le code mais mes collègues à qui j'aimerais adapter le fichier (ils auront d'autres colonnes, d'autres indicateurs) n'ont pas eux les connaissances pour aller toucher au code.
Et je pose cette question par rapport à ce fichier pour pouvoir adapter aussi la solution sur d'autres fichiers que j'utilise.
Anthony
Bonjour,
Essaie ainsi :
Public Sub SortData()
Dim rngData As Range, lastRow As Long, lastColumn As Long
With ActiveSheet
lastColumn = .Cells(2, .Columns.Count).End(xlToLeft).Column
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row - 2 'pour ligne total
Set rngData = .Cells(2, 1).Resize(lastRow - 1, lastColumn)
With .Sort
.SortFields.Clear
.SortFields.Add Key:=rngData.Cells(1, 1), SortOn:=xlSortOnValues, Order:=xlDescending
.SortFields.Add Key:=rngData.Cells(1, 5), SortOn:=xlSortOnValues, Order:=xlDescending
.SetRange rngData
.Header = xlYes
.Apply
End With
End With
End SubMerci cela fonctionne bien sur le fichier test, je vais voir si je parviens à intégrer et faire fonctionner le code sur mon plus gros fichier
Merci encore pour votre réponse,
Anthony