Classement dans une listview

  • Initiateur de la discussion Initiateur de la discussion Florian53
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Florian53

XLDnaute Impliqué
Bonsoir à tous je dispose d'un classement de trois personnes je voudrais savoir si se serait possible que quand je clique sur le bouton classement s'affiche dans la listeview le classement dans l'ordre en fonction de la place.

Merci à vous bonne soirée
 

Pièces jointes

Re : Classement dans une listview

Merci à toi c'est exactement ça mais je voudrais savoir a quoi correspond les lettres i, j ,k m, T, T1, T2? Ceci est pour mieux comprendre la prog afin de le réaliser au mieux pour mon application.

Merci à toi
 
Re : Classement dans une listview

Re,

Les lettres i,j,k,m sont des variables de type numériques.
T,T1,T2 sont des variables de type variant (pas de type défini)

Dans le code on fait une double boucle sur les colonnes du tableau (de 1 à 3) et on compare les valeurs. Si la valeur de la 1ère boucle est > à la valeur de la 2ème boucle alors on fait un transfert. Les éléments se mettent dans les variables T,T1,T2. Ensuite on remplace les éléments de la 1ère boucle par ceux de la 2ème. Enfin on donne les éléments des variables T,T1,T2 aux éléments de la 2ème boucle.

Heu je suis clair là 😱 pas sur ! C'est pas simple à expliquer.

Pour la variable m, elle correspond au nombre de ligne de la Listview

A+
 
Re : Classement dans une listview

Merci à toi, tu as était assezclair mais je ne comprend pas cette ligne là:

UBound(Tablo, 2)

a quoi coresspond le 2 et Ubound

j'ai vu que le 2 correspondait à "affiche la limite supérieure de la 2eme dimension"

Mais je ne comprend pas ce qu'il veule dire

Si par exemple je veux rajouter une ligne dans mon classement que je remplie les lignes de D8:F8

Puis utiliser ce code ci:

Sub AlimLw()

Dim Tablo, k As Long, m As Long
Dim i As Integer, j As Integer
Dim T, T1, T2, T3

m = 1
Tablo = Sheets("Feuil1").Range("D5:F8")
For i = 1 To UBound(Tablo, 2)
For j = 1 To UBound(Tablo, 2)
If Tablo(i, 2) > Tablo(j, 2) Then
T = Tablo(i, 1)
T1 = Tablo(i, 2)
T2 = Tablo(i, 3)
T3 = Tablo(i, 4)
Tablo(i, 1) = Tablo(j, 1)
Tablo(i, 2) = Tablo(j, 2)
Tablo(i, 3) = Tablo(j, 3)
Tablo(i, 4) = Tablo(j, 4)
Tablo(j, 1) = T
Tablo(j, 2) = T1
Tablo(j, 3) = T2
Tablo(j, 4) = T3
End If
Next j
Next i

For k = 1 To UBound(Tablo, 2)
With ListView1
.ListItems.Add , , Tablo(k, 3)
.ListItems(m).SubItems(1) = Tablo(k, 1)
.ListItems(m).SubItems(2) = Tablo(k, 2)
.ListItems(m).SubItems(3) = Tablo(k, 3)
End With
m = m + 1
Next

End Sub
 
Dernière édition:
Re : Classement dans une listview

Re,

Ubound(tablo,2) te donne le nombre de colonne du tablo. ici 3
Ubound(tablo,1) ou ubound(tablo) te donne le nombre de ligne du tableau : ici 3

Comme les deux expressions donnent le même résultat j'ai opté pour Ubound(tablo,2).

Mais si tu rajoutes des lignes il faut boucler sur le nombre de ligne du tableau comme ceci en remplacant Ubound(tablo,2) par Ubound(tablo,1)

Code:
Sub AlimLw()
Dim Tablo, k As Long, m As Long
Dim i As Integer, j As Integer
Dim T, T1, T2
  m = 1
  Tablo = Sheets("Feuil1").Range("D5:F8")
  For i = 1 To UBound(Tablo, 1)
      For j = 1 To UBound(Tablo, 1)
         If Tablo(i, 2) > Tablo(j, 2) Then
              T = Tablo(i, 1)
              T1 = Tablo(i, 2)
              T2 = Tablo(i, 3)
              Tablo(i, 1) = Tablo(j, 1)
              Tablo(i, 2) = Tablo(j, 2)
              Tablo(i, 3) = Tablo(j, 3)
              Tablo(j, 1) = T
              Tablo(j, 2) = T1
              Tablo(j, 3) = T2
         End If
      Next j
   Next i
 
   For k = 1 To UBound(Tablo, 1)
     With ListView1
       .ListItems.Add , , Tablo(k, 3)
       .ListItems(m).SubItems(1) = Tablo(k, 1)
       .ListItems(m).SubItems(2) = Tablo(k, 2)
     End With
     m = m + 1
   Next
 
End Sub

Edit: regarde ce lien, il parle des tableaux : ICI

A+
 
Dernière édition:
Re : Classement dans une listview

je te remercie je vais regarder ça de plus près car je t'avouerais que j'ai du mal a comprendre la fonction Ubound:

Mais je vais lire le lien pour mieux comprendre

car " Ubound(tablo,2) te donne le nombre de colonne du tablo. ici 3"

Ubound(tablo,2)=3 ? c'est ça en fait que je ne comprend pas encore merci à toi

Bonne soirée
 
Re : Classement dans une listview

Re,

La fonction Ubound permet de connaitre la plus grande dimension d'un tableau. (soit le nombre de ligne du tableau ou le nombre de colonne).
Elle renvoie donc un nombre.
Un tableau est défini par un nombre de ligne et un nombre de colonne.
Dans ton cas tu as un tableau à deux dimensions de 3 lignes (5,6,7) et 3 colonnes (D,E,F). (un tableau à une dimension est par exemple un tableau de x lignes mais d'une seule colonne)

Pour connaitre le nombre de ligne il faut utiliser Ubound(NomduTabeau,1). Le 1 n'est pas obligatoire)
Pour connaitre le nombre de colonne on utilise Ubound(NomduTableau,2).
Là le 2 est obligatoire.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Réponses
32
Affichages
784
P
Réponses
7
Affichages
959
Pilliars
P
  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
667
Réponses
2
Affichages
169
  • Question Question
Microsoft 365 Tableau
Réponses
5
Affichages
288
Retour