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 26/07/2011, 15h05   #1
Membre habitué
 
Homme Mathieu R
Etudiant MIAGe
Inscription : février 2010
Messages : 145
Détails du profil
Informations personnelles :
Nom : Homme Mathieu R
Âge : 22
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant MIAGe
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2010
Messages : 145
Points : 141
Points : 141
Par défaut Remplir une zone de liste grâce à une selection dans une autre zone

Bonjour à tous,

J'ai un formulaire dans lequel ce trouve deux zones de liste :
ChoixProg
ListeEx

Je suis censé selectionné une ligne dans la liste ChoixProg pour la mettre dans ListeEx, grâce a un bouton

Voila le code du bouton :

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
26
27
28
Sub AjouterProgramme()
DoCmd.SetWarnings (False)
DoCmd.RunSQL "Insert into [tempoProgramme] ([Programme]) values (" & Chr(39) & Me.Liste2.Value & Chr(39) & ")"
 
With Me.Liste6
'boucle de parcours de la listBox
 For i = 0 To Me.ListeExport.ListCount Step 1
  If Trim(Me.ListeExport.Column(0, i)) <> "" Then
  tempString = Trim(Me.ListeExport.Column(0, i))
  vfamille = vfamille & ";" & tempString
  'MsgBox vfamille
  End If
 Next i
End With
'Ajout de la ligne issue de la combobox
tempString = Me.ChoixProg.Value
If vfamille <> "" Then
 vfamille = vfamille & ";" & tempString
Else
 vfamille = tempString
End If
'Affichage dans la listbox
If vfamille <> "" Then
 Me.ListeExport.RowSource = vfamille
End If
'VFamille = Me.cmbProgramme.Value
'Me.ListeProgramme.RowPDP Source = VFamille
End Sub
Cependant, rien ne se passe

Je tiens à préciser que je reprends la conception de ce formulaire et que le code n'est pas de moi

Merci d'avance
__________________
Qui ne tente rien, ne tente rien !
Tydher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 15h36   #2
Membre habitué
 
Homme Mathieu R
Etudiant MIAGe
Inscription : février 2010
Messages : 145
Détails du profil
Informations personnelles :
Nom : Homme Mathieu R
Âge : 22
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant MIAGe
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2010
Messages : 145
Points : 141
Points : 141
J'ai ultra simplifié le code et il me reste seulement :

Code :
1
2
3
4
5
6
Private Sub BoutonAjouter_Click()
 
Me.ListeExport.RowSource = "Select Program.IDPROGRAM, Program.ProgramName FROM PROGRAM where IDPROGRAM = [Forms]![FormsExport]![ChoixProg].Value"
 
Me.Refresh
End Sub
Cependant, en appuyant sur le bouton, j'ai toujours q'une seule ligne dans ma liste alors que je voudrais en avoir plusieurs.

Comment puis-je faire?

Merci
__________________
Qui ne tente rien, ne tente rien !
Tydher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 15h43   #3
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,

il y a 2-3 choses qui ne servent à rien dans le code (du premier post) mais normalement ca devrait ajouter la valeur.

Vérifie que la propriété "sélection multiple" de ChoixProg est bien sur "Aucun" et que l'événement Après MAJ appelle toujours AjouterProgramme()

Attention que la façon dont la liste est remplie dans ton premier post laisse penser qu'il attend une liste de valeur et dans ton deuxième post tu le remplis avec une requête.

Quel est le RowsourceType? (origine source)
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 15h57   #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
Citation:
Envoyé par Tydher Voir le message
J'ai ultra simplifié le code et il me reste seulement :

Code :
1
2
3
4
5
6
Private Sub BoutonAjouter_Click()
 
Me.ListeExport.RowSource = "Select Program.IDPROGRAM, Program.ProgramName FROM PROGRAM where IDPROGRAM = [Forms]![FormsExport]![ChoixProg].Value"
 
Me.Refresh
End Sub
Cependant, en appuyant sur le bouton, j'ai toujours q'une seule ligne dans ma liste alors que je voudrais en avoir plusieurs.

Comment puis-je faire?

Merci
Remplaces la clause WHERE par HAVING. La piste est là je pense

Aussi, il n'y a peut-être pas besoin de .Value
facedeharicot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h00   #5
Membre habitué
 
Homme Mathieu R
Etudiant MIAGe
Inscription : février 2010
Messages : 145
Détails du profil
Informations personnelles :
Nom : Homme Mathieu R
Âge : 22
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant MIAGe
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2010
Messages : 145
Points : 141
Points : 141
Euh aucune idée pour le RowSource Type.

