Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Un tri dans une table

3 réponses
Avatar
Albert
Bonjour =E0 tous,

voila mon probl=E8me :
j'ai une table sous access avec 4 champs et des=20
enregistrements (2000).
Les champs contiennent des chiffres dans le d=E9sordre comme=20
suivant :
12 18 73 51
98 42 40 41
35 75 22 10
...

et je voudrai les remettre dans l'ordre par ligne pour=20
arriver =E0 cela :
12 18 73 51 =3D> 12 18 51 73
98 42 40 41 =3D> 40 41 42 98
35 75 22 10 =3D> 10 22 35 75
et ainsi de suite.

Alors j'ai essay=E9 avec des requetes, du vba mais c'est pas=20
mon fort et cela ne marche pas=20
J'ai tout pass=E9 sous excel et grace =E0 une aide de =20
Michdenis j'ai pu y arriver mais je voudrai trouver=20
directement la solution sous Access pour =E9viter trop de=20
manips qui sont source d'erreur

si qq'1 peut m'aider

Merci d'avance
Albert

3 réponses

Avatar
Eric
"Albert" écrivait news:d1a401c439bf
$68a1afa0$:

Bonjour à tous,

voila mon problème :
j'ai une table sous access avec 4 champs et des
enregistrements (2000).
Les champs contiennent des chiffres dans le désordre comme
suivant :
12 18 73 51
98 42 40 41
35 75 22 10
...

et je voudrai les remettre dans l'ordre par ligne pour
arriver à cela :
12 18 73 51 => 12 18 51 73
98 42 40 41 => 40 41 42 98
35 75 22 10 => 10 22 35 75
et ainsi de suite.

Alors j'ai essayé avec des requetes, du vba mais c'est pas
mon fort et cela ne marche pas
J'ai tout passé sous excel et grace à une aide de
Michdenis j'ai pu y arriver mais je voudrai trouver
directement la solution sous Access pour éviter trop de
manips qui sont source d'erreur

si qq'1 peut m'aider

Merci d'avance
Albert



Bonjour Albert

Je te donne une solution mais je te préviens que la méthode de tri
employée n'est pas la plus performante (Bubble Sort)
En supposant que ta table s'appelle Chiffres et a 4 champs

Sub Test()
Dim rs As DAO.Recordset, temp As Long, tableau(3) As Long
Dim i As Integer, j As Integer
Set rs = CurrentDb.OpenRecordset("Chiffres")
rs.MoveFirst
While Not rs.EOF
For i = 0 To 3
tableau(i) = rs(i)
Next i
For i = 0 To 2
For j = i + 1 To 3
If tableau(i) > tableau(j) Then
temp = tableau(i): tableau(i) = tableau(j)
tableau(j) = temp
End If
Next j
Next i
For i = 0 To 3
rs.Edit
rs(i) = tableau(i)
rs.Update
Next i
Debug.Print
rs.MoveNext
Wend
Set rs = Nothing
Erase tableau
End Sub


A+
Eric

Avatar
Albert
je te remercie mais ce code je le mets ou exactement ?
dans un formulaire ?

albert
-----Message d'origine-----
"Albert" écrivait
news:d1a401c439bf

$68a1afa0$:

Bonjour à tous,

voila mon problème :
j'ai une table sous access avec 4 champs et des
enregistrements (2000).
Les champs contiennent des chiffres dans le désordre
comme


suivant :
12 18 73 51
98 42 40 41
35 75 22 10
...

et je voudrai les remettre dans l'ordre par ligne pour
arriver à cela :
12 18 73 51 => 12 18 51 73
98 42 40 41 => 40 41 42 98
35 75 22 10 => 10 22 35 75
et ainsi de suite.

Alors j'ai essayé avec des requetes, du vba mais c'est
pas


mon fort et cela ne marche pas
J'ai tout passé sous excel et grace à une aide de
Michdenis j'ai pu y arriver mais je voudrai trouver
directement la solution sous Access pour éviter trop de
manips qui sont source d'erreur

si qq'1 peut m'aider

Merci d'avance
Albert



Bonjour Albert

Je te donne une solution mais je te préviens que la
méthode de tri

employée n'est pas la plus performante (Bubble Sort)
En supposant que ta table s'appelle Chiffres et a 4 champs

Sub Test()
Dim rs As DAO.Recordset, temp As Long, tableau(3) As
Long

Dim i As Integer, j As Integer
Set rs = CurrentDb.OpenRecordset("Chiffres")
rs.MoveFirst
While Not rs.EOF
For i = 0 To 3
tableau(i) = rs(i)
Next i
For i = 0 To 2
For j = i + 1 To 3
If tableau(i) > tableau(j) Then
temp = tableau(i): tableau(i) =
tableau(j)

tableau(j) = temp
End If
Next j
Next i
For i = 0 To 3
rs.Edit
rs(i) = tableau(i)
rs.Update
Next i
Debug.Print
rs.MoveNext
Wend
Set rs = Nothing
Erase tableau
End Sub


A+
Eric
.




Avatar
Eric
"Albert" écrivait news:d46c01c439c4
$20f1b060$:

je te remercie mais ce code je le mets ou exactement ?
dans un formulaire ?

re,


Je connais pas ton problème exactement car ton traitement a besoin de
n'être exécuté qu'une seule fois ou plusieurs ?

Si tu fais un formulaire indépendant avec un bouton, tu mets le code sur
l'évènement click du bouton (sans le Sub et End Sub , adaptes le nom de la
table)

Private Sub Bouton_Click()
' ici le code
End Sub

Maintenant si tu n'en as besoin qu'1 seule fois, tu mets ca dans un module
stantard (tu copies tout de Sub à end sub), tu laisses le curseur dans la
procedure et tu cliques sur le bouton Executer Sub.

Voila, je peux pas te dire mieux ou alors me faut plus de détails

A+
Eric