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 27/07/2011, 16h10   #1
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juillet 2011
Messages : 63
Points : 27
Points : 27
Par défaut Double clic listbox multiselection

Bonjour,

Je suis actuellement à la recherche d'une solution me permettant d'outrepasser mon problème:

Mon formulaire possède actuellement une listbox "lstResults
" (sélection multiple: Aucun), lorsque je double clic sur un enregistrement de cette liste, tout va bien, je peux éditer mon enregistrement. Si je sélectionne une ligne de cette listbox, je peux supprimer l'enregistrement sur lequel je me trouve.

Je souhaite faire évoluer mon code de manière à pouvoir sélectionner plusieurs éléments de cette listbox pour notamment les supprimer (un par un c'est trop long...) seulement lorsque je passe la propriété Sélection multiple à Etendu, mon double clic ne fonctionne plus

Mon code pour la supression:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub btnSuppRecord_Click()
    Dim Response
 
    Response = MsgBox("Voulez-vous supprimer cet enregistrement", vbYesNo)
 
    If Response = vbYes Then
    Dim DB As Database
    Dim RS As DAO.Recordset
 
    Set DB = CurrentDb
 
    DB.Execute "delete * from T_Gestion where Id= " & lstResults.Column(0)
 
    Form_frmLogiciel!lstResults.Requery
    End If
End Sub
Mon code pour l'action de double click:
Code :
1
2
3
4
Public Sub lstResults_DblClick(cancel As Integer)
    DoCmd.OpenForm "frmAutoGestion", acNormal, , "Id = " & Me.lstResults
    Call Form_frmAutoGestion.Archivage
End Sub
Même si je suis ici après pas mal de recherche sur le sujet, je continue à chercher
facedeharicot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 16h34   #2
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

C'est normal que cela ne fonctionne plus car il vous faut utiliser :

Code :
Me.lstResults.ItemsSelected
en général avec une boucle pour récupérer les identifiants sélectionnés dans votre liste à sélection multiple.

Que doit faire le double-clic si vous avec plusieurs enr. sélectionnés ?

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 08h43   #3
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juillet 2011
Messages : 63
Points : 27
Points : 27
Bonjour,

Merci pour votre réponse.

Avec plusieurs enregistrements sélectionnés, le double clic ne doit rien faire pour le moment

EDIT: merci à Philippe JOCHMANS d'avoir déplacé mon sujet dans la bonne section
facedeharicot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h06   #4
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juillet 2011
Messages : 63
Points : 27
Points : 27
Mon ouverture de formulaire fonctionne en mode multiselection enfin pas tout à fait car elle ne semble pas pointer vers un Id (j'ai toujours le même enregistrement qui s'ouvre ou bien mon formulaire à toutes ses cases vides):

Code :
1
2
3
4
Public Sub lstResults_DblClick(cancel As Integer)
    DoCmd.OpenForm "frmAutoGestion", acNormal, , "Id = " & Me.lstResults.ItemsSelected.Item(0)
    Call Form_frmAutoGestion.Archivage
End Sub
Je pensais que la valeur 0 donnée à Item donnait le numéro de colonne, mais en fait c'est plus compliqué que ça
facedeharicot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h46   #5
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
Bonjour,

lstResults.ItemsSelected renvoie une collection d'index des items sélectionnés...

Même si ça me semble bizarre en mode sélection multiple, voici un exemple d' adaptation de ton code:

Code :
1
2
3
4
5
6
7
Public Sub lstResults_DblClick(cancel As Integer)
    Dim itemIndex As Variant
    For each itemIndex In lstResults.ItemsSelected
        DoCmd.OpenForm "frmAutoGestion", acNormal, , "Id = " & lstResults.ItemData(itemIndex)
    Next
    Call Form_frmAutoGestion.Archivage
End Sub
A noter que si tu n'es pas en mode sélection multiple, lstResults renvoie directement la valeur sélectionnée
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/07/2011, 10h58   #6
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juillet 2011
Messages : 63
Points : 27
Points : 27
Merci pour ta réponse, ça fonctionne parfaitement

La sélection multiple me sert/servira à supprimer plusieurs éléments de ma listbox lstResults.
Le double clic me servant à Editer un des enregistrement de ma liste

Il ne me reste plus qu'à adapter le code de mon bouton de supression

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub btnSuppRecord_Click()
    Dim Response
 
    Response = MsgBox("Voulez-vous supprimer cet enregistrement", vbYesNo)
 
    If Response = vbYes Then
        Dim DB As Database
 
        Set DB = CurrentDb
 
        DB.Execute "delete * from T_Gestion where Id= " & lstResults.Column(0)
 
        Form_frmLogiciel!lstResults.Requery
    End If
End Sub
facedeharicot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h59   #7
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

Le code de mkl238 est bien dans l'esprit, mais il faut utiliser la boucle pour récupérer les items sélectionnés et les concaténer pour utilisation sous forme de filtre puis en final (après la boucle) lancer le formulaire avec ce filtre ...

Bcdt

autant pour moi ... je pensais que vous vouliez ouvrir le formulaire sur la base de tous les items sélectionnés dans la liste, mais ce n'est pas le cas d'après la réponse précédente ...
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 11h06   #8
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juillet 2011
Messages : 63
Points : 27
Points : 27
Citation:
Envoyé par fbtsra Voir le message
Bonjour,

Le code de mkl238 est bien dans l'esprit, mais il faut utiliser la boucle pour récupérer les items sélectionnés et les concaténer pour utilisation sous forme de filtre puis en final (après la boucle) lancer le formulaire avec ce filtre ...

Bcdt

autant pour moi ... je pensais que vous vouliez ouvrir le formulaire sur la base de tous les items sélectionnés dans la liste, mais ce n'est pas le cas d'après la réponse précédente ...
Effectivement, je n'ai pas été très clair dans mon explication dès le départ

La multisélection ne me sert que pour supprimer. J'édite un formulaire à la fois
facedeharicot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 15h51   #9
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : juillet 2011
Messages : 63
Points : 27
Points : 27
Voici ma Sub fonctionnelle:

Code :
1
2
3
4
5
6
7
8
Public Sub lstResults_DblClick(cancel As Integer)
    Dim itemIndex As Variant
    For Each itemIndex In lstResults.ItemsSelected
        DoCmd.OpenForm "frmAutoGestion", acNormal, , "Id = " & lstResults.ItemData(itemIndex)
    Next
    Call Form_frmAutoGestion.Archivage
 
End Sub
Merci pour l'aide apportée
facedeharicot 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 15h23.


 
 
 
 
Partenaires

Hébergement Web