OVH Cloud OVH Cloud

Tri d'un vecteur

2 réponses
Avatar
Alex St-Pierre
Bonjour,
J'éprouve certains problèmes à effectuer le tri d'un vecteur. J'ai des
données en colonnes dont j'aimerais faire un tri.
ex:
Valeur1:1
Valeur2:vide (3e élément puisque le 3 n'est pas présent)
Valeur3:2
Valeur4:vide
Valeur5:4
Le but est de connaitre la position du i ème élément.
Ref(1) = 1 (puisque 1)
Ref(2) = 3 (puisque 2)
Ref(3) = 2 (vide)
Ref(4) = 5 (puisque 4)
Ref(5) = 4 (vide)

J'ai pensé au programme suivant A1 à A5 = input(Valeur) et B1 à B5 = output
(Ref) mais le fait d'avoir plusieurs espace vide ne fonctionne pas. Est-ce
que quelqu'un aurait une idée comment faire?
Merci !
Alex

Sub tri()
Dim i As Integer, j As Integer, n As Integer
Dim ref(5) As Integer
n = 1
For i = 1 To 5
For j = 1 To 5
If Cells(j, 1) = i Then
ref(j) = i
n = n + 1
End If
Next j
If i = n Then 'Non aloué..
For j = 1 To 1 + 5 - 1
If Cells(j, 1) = 0 Or Cells(j, 1) = "" Then
ref(j) = i
n = n + 1
Exit For
End If
Next j
End If
Next i
For i = 1 To 5
Cells(i, 2) = ref(i)
Next i
End Sub

--
Alex St-Pierre

2 réponses

Avatar
Sonic
Bonjour.

Sub Tri2()
Dim mem(5)
For n = 1 To 5
mem(n) = n
Cells(n, 3) = ""
Next

For n = 1 To 5
For i = 1 To 5
If Cells(i, 1) = n Then
Cells(n, 3) = i
mem(i) = ""
End If
Next
Next

For i = 1 To 5
If Cells(i, 3) = "" Then
For n = 1 To 5
If mem(n) <> "" Then
Cells(i, 3) = mem(n)
mem(n) = ""
Exit For
End If
Next
End If
Next

End Sub


"Alex St-Pierre" wrote in message
news:
Bonjour,
J'éprouve certains problèmes à effectuer le tri d'un vecteur. J'ai des
données en colonnes dont j'aimerais faire un tri.
ex:
Valeur1:1
Valeur2:vide (3e élément puisque le 3 n'est pas présent)
Valeur3:2
Valeur4:vide
Valeur5:4
Le but est de connaitre la position du i ème élément.
Ref(1) = 1 (puisque 1)
Ref(2) = 3 (puisque 2)
Ref(3) = 2 (vide)
Ref(4) = 5 (puisque 4)
Ref(5) = 4 (vide)

J'ai pensé au programme suivant A1 à A5 = input(Valeur) et B1 à B5 =
output
(Ref) mais le fait d'avoir plusieurs espace vide ne fonctionne pas. Est-ce
que quelqu'un aurait une idée comment faire?
Merci !
Alex

Sub tri()
Dim i As Integer, j As Integer, n As Integer
Dim ref(5) As Integer
n = 1
For i = 1 To 5
For j = 1 To 5
If Cells(j, 1) = i Then
ref(j) = i
n = n + 1
End If
Next j
If i = n Then 'Non aloué..
For j = 1 To 1 + 5 - 1
If Cells(j, 1) = 0 Or Cells(j, 1) = "" Then
ref(j) = i
n = n + 1
Exit For
End If
Next j
End If
Next i
For i = 1 To 5
Cells(i, 2) = ref(i)
Next i
End Sub

--
Alex St-Pierre


Avatar
Alex St-Pierre
Merci Sonic!! ça fonctionne très bien.
--
Alex St-Pierre


"Sonic" wrote:

Bonjour.

Sub Tri2()
Dim mem(5)
For n = 1 To 5
mem(n) = n
Cells(n, 3) = ""
Next

For n = 1 To 5
For i = 1 To 5
If Cells(i, 1) = n Then
Cells(n, 3) = i
mem(i) = ""
End If
Next
Next

For i = 1 To 5
If Cells(i, 3) = "" Then
For n = 1 To 5
If mem(n) <> "" Then
Cells(i, 3) = mem(n)
mem(n) = ""
Exit For
End If
Next
End If
Next

End Sub


"Alex St-Pierre" wrote in message
news:
Bonjour,
J'éprouve certains problèmes à effectuer le tri d'un vecteur. J'ai des
données en colonnes dont j'aimerais faire un tri.
ex:
Valeur1:1
Valeur2:vide (3e élément puisque le 3 n'est pas présent)
Valeur3:2
Valeur4:vide
Valeur5:4
Le but est de connaitre la position du i ème élément.
Ref(1) = 1 (puisque 1)
Ref(2) = 3 (puisque 2)
Ref(3) = 2 (vide)
Ref(4) = 5 (puisque 4)
Ref(5) = 4 (vide)

J'ai pensé au programme suivant A1 à A5 = input(Valeur) et B1 à B5 =
output
(Ref) mais le fait d'avoir plusieurs espace vide ne fonctionne pas. Est-ce
que quelqu'un aurait une idée comment faire?
Merci !
Alex

Sub tri()
Dim i As Integer, j As Integer, n As Integer
Dim ref(5) As Integer
n = 1
For i = 1 To 5
For j = 1 To 5
If Cells(j, 1) = i Then
ref(j) = i
n = n + 1
End If
Next j
If i = n Then 'Non aloué..
For j = 1 To 1 + 5 - 1
If Cells(j, 1) = 0 Or Cells(j, 1) = "" Then
ref(j) = i
n = n + 1
Exit For
End If
Next j
End If
Next i
For i = 1 To 5
Cells(i, 2) = ref(i)
Next i
End Sub

--
Alex St-Pierre