Mais comme j'ai repris ce formulaire et que la structure de la base à changé, j'ai changé de mode de fonctionnement.

Maintenant j'ai une table TempoProg qui stocke les valeurs choisi sur clic de la zone de liste ChoixPRog, et la source de ma zone ListeExport est le contenu de la table TempoPRog

Code :
1
2
3
4
5
6
7
ProgName = ("Select Program.ProgramName from Program where IDPROGRAM = " & [Forms]![FormsExport]![ChoixProg] & "")
Set ProgN = CurrentDb.OpenRecordset(ProgName)
Name = ProgN.Fields("ProgramName").Value
 
DoCmd.RunSQL ("Insert into TempoProg values (" & [Forms]![FormsExport]![ChoixProg] & ",'" & Name & "')")
 
Me.Refresh
Mais j'ai une erreur sur la ligne :
Code :
Name = ProgN.Fields("ProgramName").Value
me disant que la propiété est en lecture seule et que je ne peux pas la définir... !!!

Je ne vois pas pourquoi il m'affiche cette erreur !
__________________
Qui ne tente rien, ne tente rien !
Tydher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h08   #6
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
Citation:
Envoyé par facedeharicot Voir le message
Remplaces la clause WHERE par HAVING. La piste est là je pense

Aussi, il n'y a peut-être pas besoin de .Value
Having est utilisé pour les requêtes avec regroupement, ce qui n'est pas le cas ici.

Citation:
Euh aucune idée pour le RowSource Type.
propriété "origine source" de ta liste doit être sur table/requêtes

Citation:
Name = ProgN.Fields("ProgramName").Value
Name est le nom de ton formulaire courant (ca équivaut à Me.Name), il est effectivement en lecture seule, pourquoi essayes tu de le changer?
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h10   #7
Membre habitué
 
Homme Mathieu R
Etudiant MIAGe
Inscription : février 2010
Messages : 145
Détails du profil
Informations personnelles :
Nom : Homme Mathieu R
Âge : 22
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant MIAGe
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2010
Messages : 145
Points : 141
Points : 141
J'essai pas de le changer justement.
Je viens de me rendre compte à l'instant que c'etait le nom de mon formulaire, donc du coup j'ai changé le nom de la variable et j'arrive à faire ce que je veux

Code :
1
2
3
4
5
6
7
8
9
10
11
DoCmd.SetWarnings False
 
ProgName = "Select Program.ProgramName from Program where IDPROGRAM = " & [Forms]![FormsExport]![ChoixProg] & ""
Set ProgN = CurrentDb.OpenRecordset(ProgName)
ProgrammeName = ProgN.Fields("ProgramName").Value
 
DoCmd.RunSQL ("Insert into TempoProg values (" & [Forms]![FormsExport]![ChoixProg] & ",'" & ProgrammeName & "')")
 
Me.Refresh
 
DoCmd.SetWarnings True
J'aurais plus qu'à supprimé toute les données de la table TempoProg a chaque ouverture du formulaire pour avoir ma liste vide.

Merci beaucoup !
__________________
Qui ne tente rien, ne tente rien !
Tydher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h18   #8
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
Citation:
ProgName = ...
Set ProgN = ...
ProgrammeName = ...
question rien avoir mais, pourquoi encombre tu la mémoire avec des variables inutiles?

Code :
1
2
3
Dim programName As Recordset
Set programName = CurrentDb.OpenRecordset("Select Program.ProgramName from Program where IDPROGRAM = " & [Forms]![FormsExport]![ChoixProg] & "")
DoCmd.RunSQL ("Insert into TempoProg values (" & [Forms]![FormsExport]![ChoixProg] & ",'" & programName.Fields("ProgramName") & "')")
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h20   #9
Membre habitué
 
Homme Mathieu R
Etudiant MIAGe
Inscription : février 2010
Messages : 145
Détails du profil
Informations personnelles :
Nom : Homme Mathieu R
Âge : 22
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Etudiant MIAGe
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2010
Messages : 145
Points : 141
Points : 141
C'est une bonne question
Je pense que je fait comme ça car c'est plus simple de controler la valeur des variables lorsque je fais un pas à pas détaillé.

Après c'est vrai que c'est plus rapide avec ce que tu viens de m'envoyer
__________________
Qui ne tente rien, ne tente rien !
Tydher 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 07h43.


 
 
 
 
Partenaires

Hébergement Web