Ajout et tri croissant/decroissant de valeurs dans un tableau

Contenu du snippet

Ce code récupére un tableau , une valeur à ajouter et la taille du tableau,
deux procédures sont proposées une trie dans l'ordre croissant, l'autre décroissant.
Elles renvoient le tableau pour la suite du traitement.

NB: les commentaires dans le code sont nombreux pour expliquer au - initiés.

Source / Exemple :


'&&&&&&    ajoute une valeur et tri la liste dans l'ordre croissant

Sub ajoucroissant_dans_liste(tabl(), valajout, tailletabl)
 Dim i, j As Integer
   'parcours toutes les valeurs du tableau "tabl"
   For i = 1 To tailletabl
   'si la valeur a ajouter est > a une des valeurs du tableau tabl
    If valajout < tabl(i) Then
      'augmente la taille du tableau de 1
     tailletabl = tailletabl + 1: ReDim Preserve tabl(tailletabl)
     'permute les valeur du tabkleau "tabl" de -1
     For j = tailletabl To i + 1 Step -1
      tabl(j) = tabl(j - 1)
     Next j
     'inscrit la valeur à sa place
     tabl(i) = valajout
     Exit Sub
    End If
    'verifie si la valeur trouvée est déja dans le tableau si oui sortir
    If tabl(i) = valajout Then Exit Sub
   Next i
   ' si fin de tableau et pas trouvé c'est une valeur <a toutes les autres valeurs du tableau
    tailletabl = tailletabl + 1: ReDim Preserve tabl(tailletabl)
    tabl(i) = valajout
End Sub

'&&&&&&& ajoute une valeur et tri la liste dans l'ordre decroissant

Sub ajoudecroissant_dans_liste(tabl(), valajout, tailletabl)
 Dim i, j As Integer
   'parcours toutes les valeurs du tableau "tabl"
   For i = 1 To tailletabl
   'si la valeur a ajouter est > a une des valeurs du tableau tabl
    If valajout > tabl(i) Then
      'augmente la taille du tableau de 1
     tailletabl = tailletabl + 1: ReDim Preserve tabl(tailletabl)
     'permute les valeur du tabkleau "tabl" de -1
     For j = tailletabl To i + 1 Step -1
      tabl(j) = tabl(j - 1)
     Next j
     'inscrit la valeur à sa place
     tabl(i) = valajout
     Exit Sub
    End If
    'verifie si la valeur trouvée est déja dans le tableau si oui sortir
    If tabl(i) = valajout Then Exit Sub
   Next i
   ' si fin de tableau et pas trouvé c'est une valeur <a toutes les autres valeurs du tableau
    tailletabl = tailletabl + 1: ReDim Preserve tabl(tailletabl)
    tabl(i) = valajout
End Sub

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.