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 04/07/2011, 13h03   #1
Invité de passage
 
Homme Florent Millet
Étudiant
Inscription : juin 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme Florent Millet
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 6
Points : 3
Points : 3
Par défaut Copier la sélection d'une zone de liste multiple vers une autre zone de liste

Bonjour,

Je vous fait part de mon problème du jour, j'ai dans un formulaire une zone de liste multiple (liste_departement) qui contient une liste des départements français (grâce à une requête vers une table département : SELECT no_dept, nom_dept FROM departement). Je souhaiterai que lorsque le ou les départements sont sélectionnés, en appuyant sur un bouton (btn_valider_select_dept) tous les enregistrements sélectionnés soient recopier dans une zone de liste (liste_dept_selectionne) d'un autre formulaire.

Je me suis basé sur l'aide d'access et j'ai donc commencer par recopier ce code et l'ai adapté à mes formulaires :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub btn_valider_select_dept_Click()
 
 Dim frm As Form
 Dim ctl As Control
 Dim varItm As Variant
 Dim intI As Integer
 
   Set frm = Forms!frm_select_departement
   Set ctl = frm!Liste_departement
 
   For Each varItm In ctl.ItemsSelected
 
      For intI = 0 To ctl.ColumnCount - 1
 
             Debug.Print ctl.Column(intI, varItm)
 
        Next intI
    Next varItm
 
End Sub
Pour le moment tout va bien le debug.print me renvois le numéro de département et son nom pour tout les départements sélectionnés.

Le problème vient ensuite car je n'arrive pas à copier les résultats dans une autre zone de liste (qui me servira par la suite).

J'ai essayer un truc de ce style :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub btn_valider_select_dept_Click()
 
 Dim frm As Form
 Dim ctl As Control
 Dim varItm As Variant
 Dim intI As Integer
 
   Set frm = Forms!frm_select_departement
   Set ctl = frm!Liste_departement
 
   For Each varItm In ctl.ItemsSelected
 
      For intI = 0 To ctl.ColumnCount - 1
 
            Forms!frm_application!liste_dept_selectionne = ctl.Column(intI, varItm)
            Forms!frm_application!liste_dept_selectionne.Requery
 
        Next intI
    Next varItm
 
End Sub

Dans ma tête il faudrait que chaque valeur de la boucle soit copiée dans l'autre zone de liste jusqu'à ce que tout les éléments sélectionnés soient passés en revue, mais le traduire en vba j'ai du mal.
Auriez vous des indications à me fournir ? Ccar étant novice en vba je sèche un peu.

Merci d'avance
Florent_45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 09h21   #2
Invité de passage
 
Homme Florent Millet
Étudiant
Inscription : juin 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme Florent Millet
Localisation : France, Loiret (Centre)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 6
Points : 3
Points : 3
Bon j'ai continué un peu à chercher je vois d'où vient le problème mais n'arrive pas à le résoudre.

Pour le moment j’essaie de copier ma sélection dans une zone de liste du même formulaire (de la zone de liste "Liste_departement" vers la zone de liste "liste_test" j'ai donc ce code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub btn_valider_select_dept_Click()
 
 Dim frm As Form
 Dim ctl As Control
 Dim varItm As Variant
 Dim intI As Integer
 
   Set frm = Forms!frm_select_departement
   Set ctl = frm!Liste_departement
 
   For Each varItm In ctl.ItemsSelected
 
        For intI = 0 To ctl.ColumnCount - 1
 
        Me!liste_test = ctl.Column(intI, varItm)
 
        Next intI
    Next varItm
Me!liste_test.Requery
End Sub
Lorsque je met un "debug.print liste_test" dans ma boucle il me passe bien en revu tout les enregistrements sélectionnés dans la liste "Liste_departement" (avec les 2 colonnes qu'elle contient : no_dept et nom_dept).

Par contre lorsque je met le "debug.print liste_test" après ma boucle je m'aperçoit que seul le dernier enregistrement de la dernière colonne passé en revue est sauvegardé. Et de plus, il n'apparait pas dans ma zone de liste alors que je la met à jour "liste_test.requery".

Il y a donc deux problèmes, d'un côté pouvoir garder dans la liste tout les enregistrements passés en revue dans la boucle de lecture (je suppose que je doit ajouter à cette boucle une commande d'enregistrement, mais je ne la connais pas :s). Et de l'autre côté pouvoir afficher les enregistrements sauvegardés dans la zone de liste (la je voit pas car d'habitude la commande .requery fonctionne).

Je vais continuer à chercher mais auriez vous des idées pour me débloquer?
Merci.

Florent.
Florent_45 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 23h13.


 
 
 
 
Partenaires

Hébergement Web