VBA, matrice, vecteur, tri

dzino Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je vous expose ma situation :
J'ai un tableau, composé de deux colonnes. Une avec des noms et l'autre avec des numéros.
Ce que je sais faire:
- c'est déclarer un vecteur, que mon vecteur, via une boucle, prend les valeurs d'une colonne (numéros).
- effectuer le tri de ce vecteur (tjrs via une boucle)
- Puis pour finir, copier mon vecteur trié dans ma colonne de départ (numéros)

Maintenant, ce que je ne sais pas faire est la généralisation à une matrice.
Enfaite je voudrais effectuer la même chose mais que le tri affecte ma colonne des noms. En d'autres termes, chaque noms est associé à un numéro, si je trie les numéros, la colonne noms va se modifier aussi (en fonction de mon tri).

Les solutions avec l'enregistreur de macro ne m'intéressent pas, j'aimerais comprendre la logique !

Merci d'avance,

3 réponses

lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Les solutions avec l'enregistreur de macro ne m'intéressent pas, j'aimerais comprendre la logique !
C'est justement ce que tu dois faire, pour comprendre la logique tu poste le code sur un poste suivant et ont te l'expliquera.
A moins que tu veux te compliqué la vie avec des boucles et des tests.
A+

Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
dzino Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Voilà ce que j'ai fait :

Range("A1").Select
n = Range(Selection, Selection.End(xlDown)).Count
m = Range(Selection, Selection.End(xlToRight)).Count

ReDim tableau(1 To n, 1 To m) As Variant

For i = 2 To n
tableau(i, 1) = Cells(i, 1)
Next i

For i = 2 To n
tableau(i, 2) = Cells(i, 2)
Next i

For i = 1 To n
For j = 1 To n - 1
If tableau(j, 2) > tableau(j + 1, 2) Then
a = tableau(j, 2)
b = tableau(j, 1)
tableau(j, 2) = tableau(j + 1, 2)
tableau(j, 1) = tableau(j + 1, 1)
tableau(j + 1, 2) = a
tableau(j + 1, 1) = b
End If
Next j
Next i

For i = 1 To n - 1
Cells(i + 1, 1) = tableau(i + 1, 1)
Cells(i + 1, 2) = tableau(i + 1, 2)
Next i

C'est sur que c'est plus long, mais l'idée était de comprendre.
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Si tu veux VRAIMENT... mais alors Vraiment... te compliquer la vie, voir du côté de l'objet Dictionary.
Mais tu perd ton temps, fais un tri avec l'éditeur de macro.
A++
0