Programme Tri par sélection

Bonjour ,

N'étant pas bien douée en VBA, j'aurais besoin de quelques conseils.

J'ai un travail à faire portant sur la création d'un programme de tri par sélection.

Je dois classer des caisses contenant des déchets suivant leurs degrés de pollution, plus sa référence (dans la colonne B) est élevée, plus celle-ci est polluante.

J'ai donc compris que je devais, dans un premier temps, déterminer mon nombre de caisse total puis chercher ma référence maximale à partir de la 1ère ligne. Je dois ensuite échanger la ligne la plus polluante avec la 1ère de mon tableau.

Ensuite, je répète ces étapes en commençant ma recherche à partir de la 2ème ligne du tableau...

Mes problèmes sont les suivants:

Je n'arrive pas à rechercher ma référence max tout en changeant de ligne à chaque fois.

J'ai un soucis au niveau de l'échange des lignes, celles-ci n'étant pas fixes, je n'arrive pas à programmer cette étape..

Merci d'avance pour votre aide et bonne journée

forum forum2

Bonjour,

Avant la boucle sur k, je te conseille de définir Ref_max = Reference(j) et ensuite de faire le IF sur IF Reference(k)>Ref_max, sinon tu compares toujours à la 1ère ligne et si tu as déjà trouvé un max en parcourant la liste, tu vas peut-être écraser sa valeur.

Une fois cette boucle finie, tu peux stocker les valeurs d'une ligne dans des variables, pour faire l'échange.

Donc :

Ref_max = cells(j,2).value
For k= j+1 to nbCaisseTotal
    If Reference(k)>Ref_max then
        Ref_max = Reference(k)
        LigneADeplacer = k    'Permet de sauvegarder le numéro de ligne à inverser
    End if
Next

Valeurk1 = cells(k,1)
Valeurk2 = cells(k,2)
'...

cells(k,1) = cells(j,1)
cells(k,2)=cells(j,2)
'...

cells(j,1) = Valeurk1
cells(j,2) = Valeurk2
'...

Voilà un code qui devrait marcher, à toi d'adapter avec ton fichier

Cindy

Merci Cindy, mais si j'ai un fichier de 5000 références, je ne pourrais pas affecter chaque ligne ?

Pourquoi ne pas simplement utiliser la fonction tri qui existe déjà dans excel ?

Cindy

Parce que je suis étudiante et j'apprends à programmer. Sinon oui ça serait plus simple

En technique de tri, celle que j'avais plutôt vu était de comparer chaque ligne à sa suivante, si elles ne sont pas dans le bon ordre, on échange immédiatement les 2, en passant par l'affectation à des variables (comme fait dans l'exemple d'avant). Une fois la liste complète analysée, il faut la refaire tourner jusqu'à ce qu'aucune ligne semble au mauvais endroit.

Je ne sais pas comment faire sinon pour affecter un rang à chaque valeur.

Cindy

Merci de votre aide

Rechercher des sujets similaires à "programme tri selection"