Tri d'un tableau d'entier par ordre croissant...

Résolu
cs_serasera Messages postés 1 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 18 janvier 2009 - 18 janv. 2009 à 20:03
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 19 janv. 2009 à 23:28
Salut à tous!

Pourriez vous m'aider ou m'indiquer un lien ou je pourrais trouver une solution à mon petit pb...
Je suis débutant en vba et je voudrais trier un tableau d'entier dans un ordre croissant. 

Mon algo fonctionne mais j'ai un erreur à la fin au moment où je veux affecter à un tableau vide mon tableau trié pour ensuite l'afficher: ERREUR 13 Incompatibiliter de type....

 Qu'elqu'un peut il me debloquer?

Voici le code :

 Sub trie_tab()


Dim tableau As Range


Set tableau = Worksheets("feuil1").Range("A1:E1")    'Il y a des chiffres qcq dans les cases A1 à E1


Dim taille As Integer    'taille du tableau


taille = tableau.Count


Dim i As Integer

'Declaration du tableau "tablo"


Dim tablo() As Variant


ReDim tablo(taille - 1)



'Affectation de l'objet Range au tableau "tablo"



For i = 0 To taille - 1


tablo(i) = tableau(1, i + 1).Value


Next i



'Création d'un nex tableau pour acceuillir le tableau trié:



Dim tabl_trie() As Variant
ReDim tabl_trie(taille - 1)




tabl_trie = trie(tablo)
'appel de la fonction triant le tableau "tablo" : ERREU 13 incompatibilité de titre????


End Sub


 


Function trie(tabl As Variant) As Variant


Dim k, j, x As Integer
Dim taille  As Integer


taille = UBound(tabl) + 1


For k = 0 To taille - 1


    
    For j = k + 1 To taille - 1
    
    
    
    If tabl(j) < tabl(k) Then
   
    x = tabl(j)

    tabl(j) = tabl(k)
   
    tabl(k) = x
    
   
    End If
       
    Next j


Next k


End Function

2 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 janv. 2009 à 20:20
salut,

tu devrais trouver différents exemples de tri sur www.codyx.org

et pour ton erreur, avec tout ce jeu de variant, normal que VBA s'y perde....

une fonction qui retourne un variant ne va pas retourner un tableau contenant variant
si tu veux qu'elle "modifie" un tableau de variant, il faut le passer en argument BYREF à ta fonction
encore qu'ici çà ne soit pas une bonne solution, au niveau des ressources consommées...

tu veux trier quoi, des valeurs (integer, long, double) ? des chaines (string)?

tu pourrais avoir besoin de comparer "1


"


à


"


a


"


, mais pas


_


1


_


à


"


a


"





évite le variant autant que possible, ici un tableau de string devrait mieux correspondre à tes besoins



bon courage


Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
3
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
19 janv. 2009 à 23:28
Bonsoir,


J'avoue également être un peu perdu dans ton code. Il n'est pas très clair...


Plus simplement, il existe aussi la solution de faire un tri aux fonctions d'Excel. Utiliser l'enregistreur de macro, fait le trie, et réutilise le code généré pour l'adapter à tes besoins. Cela me semble le plus simple ici...


Amicalement,
Us.
0
Rejoignez-nous