Classement données avec VBA (=ordre de tabulation)

Bonjour,

J'aimerais pourvoir modifier le classement de données dans une plage EXCEL en utilisant une USF avec une listbox un peu comme un ordre de tabulation.

1) Quand je clique sur "TRI" je voudrais afficher ma plage de données dans une listbox => ça c'est ok

2) Ensuite je voudrais pouvoir faire monter ou descendre dans la listbox l'item sélectionné.

3) Une fois que je clique sur "OK" sur la USF, la plage EXCEL est classée comme affichée sur la listbox1.

Je joins le début de mon projet.

18tri2-jb.xlsm (17.14 Ko)

Bonne journée

JB

Bonjour,

Dans le fichier joint, je t'ai codé les boutons "Monter" et "OK". Je te laisse en prendre connaissance et, si tu le veux, coder le bouton "Descendre".

23tri2-jb-2.xlsm (23.10 Ko)

Bonjour Cyflo,

Merci beaucoup, je vais tenter de m'en sortir seul pour coder le bouton "Descendre" ! Puis-je revenir vers vous si besoin ?

Bonne journée

JB

Bonjour,

J'ai tenté mais je n'ai pas réussi à déterminer le code pour le bouton "Descendre"

Voici ce que j'ai codé:

' Code associé au bouton Descendre
Private Sub CommandButton4_Click()
Dim nItemLst As Long
Dim vValIdxSuiv As Variant
   With ListBox1
      ' S'assurer que l'on n'essaie pas de déplacer le dernier élément vers le bas, il y est déjà !
      If (.ListIndex <> ListCount) Then
         ' Récup de l'indice de l'élément à déplacer
         nItemLst = .ListIndex
         ' Récup de la valeur de l'élément suivant
         vValIdxSuiv = .List(nItemLst + 1)
         ' On permute les 2 éléments
         .List(nItemLst + 1) = .List(nItemLst)
         .List(nItemLst) = vValIdxSuiv
         ' On re sélectionne l'élément déplacé
         .ListIndex = nItemLst + 1
         ' On tope qu'il y a eu une modification
         pfMajListe = True
      End If
   End With
End Sub

J'ai un doute sur la ligne de code ci-dessous, je vais encore avoir besoin de votre aide s'il vous plait.

(.ListIndex <> ListCount)

Merci

JB

Bonjour,

Le doute est fondé mais tu y étais presque, ci-dessous ce qu'il faut corriger :

.ListIndex <> .ListCount - 1

Tu as omis le point devant la propriété ListCount et il faut ôter 1 car ListCount compte le nombre d'éléments de la liste de 1 à n, alors que ListIndex commence à l'index 0.

Sinon j'ai testé, la procédure que tu as écrite fonctionne impec

Bonjour,

C'est parfait merci beaucoup, je serai plus vigilent la prochaine fois lorsque je devrais créer du code !

Je bloque sur ce sujet, peut-être auriez-vous une piste ?Tri données Excel avec VBA selon liste

Bonne soirée et merci encore !

JB

Rechercher des sujets similaires à "classement donnees vba ordre tabulation"