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 -
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,
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,
A voir également:
- VBA, matrice, vecteur, tri
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Excel compter cellule couleur sans vba - Guide
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
3 réponses
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.
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.
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.
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.