VBA - tri tableau 3x3
Fermé
Cha69
Messages postés
32
Date d'inscription
jeudi 23 avril 2009
Statut
Membre
Dernière intervention
16 mai 2009
-
14 mai 2009 à 17:37
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 16 mai 2009 à 16:43
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 16 mai 2009 à 16:43
A voir également:
- VBA - tri tableau 3x3
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Trier tableau excel - Guide
- Tableau word - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
3 réponses
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
14 mai 2009 à 19:11
14 mai 2009 à 19:11
Bonjour,
Dans ces cas là c'est plus simple de le faire avec l'enregistreur de macro pour avoir les parametres.
Et tu obtiens :
Dans ces cas là c'est plus simple de le faire avec l'enregistreur de macro pour avoir les parametres.
Et tu obtiens :
Range("A1:C3").Sort Key1:=Range("A3"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _ DataOption1:=xlSortNormaleric
Cha69
Messages postés
32
Date d'inscription
jeudi 23 avril 2009
Statut
Membre
Dernière intervention
16 mai 2009
4
16 mai 2009 à 12:35
16 mai 2009 à 12:35
Bonjour Eriiic!
Ta solution n'est pas réalisable, car le tableau construit n'est pas sur excel mais sur VBA.
Le tableau est fictif.
J'avais un code qui marchait pour un tableau à une colonne mais il ne marche pas pour trois colonnes!
Il ne trie que la troisième ligne sans modifier les autres.
exemple code ne fonctionnant pas:
Dim tableau3(1 To 3, 1 To 20)
For l = 1 To nb
m = l
For k = m + 1 To nb + 1
If tableau3(3, k) > tableau3(3, m) Then
m = k
End If
Next k
If l <> m Then
tmp = tableau3(3, m)
tableau3(3, m) = tableau3(3, l)
tableau3(3, l) = tmp
End If
Next l
Ta solution n'est pas réalisable, car le tableau construit n'est pas sur excel mais sur VBA.
Le tableau est fictif.
J'avais un code qui marchait pour un tableau à une colonne mais il ne marche pas pour trois colonnes!
Il ne trie que la troisième ligne sans modifier les autres.
exemple code ne fonctionnant pas:
Dim tableau3(1 To 3, 1 To 20)
For l = 1 To nb
m = l
For k = m + 1 To nb + 1
If tableau3(3, k) > tableau3(3, m) Then
m = k
End If
Next k
If l <> m Then
tmp = tableau3(3, m)
tableau3(3, m) = tableau3(3, l)
tableau3(3, l) = tmp
End If
Next l
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
16 mai 2009 à 16:43
16 mai 2009 à 16:43
Sans analyser ton code s'il ne trie que la 3ème ligne c'est que tu ne permutes pas les éléments des autres lignes en même temps...
Ceci dit rien ne t'empeche d'utiliser une feuille pour y déposer ton tableau et utiliser le .sort qui sera toujours plus performant que 2 ou 3 boucles imbriquées contenant des tests.
Ex:
A moins que ce ne soit pour te perfectionner en vba...
eric
Ceci dit rien ne t'empeche d'utiliser une feuille pour y déposer ton tableau et utiliser le .sort qui sera toujours plus performant que 2 ou 3 boucles imbriquées contenant des tests.
Ex:
Sub test() Dim tableau3 ReDim tableau3(1 To 3, 1 To 20) ' remplir tableau3 avec ses valeurs ' ' on dépose le tableau [Feuil2!A1:C20] = tableau3 ' on trie décroissant sur la ligne 3 [Feuil2!A1:C20].Sort Key1:=Range("A3"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _ DataOption1:=xlSortNormal ' et on récupère le résultat tableau3 = [Feuil2!A1:C20].Value End Sub
A moins que ce ne soit pour te perfectionner en vba...
eric