Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 22/08/2011, 16h49   #1
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
Par défaut trier éléments d'une liste non liée à une table

Bonjour,

Dans un formulaire, j'ai une liste (liste1, valeurs issues d'une table) dans laquelle l'utilisateur peut double-cliquer pour rajouter des valeurs dans une autre liste (liste2) via un (tout) petit code VBA.

Mais quand je rajoute des valeurs dans la liste2, l'ordre n'est pas forcément alphabétique et je souhaiterai retrouver un ordre.

Ci-dessous, je récupère le rang que devrait tenir la nouvelle valeur à intégrer dans la liste2 :

Code :
1
2
3
4
5
6
For i = 1 To liste2.ListCount
If liste1.ItemData(liste1.ListIndex) < liste2.ItemData(i - 1) Then
 MsgBox i 'rang de classement dans ordre alphabétique de la rubrique
 Exit For
End If
Next i
Mais comment décaler cette valeur dans la liste et pour qu'elle ne se retrouve pas par défaut en fin de liste ?
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 17h30   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Pourquoi ne pas utiliser une table temporaire ? Ça serait beaucoup plus simple et plus souple.

Si tu tiens à la faire à la main il faut que tu reconstitues ta liste par programme.

Une liste est en réalité une chaine de caractère dont les éléments sont séparés par une virgule ou un point-virgule selon la langue du système.

si tous tes éléments sont différents tu pourrais utiliser quelque chose comme :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
dim tonEelement as string 
tonElement="TonElement"
 
dim tonElementPrecedent as string
tonElementPrecedent="TonElementPrecedent"
 
dim tonSeparateur as string
tonSeparateur=";"
 
dim elementListe as string
elementListe=me.TaListe.RowSource
 
dim positionElementPrecedent as long
positionElementPrecedent =instr(elementListe,tonElementPrecedent)
 
dim positionElement as long
positionElement=positionElementPrecedent+len(tonElementPrecedent)
 
dim nouveauElementListe as string
nouveauElementListe =left(elementListe, positionElement) 'Récupère tous les éléments avant le nouvel élément
nouveauElementListe = nouveauElementListe  & tonElement & tonSeparateur 'Ajoute le nouvel élément
nouveauElementListe =nouveauElementListe  & mid(elementListe, positionElement+1) 'Récupère tous les éléments après le nouvel élément
 
me.TaListe.RowSource=nouveauElementListe 
'me.TaListe.requery 'probalement optionnel
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 10h58   #3
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
Merci.

Du coup, l'idée la table temporaire me plait bien.

Quand l'utilisateur double-clique dans la liste de sélection, il faudrait donc que l'élément choisi aille dans cette table.

Quel est la fonction pour copier un élément dans une table ?
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 11h10   #4
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 586
Points : 1 586
bjr,

A partir d'Access 2002, si vous connaissez le rang d'insertion, la méthode .AddItem(Item, Index) de l'objet ListBox permet de placer l'item à la position souhaitée.

Voir aide d'Access

Philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 12h52   #5
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
Citation:
Envoyé par philben Voir le message
bjr,

A partir d'Access 2002, si vous connaissez le rang d'insertion, la méthode .AddItem(Item, Index) de l'objet ListBox permet de placer l'item à la position souhaitée.

Voir aide d'Access

Philippe
Yes, c'est encore beaucoup plus simple et ça m'apprendra à ne pas regarder assez l'aide Access
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 13h46   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Merci philben, j'ai appris un nouveau truc.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h47.


 
 
 
 
Partenaires

Hébergement Web