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

cs_serasera 1 Messages postés dimanche 18 janvier 2009Date d'inscription 18 janvier 2009 Dernière intervention - 18 janv. 2009 à 20:03 - Dernière réponse : us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention
- 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
Afficher la suite 

2 réponses

Répondre au sujet
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 18 janv. 2009 à 20:20
+3
Utile
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 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de PCPT
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 19 janv. 2009 à 23:28
0
Utile
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.
Commenter la réponse de us_30

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.