Explication @+Thierry's demo Pack 2

S

salim

Guest
Bonjour @+ Thierry et le Forum

Ce post concerne la démo "USF-ListBox-Sorted" du pack 2 sur laquelle j'ai plancher et essayer d'en comprendre le fonctionnement j'ai donc copier ce code et l'ai commenté cf PJ, l'objectif étant de te le soumettre pour constater d'éventuelles erreurs et de les corrigéesce fichier commenté et corrigé pourra ensuite servir à tout le monde c'est une manière comme une autre d'essayer de contribuer au partage de connaissance du Forum à mon niveau .
ps: Même si ce post s'adresse à @+Thierry normal c'est lui l'auteur vôtre contribution et bien sûr souhaitée et la bien venue.

@+ Salim
 

Pièces jointes

  • Analyse_code_Salim.zip
    8.7 KB · Affichages: 37
@

@+Thierry

Guest
Bonjour Salim, le Forum

Je comprends bien ta démarche et ta soif de connaissance, mais là franchement ça déborde largement de l'objectif et du cadre de ce Forum. Je suis le premier à être large en explication quand on me les demande, mais là on dirait presque que je suis prof d'informatique avec des corrigés à rendre !! lol

Non Salim tu es un chic contributeur, et je t'apprécie, mais là il ne faut pas s'égarer de la sorte !!!

Pour ta question en rouge concernant le Tab1 :

Dim ValMin As Integer, ValSup As Integer
Dim i As Integer, j As Integer, ii As Integer
Dim t1 As String
ValMin = LBound(Tab1)
ValSup = UBound(Tab1)
 For i = ValMin To ValSup
  For j = ValMin + ii To ValSup
   If Tab1(i) > Tab1(j) Then
    t1 = Tab1(j)
    Tab1(j) = Tab1(i)
    Tab1(i) = t1
   End If
  Next j
 ii = ii + 1
 Next i
ListBox1.List = Tab1
End Sub


Et bien avec cette boucle je fais un décalage volontaire sur ce Tab1, avec deux index le "i" et le "j", le "j" étant "sur-incrémenté avec "ii"... Donc en fait çà me permet de comparer si Tab1(i) > Tab1(j) et dans ce cas c'est Tab1(j) qui prend la place de Tab(i) en passant par la variable temporaire t1... Et ceci permet de classer les Item de ce Tab1 dans l'ordre.

PS : Dans la démo que tu as remontée, en fait il y a un résidu d'un tableau en 2 colonnes, c'est pour ceci qu'il y a un t2, qui s'avère inutile)

Voilà j'espère que celà te permettra de comprendre

Bonne Fin de Journée
@+Thierry
 
M

Michel_M

Guest
Salut Salim, Thierrry et le Forum

Pour compléter notre Thierry national, je te propose un extrait d'une macro de "tri à bulles" que j'avais tenté de comprendre en le commentant pour moi (c'est loin d'être évident...)
Le tableau s'appelle "alpha"et est en "option base 1" et redim a été effectué à la valeur "nbre" (nombre de données); triage est

le principe du tri à bulles est de comparer les données 2 à 2. Tu as un site de vulgarisation très intéressant sur les tris et la programmation en général : http://lwh.free.fr/ (site indiqué par Celeda)
Je rejoins Thierry, comprendre les tris est déjà difficille (pour moi) les expliquer dépasse le cadre du forum, il faudrait alors faire un pack

' Tri croissant
For i = 1 To nbre
j = i
For k = j + 1 To nbre
(j) est la valeur faible de la série à trier
'si la cellule en dessous est inférieure alors elle devient j (j= la plus faible)
If alpha(k) <= alpha(j) Then j = k
' on descend d'une cellule jusqu' au bas de la zone à trier
Next k
' si il y a plus faible que la cellule "i" étudiée
If i <> j Then
'variable temporaire
tmp = alpha(j)
'on remplace dans le tableau "alpha" la valeur de j par i
alpha(j) = alpha(i)
'on remplace dans le tableau "alpha" la valeur de i par j
' la valeur la + faible se retrouve donc à la place de la cellule "i" étudiée
alpha(i) = tmp
End If
Next i


' Ecrit la zone triée et épurée (ici dans des cellules mais peut-etre adapté à des list et compobox)
Range("A:A").ClearContents
cptr = 1
While cptr <= nbre
Cells(cptr, 1) = alpha(cptr)
cptr = cptr + 1
Wend


Amuse toi bien !
Michel
 
S

salim

Guest
Re @+Thierry et le Forum

Merci pour les compliment c'est super Sympa !.

Mais c'est vrai que mon envie de comprendre quand je me passionne pour une chôse me pousse souvent à perdre le sens des réalités. Que veux tu tempérament méditerranéen et fougue des jeunes années.

En tout cas tu as eu raison ce t2 m'intriguer puisqu'en lançant la procédure pas à pas j'ai remarquer qu'il effectuer la même chôse que t1 voilà un point de plus éclairci .

Merci pour tes explications @+Thierry c'est cool ça me permet effectivement de mieux comprendre.

@+ Salim
 
S

salim

Guest
Bonjour Michel_M

Désolé Michel le temps que j'écrive mon message je n'avait actualisé et donc pas vu ton post qui me parrait très interressant je vais bien regarder tout ça .

Merci Michel_M

@+ Salim
 

Statistiques des forums

Discussions
312 299
Messages
2 086 996
Membres
103 423
dernier inscrit
Guyom GIL