OVH Cloud OVH Cloud

trier array

8 réponses
Avatar
Toto
Bonjour,

Sous ACCESS existe-t-il une fonction qui permet de trier un array. (cf. sort
en PHP)
J'ai un tableau du style a=array"abc03","fr0320" ...
Et je souhaite le trier.
Merci. et bon WE.

8 réponses

Avatar
ze Titi
Bonjour Toto

Je ne crois pas que cela existe. Par contre, tu peux utiliser la fonction suivante.
Si tu veux trier un tableau de chaînes de caractères, tu fais:

tonTableau=TriABulles(tonTableau)

Le code suivant est à coller dans un module quelconque

Function TriABulles(strArray() As String) As String()
Dim permuté As Boolean, strTmp as String
Do
permuté = False
For i = 0 To UBound(strArray)-1
If StrComp(strArray(i),strArray(i+1))=1 Then
permuté = True
strTmp=strArray(i)
strArray(i)=strArray(i+1)
strArray(i+1)=strTmp
End If
Next
Loop While permuté = True
End Sub

A tester...
Dis-nous !

Bonjour,

Sous ACCESS existe-t-il une fonction qui permet de trier un array. (cf. sort
en PHP)
J'ai un tableau du style a=array"abc03","fr0320" ...
Et je souhaite le trier.
Merci. et bon WE.


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

Avatar
Eric
Bonjour,

Non, je ne crois pas que sous VBA, il existe une méthode Sort sur un
Array. De même en VB. Mais, il est toujours possible de trier ton
tableau avec une routine.
En faisant au plus simple, quant à la méthode et au mode de tri (bubble
sort):

Sub zz()
Dim varTab, i As Integer, j As Integer, tmp As String
varTab = Array("aa", "ff", "dd", "bb", "cc", "dd", "ee")
For i = LBound(varTab) To UBound(varTab) - 1
For j = i + 1 To UBound(varTab)
If varTab(i) > varTab(j) Then
tmp = varTab(j)
varTab(j) = varTab(i)
varTab(i) = tmp
End If
Next j
Next i
For i = LBound(varTab) To UBound(varTab)
Debug.Print varTab(i)
Next i
End Sub

Bonjour,

Sous ACCESS existe-t-il une fonction qui permet de trier un array. (cf. sort
en PHP)
J'ai un tableau du style a=array"abc03","fr0320" ...
Et je souhaite le trier.
Merci. et bon WE.




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
.../...

Toutefois, si mes souvenirs ne me trompent pas, à l'époque du GwBasic ou
encore Basica, l'instruction Sort existait ... Ah, le bon vieux temps ;-)

--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Jessy Sempere
Bonjour

Je me suis inspiré de ton code pour faite vite fait une petite fonction sur
mon site qu'on peut retrouver ici :
http://access.fr.free.fr/articles.php?lng=fr&pg8

PS : Dis moi si tu veux que je mentionne ton nom... ;-))

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l''''efficacité de tous :
http://www.mpfa.info/
------------------------------------



..../...

Toutefois, si mes souvenirs ne me trompent pas, à l'époque du GwBasic ou
encore Basica, l'instruction Sort existait ... Ah, le bon vieux temps ;-)

--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Eric
Bonsoir Jessy,

Tu as bien fait.

Juste 2 remarques si autorisé ;-)
1- Rajouter une déclaration de i et j car je suis un farouche partisan
de l'option Explicit
2- Ton code impose que, dans la procédure appelante, on déclare la
variable passée en argument à la fonction comme un tableau. Or la
fonction Array retourne un variant contenant un tableau sans avoir à
déclarer ce variant comme un tableau, donc si les utilisateurs consulte
l'aide et son exemple, il ne déclareront pas la variable comme un
tableau. Ce qui m'amènerait à modifier comme suit la fonction:
Function fSortArray(varArray, intOrder%) As Variant

Par contre si la fonction doit traiter les tableaux à une dimension,
c'est Ok, seule le nom de l'argument - ici varArray() - me chagrine.

Je sais pas si tu me suis ...

PS du PS:
MPFA est 'public' et de surplus bien mentionné sur ton site donc rien à
redire ;-)

Bonjour

Je me suis inspiré de ton code pour faite vite fait une petite fonction sur
mon site qu'on peut retrouver ici :
http://access.fr.free.fr/articles.php?lng=fr&pg8

PS : Dis moi si tu veux que je mentionne ton nom... ;-))

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l''''efficacité de tous :
http://www.mpfa.info/
------------------------------------



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Jessy Sempere
Bonjour Eric

