Tri d'un tableau d'entier par ordre croissant... [Résolu]

Signaler
Messages postés
1
Date d'inscription
dimanche 18 janvier 2009
Statut
Membre
Dernière intervention
18 janvier 2009
-
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
-
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

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
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 
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
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.