Je n'arrive pas à faire fonctionner se tri
Résolu
alexandre13 200
Messages postés
22
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis mauvais en programmation et je voudrai savoir pourquoi se code pourtant simple ne marche pas pou trier dans l'ordre croissant
Sub tri_croissant(t() As Integer)
Dim n As Integer
Dim i As Integer
Dim j As Integer
Dim temp As Integer
Dim nb_element As Integer
Dim colone As Integer
Dim ligne As Integer
ligne = 4
colone = 1
nb_element = 12
For i = 1 To nb_element
merci d'avance à ceux qu'il vele me répondre
t(i) = Cells(ligne + i - 1, colone).Value
Next i
For j = 1 To n - i
For i = 1 To n - j
If t(i) > t(i + 1) Then
temp = t(i)
t(i) = t(i + 1)
t(i + 1) = temp
End If
Next i
Next j
ligne = 4
colone = 2
nb_element = 12
For i = 1 To nb_element
Cells(ligne + i - 1, colone) = t(i)
Next i
End Sub
je suis mauvais en programmation et je voudrai savoir pourquoi se code pourtant simple ne marche pas pou trier dans l'ordre croissant
Sub tri_croissant(t() As Integer)
Dim n As Integer
Dim i As Integer
Dim j As Integer
Dim temp As Integer
Dim nb_element As Integer
Dim colone As Integer
Dim ligne As Integer
ligne = 4
colone = 1
nb_element = 12
For i = 1 To nb_element
merci d'avance à ceux qu'il vele me répondre
t(i) = Cells(ligne + i - 1, colone).Value
Next i
For j = 1 To n - i
For i = 1 To n - j
If t(i) > t(i + 1) Then
temp = t(i)
t(i) = t(i + 1)
t(i + 1) = temp
End If
Next i
Next j
ligne = 4
colone = 2
nb_element = 12
For i = 1 To nb_element
Cells(ligne + i - 1, colone) = t(i)
Next i
End Sub
A voir également:
- Je n'arrive pas à faire fonctionner se tri
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Comment faire fonctionner le chromecast - Guide
- Discord a cessé de fonctionner de manière inattendue ✓ - Forum Windows
- Paris centre de tri shein ✓ - Forum Consommation & Internet
4 réponses
Bonjour,
tu peux faire un tri plus facilement, en enregistrant directement la macro. Tu sélectionnes toutes les colonnes, puis tu vas dans les options du tri pour savoir par quelle colonne trier, et indiquer que tu veux trier dans l'ordre croissant.
tu peux faire un tri plus facilement, en enregistrant directement la macro. Tu sélectionnes toutes les colonnes, puis tu vas dans les options du tri pour savoir par quelle colonne trier, et indiquer que tu veux trier dans l'ordre croissant.
Je comprends bien ton souhait de faire ton tri en passant par une macro VBA, mais ce que je te dis, c'est qu'en utilisant l'enregisteur de macro, ça se fait assez facilement. Même si pour enregistrer ta macro tu dois être sous Excel, tu pourras obtenir un tri plus rigoureux que si tu le fais en codant tout du début jusqu'à la fin.
Sinon, pour en revenir à ton code, tu essaies de faire :
Ton n est bien déclaré, mais il n'est pas initialisé donc comment veux tu que cela fonctionne ?
Commence déjà par régler ce petit problème, je pense qu'ensuite ton programme devrait fonctionner.
Sinon, pour en revenir à ton code, tu essaies de faire :
For j = 1 To n - i For i = 1 To n - j
Ton n est bien déclaré, mais il n'est pas initialisé donc comment veux tu que cela fonctionne ?
Commence déjà par régler ce petit problème, je pense qu'ensuite ton programme devrait fonctionner.
Bonjour,
Pas trop lr temps de tester ton code
voici un extrait qui fonctionne
le tableau s'appelle "alpha" et la variable "nbre"ont été préalablement affectés
ton test m'a paru bizarre < au lieu de <= ?
Edit 14:06h
Source: F.Sigonneau sur
http://frederic.sigonneau.free.fr/
Pas trop lr temps de tester ton code
voici un extrait qui fonctionne
le tableau s'appelle "alpha" et la variable "nbre"ont été préalablement affectés
ton test m'a paru bizarre < au lieu de <= ?
Tri croissant
For i = 1 To nbre
j = i
For k = j + 1 To nbre
'
'si la cellule en dessous est inférieure alors elle devient j (j= la plus faible)
If alpha(k) <= alpha(j) Then j = k
' on descend d'une cellule jusqu' au bas de la zone à trier
Next k
' si il y a plus faible que la cellule "i" étudiée
If i <> j Then
'variable temporaire
tmp = alpha(j)
'on remplace dans le tableau "alpha" la valeur de j par i
alpha(j) = alpha(i)
'on remplace dans le tableau "alpha" la valeur de i par j
' la valeur la + faible se retrouve donc à la place de la cellule "i" étudiée
alpha(i) = tmp
End If
Next i
' Ecrit la zone triée et épurée (ici dans des cellules mais peut-etre adapté à des list et compobox)
Range("A:A").ClearContents
cptr = 1
While cptr <= nbre
Cells(cptr, 1) = alpha(cptr)
cptr = cptr + 1
Wend
Edit 14:06h
Source: F.Sigonneau sur
http://frederic.sigonneau.free.fr/