Lister les données d'une colonne dans un champ d'en tête d'état
maxime 25
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dois réaliser des fiches qui liste les produits auxquels sont exposés mes salariés.
Pour cela j'ai réalisé sur Access 2007 un état qui liste les produits utilisés par chaque salariés.
Chaque ligne de l'état correspond à un enregistrement et donc à un produit chimique. Il y a diverse colonnes qui donne les caractéristiques du produit. Une colonne s'intitule VLE dans cette colonne est affiché le nom du produit en question si et seulement si celui-ci a une valeur limite d'exposition.
Seulement, pour respecter la mise en forme de l'entreprise, je dois faire apparaitre toutes les données de cette colonne c'est à dire les nom des produits qui ont une VLE dans l'en tête de mon état.
Chaque état prend en compte les données pour un seul salarié, il est commandé par un contrôle type liste déroulante.
Le souci est que je ne sais pas comment je dois procèder pour faire apparaitre les données de toutes la colonnes dans un seul champ en les séparant par des virgules.
Existe t-il une solution via VBA ?
Voilà j'espere avoir été clair sur mon problème.
Merci d'avance.
Je dois réaliser des fiches qui liste les produits auxquels sont exposés mes salariés.
Pour cela j'ai réalisé sur Access 2007 un état qui liste les produits utilisés par chaque salariés.
Chaque ligne de l'état correspond à un enregistrement et donc à un produit chimique. Il y a diverse colonnes qui donne les caractéristiques du produit. Une colonne s'intitule VLE dans cette colonne est affiché le nom du produit en question si et seulement si celui-ci a une valeur limite d'exposition.
Seulement, pour respecter la mise en forme de l'entreprise, je dois faire apparaitre toutes les données de cette colonne c'est à dire les nom des produits qui ont une VLE dans l'en tête de mon état.
Chaque état prend en compte les données pour un seul salarié, il est commandé par un contrôle type liste déroulante.
Le souci est que je ne sais pas comment je dois procèder pour faire apparaitre les données de toutes la colonnes dans un seul champ en les séparant par des virgules.
Existe t-il une solution via VBA ?
Voilà j'espere avoir été clair sur mon problème.
Merci d'avance.
A voir également:
- Lister les données d'une colonne dans un champ d'en tête d'état
- Fuite données maif - Guide
- Déplacer une colonne excel - Guide
- Trier une colonne excel - Guide
- Colonne word - Guide
- Supprimer les données de navigation - Guide
3 réponses
Bonjour,
une facon de faire:
texte2: zone de texte dans l'entete
choix: la variable a declarer en Public dans un module, recoit le choix du nom salarie dans votre formulaire
je suppose que vous ouvrez l'etat en partant du formulaire
code a mettre dans le VBA de l'etat:
adapatez la requete suivant vos tables
A+
une facon de faire:
texte2: zone de texte dans l'entete
choix: la variable a declarer en Public dans un module, recoit le choix du nom salarie dans votre formulaire
je suppose que vous ouvrez l'etat en partant du formulaire
code a mettre dans le VBA de l'etat:
adapatez la requete suivant vos tables
Option Compare Database Private Sub Report_Activate() Dim rs As Recordset Set rs = CurrentDb.OpenRecordset("SELECT tblContacts.FirstName FROM tblContacts where FirstName='" & choix & "';") rs.MoveLast rs.MoveFirst If Not rs.EOF And Not rs.BOF Then For x = 1 To rs.RecordCount - 1 Texte2 = Texte2 & rs.Fields(0) & "," rs.MoveNext Next x Texte2 = Texte2 & rs.Fields(0) End If End Sub
A+
Oui oui j'ouvre l'état à partir d'un formulaire à partir duquel je selectionne le salarié grâce à une liste déroulante.
Ca m'a l'air bien mais pourriez-vous me mettre des commentaires parce que je ne suis pas expert en VBA et je n'arrive pas à tous comprendre ?
Pourriez-vous aussi me détaillé la procédure à suivre étape par étape pour que celà fonctionne.
Merci d'avance
Ca m'a l'air bien mais pourriez-vous me mettre des commentaires parce que je ne suis pas expert en VBA et je n'arrive pas à tous comprendre ?
Pourriez-vous aussi me détaillé la procédure à suivre étape par étape pour que celà fonctionne.
Merci d'avance
Re,
Option Compare Database
A+
Option Compare Database
Private Sub Report_Activate() Dim rs As Recordset 'creation d'un recordset avec une requete SQL pour avoir les donnees de la "colonne" voulue Set rs = CurrentDb.OpenRecordset("SELECT tblContacts.FirstName FROM tblContacts where FirstName='" & choix & "';") 'test si au moins un enregistrement If Not rs.EOF And Not rs.BOF Then 'positonnement sur le dernier enregistrement pour avoir le nombre d'enregistrements, 'puis sur le premier pour depilage des donnees rs.MoveLast rs.MoveFirst 'boucle de depilage de donnees: 1 a nombre-1 pour eviter la virgule appres le dernier enregistrement 'rs.Fields(0): parce qu'il y a une seule "colonne" For x = 1 To rs.RecordCount - 1 'ecriture des infos en ligne avec une virgule entre (separateur) Texte2 = Texte2 & rs.Fields(0) & "," 'avance d'un enregistrement dans le recordset rs.MoveNext Next x 'derniere infos du recordset Texte2 = Texte2 & rs.Fields(0) End If End Sub
A+