Fonction Trie avec matrice

  • Initiateur de la discussion Initiateur de la discussion JBARBE
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JBARBE

XLDnaute Barbatruc
Bonjour à tous,

J'ai effectué une macro pour faire un tri ( je sais Excel fait le travail à ma place), mais le but est de me perfectionner dans les fonctions !

Voici la Macro et le fichier provoquant une erreur :

Code:
Function Trie()
Dim TriDonnees() As Variant
Dim cell As Range
Dim Temp As Variant, i As Long, j As Long
Dim NonEmpty As Long
'transferer les données dans TriDonnées
For Each cell In Rng
 If Not IsEmpty(cell) Then
 NonEmpty = NonEmpty + 1
  ReDim Preserve TriDonnees(1 To NonEmpty)
  TriDonnees(NonEmpty) = cell.Value
End If
Next cell
' trier tableau
For i = 1 To NonEmpty
 For j = i + 1 To NonEmpty
  If TriDonnees(i) > TriDonnees(j) Then
  Temp = TriDonnees(j)
  TriDonnees(j) = TriDonnees(i)
  TriDonnees(i) = Temp
  End If
 Next j
Next i
' transpose le tableau et le retourne
Trie = Application.WorksheetFunction.Transpose(TriDonnees)
End Function

Merci à l'avance !
 

Pièces jointes

Re : Fonction Trie avec matrice

Bonsoir JBARBE,

La compilation de la fonction (en environnement VBA menu Débogage/Compiler VBAproject) ne détecte aucune erreur dans la fonction TRIE.

Si en tête de module, on rajoute la directive Option Explicit qui vérifie que chaque variable est déclarée avant son utilisation, alors la compilation de la fonction TRIE échoue en pointant la ligne For Each cell In rng et en informant que rng n'a pas été déclaré.

En effet, le paramètre de la fonction TRIE a été oublié!

En déclarant la fonction comme ceci Function Trie(rng As Range), tout rentre dans l'ordre.

C'est un exemple parmi d'autres qui milite (selon moi) en faveur de l'utilisation quasi systématique de Option explicit.
 
Dernière édition:
Re : Fonction Trie avec matrice

Là, tout de suite, non je ne peux l'expliquer avec précision.
Mais as tu compris que ta méthode de tri était des plus mauvaises pour de grandes listes à classer ?
C'est pourquoi, en plus de l'animation amusante qui l'illustrait de façon éloquente, je t'ai proposé mon module de classe TableIndex qui combine les méthodes parmi les plus rapides pour diverses tailles.
 
Re : Fonction Trie avec matrice

Pour dire vrai, je n'es pas tout à fait compris cet algorithme mais je vais m'y attabler sérieusement car ce n'est pas le genre de programmation que l'on m'a enseigné sur excel 2000 ( je me sens vieux)!

Bonne nuit !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
784
Réponses
4
Affichages
732
Réponses
5
Affichages
910
Réponses
8
Affichages
390
Retour