Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/12/2011, 15h25   #1
Invité régulier
 
Inscription : septembre 2005
Messages : 105
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 105
Points : 9
Points : 9
Par défaut Liste déroulante "manuelle" : tri alphabétique ?

Bonjour,

J'ai un formulaire qui permet de planifier des réunions et entre autres d'ajouter des participants à une réunion.

On choisit un participant au moyen d'une ListBox. Ensuite, un bouton permet d'ajouter le participant à une zone de liste (en fait je passe par une chaine de caractere temporaire qui contient toute ma zone de liste, c'est à dire les invités).

Ma zone de liste est un controle indépendant, liée a aucun champs. Est-il possible de la trier alphabétiquement sur une des colonnes ?

merci pour vos réponses,

cordialement,
junty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 17h19   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 756
Points : 1 756
Bonsoir,
je suppose
Code :
1
2
3
4
5
 
 Dim source As String
 source = "1;un;ein;2;deux;zwei;3;trois;drei;4;quatre;vier;5;cinq;fünf;6;six;sex;7;sept;sieben"
 Forms("NomFormulaire").liste.RowSource = tri(source, Forms("NomFormulaire").liste.ColumnCount, 2)
 Forms("NomFormulaire").liste.Requery
avec le tri
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
Function tri(listeATrier As String, NbColonnes As Integer, NumColonneATrier As Integer) As String
 Dim s() As String, i As Long, j As Long, n As Long
 NumColonneATrier = NumColonneATrier - 1
 s = Split(listeATrier, ";")
 n = UBound(s) - NbColonnes
 For i = 0 To n Step NbColonnes
  For j = 0 To n Step NbColonnes
   If s(j + NumColonneATrier) > s(j + NumColonneATrier + NbColonnes) Then
    For k = 0 To NbColonnes - 1
     ss = s(j + k)
     s(j + k) = s(j + k + NbColonnes)
     s(j + k + NbColonnes) = ss
    Next k
   End If
  Next j
 Next i
 tri = Join(s, ";")
End Function
Il y a surement plus élégant
Le principe : envoyer à la fonction la liste des valeurs à trier de la liste déroulante
Les paramètres necessaires sont le nombre de colonnes et la colonne à trier
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h15.


 
 
 
 
Partenaires

Hébergement Web