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

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

Votre réponse

2 réponses

Meilleure réponse
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
29
3
Merci
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 

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PCPT
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Dernière intervention
14 mars 2016
4
0
Merci
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.