Trier horizontalement en VBA Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
cabinfi
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 12 juillet 2015
Version d'Excel : 2016FR

Message par cabinfi » 12 juillet 2015, 15:21

Bonjour,
dans un fichier Exel 97, j'ai 2 listes de valeurs (liste1 & liste 2)
Je voudrais trier chaque liste ligne par ligne du nombre le + petit au plus grand et cela de façon automatique.
J'imagine qu'il me faut faire une boucle du genre for i=Feuil1!D3 à i=Feuil1!F3 select données!B"i":D"i" en incrémentant i de 1
et faire de même pour la liste 2. Le pb est que, ne connaissant rien en VBA, je ne sais pas comment et ou créer cette macro. Quelqu'un peut-il m'aider? merci d'avance.
TestTri.xlsx
(11.26 Kio) Téléchargé 8 fois
c
cousinhub
Membre impliqué
Membre impliqué
Messages : 1'949
Appréciations reçues : 5
Inscrit le : 28 mai 2009
Version d'Excel : xl 2016

Message par cousinhub » 12 juillet 2015, 15:49

Bonjour,

:bv3:

Juste une petite précision...

Tu marques "Excel 97" (et dans l'énoncé, et dans ton profil)

Et tu enregistres en ".xlsx"

Tu utilises donc le convertisseur?

Si c'est le cas, et comme je n'ai plus 2003, le conseil que je pourrais te donner, c'est de faire un tri sur une plage, en ayant pris soin de démarrer l'enregistreur de macro, puis si tu n'arrives pas à faire la boucle, de reposter un fichier, avec le code généré.

Bon courage
1/ on se demande à quoi servent les correcteurs d'orthographe....
2/ Notre seule récompense est un "Merci".....
Avatar du membre
cabinfi
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 12 juillet 2015
Version d'Excel : 2016FR

Message par cabinfi » 12 juillet 2015, 16:05

Bonjour cousinhub,

j'utilise bien exel 97, pour l'extension, il me propose toujours ".xlsx". Tu veux une autre extension?
en utilisant l'enregistreur, cela me donne le code suivant:
Sub Tri()
'
' Tri Macro
'
' Touche de raccourci du clavier: Ctrl+t
'
Range("B12:D12").Select
ActiveWorkbook.Worksheets("données").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("données").Sort.SortFields.Add Key:=Range("B12:D12" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("données").Sort
.SetRange Range("B12:D12")
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
End Sub

le pb c'est que je voudrais que cela se face de Range("B12:D12") à Range("B20:D20 par exemple")
Avatar du membre
Banzai64
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'726
Appréciations reçues : 4
Inscrit le : 21 novembre 2010
Version d'Excel : 2003 FR (learning 2010 - 2013)

Message par Banzai64 » 12 juillet 2015, 16:06

Bonjour


Bonjour cousinhub

Fait avec 2003
A vérifier avec 1997 car peut-être incompatibilité du tri
Copie de cabinfi tri horizontal V001.xls
(49.5 Kio) Téléchargé 22 fois
Image
c
cousinhub
Membre impliqué
Membre impliqué
Messages : 1'949
Appréciations reçues : 5
Inscrit le : 28 mai 2009
Version d'Excel : xl 2016

Message par cousinhub » 12 juillet 2015, 16:09

Re-,

Bonjour Banzaï

@cabinfi

Vu le code généré, ce n'est pas 97, mais 2007...

Je te laisse découvrir le code de Banzaï (qui je n'en doute pas, te conviendra)

Bonne fin de journée

Edit, Code testé, fonctionnel sous 2013 (et malin, le fait de replacer le tri par défaut...)
1/ on se demande à quoi servent les correcteurs d'orthographe....
2/ Notre seule récompense est un "Merci".....
Avatar du membre
cabinfi
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 12 juillet 2015
Version d'Excel : 2016FR

Message par cabinfi » 12 juillet 2015, 16:17

Bonjour Banzaï,
et merci, ça marche impec, il ne me reste qu'à essayer de comprendre le code (en regardant les cours VBA)

cousinhub, je modifie ma version exel ds mon profil et merci à toi aussi pour tes réponse :)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message