Les remarques sont toujours autorisées... ;-)
J'ai donc fait les modifications dont tu parlais par contre je n'ai pas du
te suivre sur tous les points, j'ai laissé le même nom pour la variable, à
savoir varArray...

@+
Jessy Sempere

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Eric" a écrit dans le message de news:
e4%
Bonsoir Jessy,

Tu as bien fait.

Juste 2 remarques si autorisé ;-)
1- Rajouter une déclaration de i et j car je suis un farouche partisan de
l'option Explicit
2- Ton code impose que, dans la procédure appelante, on déclare la
variable passée en argument à la fonction comme un tableau. Or la fonction
Array retourne un variant contenant un tableau sans avoir à déclarer ce
variant comme un tableau, donc si les utilisateurs consulte l'aide et son
exemple, il ne déclareront pas la variable comme un tableau. Ce qui
m'amènerait à modifier comme suit la fonction:
Function fSortArray(varArray, intOrder%) As Variant

Par contre si la fonction doit traiter les tableaux à une dimension, c'est
Ok, seule le nom de l'argument - ici varArray() - me chagrine.

Je sais pas si tu me suis ...

PS du PS:
MPFA est 'public' et de surplus bien mentionné sur ton site donc rien à
redire ;-)

Bonjour

Je me suis inspiré de ton code pour faite vite fait une petite fonction
sur mon site qu'on peut retrouver ici :
http://access.fr.free.fr/articles.php?lng=fr&pg8

PS : Dis moi si tu veux que je mentionne ton nom... ;-))

@+
Jessy Sempere
------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l''''efficacité de tous :
http://www.mpfa.info/
------------------------------------



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Eric
Bonjour Jessy

Pour ce qui est du nom de la variable, laisses tomber, c'est bien comme
ça, je me suis mélangé les pinceaux.

En fait, j'ai été surpris par ton varArray() car :
Je fais toujours :
Dim varTab as Variant
varTab=Array(...)
et non
Dim varTab() as Variant
varTab = Array(...)

ce qui bloquait ta fonction.
Mais peut-être que je ne respecte pas les conventions et dans ce cas-là,
je t'ai fait modifier sans raison.



Bonjour Eric

Les remarques sont toujours autorisées... ;-)
J'ai donc fait les modifications dont tu parlais par contre je n'ai pas du
te suivre sur tous les points, j'ai laissé le même nom pour la variable, à
savoir varArray...

@+
Jessy Sempere

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Jessy Sempere
Ok

Tu sais, perso je m'y perds toujours dans les déclarations de tableaux...
;-))

Perso, je fais toujours

Dim varTab() as variant

Il me semble que si tu veux l'alimenter autrement que par Array, ça ce
marche pas sans les parenthèse mais je ne suis pas sûr...

--
@+
Jessy Sempere

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"Eric" a écrit dans le message de news:

Bonjour Jessy

Pour ce qui est du nom de la variable, laisses tomber, c'est bien comme
ça, je me suis mélangé les pinceaux.

En fait, j'ai été surpris par ton varArray() car :
Je fais toujours :
Dim varTab as Variant
varTab=Array(...)
et non
Dim varTab() as Variant
varTab = Array(...)

ce qui bloquait ta fonction.
Mais peut-être que je ne respecte pas les conventions et dans ce cas-là,
je t'ai fait modifier sans raison.



Bonjour Eric

Les remarques sont toujours autorisées... ;-)
J'ai donc fait les modifications dont tu parlais par contre je n'ai pas
du te suivre sur tous les points, j'ai laissé le même nom pour la
variable, à savoir varArray...

@+
Jessy Sempere

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr