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 23/01/2012, 14h38   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2010
Messages : 47
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 47
Points : 12
Points : 12
Par défaut selection multiple sur un sous formulaire

Bonjour à tous,

Dans un formulaire "VueFichierIDA" j'ai un sous-formulaire "conteneurListeFichier" qui contient un formulaire "listeFichier" dont la recordSource est la suivante :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
    requete = "SELECT [" & tablePays & "].[2G_File_Name] AS FileName2G, " & _
                     "[" & tablePays & "].SEISMIC_NAME, " & _
                     "[" & tablePays & "].[2G_SEISMIC_NAME] AS SeismicName2G, " & _
                     "[" & tablePays & "].[2G_seismic_name_corrected_file_name] AS CorrectedSeismicName2G, " & _
                     "[" & tablePays & "].[2G_seismic_name_corrected_officiel] AS CorrectedOfficielSeismicName2G, " & _
                     "[" & tablePays & "].rebus " & _
              "FROM [" & tablePays & "] " & _
              "WHERE ([" & tablePays & "].IDA_SAA)='" & IDA & "' " & _
              "ORDER BY [" & tablePays & "].[2G_File_Name];"
 
    Forms!VueFichierIDA!conteneurListeFichier.Form.RecordSource = requete
Le formulaire s'affiche avec les bons champs, tout est bien comme je le veux.

Je voudrais maintenant faire un bouton qui me permettrait de réaliser une action sur toutes les lignes sélectionnées dans ce sous-formulaire.

J'ai pas mal cherché mais j'ai pas trouvé le moyen de parcourir les objets sélectionnés dans un sous-formulaire.

J'ai quand même essayé de faire un truc du genre :
Code :
1
2
3
4
5
6
7
8
9
10
 
    Dim test
 
    test = FileName2G 'L’élément "FileName2G " de la première ligne sélectionnée
 
    selection.Next     'je vais à la suivante
 
    test = FileName2G  'L’élément "FileName2G " de la deuxième ligne sélectionnée
 
    ...
Mais ça me met l'erreur '429' : "Un composant ActiveX ne peut pas créer d'objet." à la ligne selection.Next

Si quelqu'un sait le faire, je suis preneur.

Merci d'avance !

[Edit] : J'ai omis de dire que j'affiche le sous formulaire en feuille de données
zenico64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 20h06   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 090
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 090
Points : 11 622
Points : 11 622
Bonjour,

Next n'existe pas.

C'est MoveNext sur un objet recordset.

Exemple :

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 08h34   #3
Rédacteur/Modérateur
 
Avatar de Jeannot45
 
Homme Jean BALLAT
Inscription : octobre 2004
Messages : 2 856
Détails du profil
Informations personnelles :
Nom : Homme Jean BALLAT
Âge : 63
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : octobre 2004
Messages : 2 856
Points : 5 220
Points : 5 220


D'autre part, si tu souhaites faire des sélections multiples (continues ou discontinues) il serait plus judicieux d'utiliser une Zone de Liste plutôt qu'un sous formulaire.
__________________
Jeannot

Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., [B]Sources VBA

Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre
Jeannot45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 09h15   #4
Candidat au titre de Membre du Club
 
Inscription : novembre 2010
Messages : 47
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 47
Points : 12
Points : 12
Merci d'avoir répondu

Alors en effet Jeannot une zone de liste serait peut être mieux pour une selection multiple mais elle offre des temps de réponses trop long (du moins comme je l'utilisais)

J'ai cependant trouvé une solution et la voici :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
    'Affiche l'index de début de sélection et le nombre de lignes sélectionnées
    MsgBox indexStartSelection & "-" & countLinesSelection
    'Je me place au début de la sélection
    conteneurListeFichier.Form.Recordset.MoveFirst
    'Je peux aussi me placer à un endroit souhaité
    conteneurListeFichier.Form.Recordset.Move indexStartSelection - 1
 
    'Je parcours la sélection
    For i = 0 To countLinesSelection
 
        'J'affiche le numéro de ligne et le contenu d'une de mes cellules
        MsgBox conteneurListeFichier.Form.CurrentRecord & "-" & conteneurListeFichier.Form.CorrectedSeismicName2G
 
        'si je ne suis pas au dernier enregistrement de ma selection, je continue sinon je quitte
        If i <> countLinesSelection - 1 Then conteneurListeFichier.Form.Recordset.Move 1 Else Exit For
 
    Next i
Voilà de la matière pour ceux qui, comme moi, batailleront là dessus.

Merci à tous
zenico64 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 20h09.


 
 
 
 
Partenaires

Hébergement Web