Fonction de tri
Salut tout le monde
J'ai un petit blocage sur Excel, d'habitude je travail sur Google Docs car j'ai besoin de ces fonctions de partage. Je suis récemment passé sur Excel car j'ai besoin de créer un macro et que le Javascript de Google Docs est trop galère...
Enfin bon tout ça pour dire que j'ai converti mon fichier sur Excel et que tout marche sauf une fonction : la fonction "sort"
Sur Google Docs je me servais de la fonction sort pour trier les données... J'avais un tableau de valeur brut pour les données d'un jeu sur une page : de F8 à F107 j'avais les pseudos, de G8 à G107 j'avais une première donnée, dans H un deuxième et dans I une troisième.
Sur une autre page j'avais des Classements de ces données. Avec trois tableaux de deux colonnes avec à chaque fois : pseudo et donnée un, pseudo et donnée deux, pseudo et données trois. La fonction sort que je tapais dans la première ligne où je voulais qu'il mette les pseudos triés faisait l'action suivante : Elle allait prendre les données 1, les triés par ordre décroissant et mettait les pseudo correspondant.
Voici la fonction sur google docs : sort('Tri des données'!F8:F138;'Tri des données'!H8:H138;False)
Si quelqu'un pouvait me donner une idée pour faire de même sur Excel
Merci d'avance
Bonjour Farrell,
Alors je suis pas sûr, mais tu as les données (les valeurs à partir des quelles tu classes) dans la même feuille?
Parce que sinon, ça va être moins rigolo avec Excel (de ce que j'en sais en tout cas!)
Si tout est au même endroit, tu cliques dans le ruban sur "Données", puis "Trier" et là t'as une petite fenêtre qui apparaît pour régler tout ça!
Si tu veux le faire via une macro pour automatiser, un petit coup d'enregistreur de macro et zou!
Au passage, je te met le code de ce que j'utilise en général pour le classement (je viens de l'utiliser 3 fois ce matin...) :
Dim RangPrice, RangTotal As String
Dim x As Long
'modif à faire : Nom de feuille (pour moi c'est : Data )
x = Worksheets("Data").Range("A1").End(xlDown).Row
'modif à faire : V
RangTotal = "A1" & ":" & "V" & x 'j'ai des données jusquà V
'on nettoie les filtres
ActiveWorkbook.Worksheets("Data").Sort.SortFields.Clear
'la tu choisis les colonnes grace auxquelles tu veux trier
'tu n'as qu'a modifier ici
RangObject = "A1" & ":" & "A" & x
RangDate = "L1" & ":" & "L" & x
RangOrder = "N1" & ":" & "N" & x
RangArticle = "S1" & ":" & "S" & x
RangPrice = "U1" & ":" & "U" & x
'on entre les filtres par importance decroissante
'tu enlèves si y en a trop!
ActiveWorkbook.Worksheets("ExtractData").Sort.SortFields.Add Key:=Range(RangObject), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("ExtractData").Sort.SortFields.Add Key:=Range(RangDate), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("ExtractData").Sort.SortFields.Add Key:=Range(RangOrder), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("ExtractData").Sort.SortFields.Add Key:=Range(RangArticle), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("ExtractData").Sort.SortFields.Add Key:=Range(RangPrice), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
'et la tu appliques le tri
With ActiveWorkbook.Worksheets("ExtractData").Sort
.SetRange Range(RangTotal)
.Header = xlYes 'xlNo si tu n'as pas d'entête
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Merci pour ta réponse
Les données bruts sont toutes sur une même page mais je les classes dans une autre .
Je test ton macro dès que j'ai le temps
Oki, bah si ça marche, pense à venir valider la réponse avec le petit bouton dédié en haut à droite de chaque post.
(faut que t'adaptes 2 3 trucs quand même, genre le nom dans les WorkSheet("...") )
et BTW :
c'est unE macro, mais rien de dramatique!
Et c'est pour quel jeu que tu fais ça? Curiosité de geek
Fourmizzz, jeu de gestion en ligne