[ACCESS] Impression toutes valeur d'une liste

Fermé
Koozag Messages postés 391 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 31 janvier 2013 - 9 juil. 2008 à 11:14
Koozag Messages postés 391 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 31 janvier 2013 - 15 juil. 2008 à 10:08
Bonjour,
voila, j'ai un formulaire avec access me renvoyant vers un Etat. Dans ce formulaire il y a une liste déroulante avec une liste de nom, lorsque l'utilisateur sélectionne un nom et clique sur le bouton d'envoi, cela amène sur l'Etat qui renverra des valeurs.
J'ai vu qu'il été possible d'imprimer un Etat en mettant un bouton sur le formulaire, seulement, mon chef me demande d'imprimer tous les Etats d'un coup, c'est à dire que les Etats de la liste déroulantes sois calculer et imprimer, sans forcément les montrer, y'a-t-il une solution ?

J'avais pensé dans mon code VBA, à mettre une boucle au début, calculer, imprimer et recommencer la boucle avec la valeur suivante, est-ce possible ? Et comment faire pour passer au nom suivant de la liste déroulante (en code VBA) ?

Merci de prendre un peu de temps pour me répondre, et me donnez vos avis / conseils !

Cordialement

Koozag

4 réponses

LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
14 juil. 2008 à 08:26
c'est à dire que les Etats de la liste déroulantes sois calculer et imprimer, sans forcément les montrer,

...

Merci de prendre un peu de temps pour nous expliquer clairement ton problème...

Genre par exemple en nous communiquant le code attaché au bouton, sans ça on peut pas t'aider.
0
Koozag Messages postés 391 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 31 janvier 2013 50
15 juil. 2008 à 08:12
Mon code attaché au bouton est simple et répétitif, en voici un bout :

Sub employe_Click()

'Variable
Dim StrMsg, StrSQL, StrSELECT, StrFROM, StrWHERE As String
Dim StrVendrediD, StrLundi, StrMardi, StrMercredi, StrJeudi, StrVendredi As String
Dim StrChVendrediD, StrChLundi, StrChMardi, StrChMercredi, StrChJeudi, StrChVendredi As String
Dim StrMatVendrediD, StrMatLundi, StrMatMardi, StrMatMercredi, StrMatJeudi, StrMatVendredi As String
Dim StrChef As String

'Contrôle des saisies
If (IsNull(Chef)) Then
StrMsg = " Vous n'avez pas effectué toutes les saisies. Veuillez recommencez!"
MsgBox (StrMsg)
End If

'Chaine Chef
StrSELECT = "Chef "
StrFROM = "chantier "
StrChef = "Chef LIKE '" & Chef.Value & "' "

'Concaténation de la chaîne SQL
StrSQL = "SELECT " & StrSELECT
StrSQL = StrSQL & "FROM " & StrFROM
StrSQL = StrSQL & "WHERE " & StrChef & ";"

'Mise à jour de la définition de la requête SQL
CurrentDb().QueryDefs("Chef").SQL = StrSQL


'Chaine SQL VendrediD
StrSELECT = "Employé "
StrFROM = "Employe "
StrVendrediD = "VendrediD LIKE '" & Chef.Value & "' "

'Concaténation
StrSQL = "SELECT " & StrSELECT
StrSQL = StrSQL & "FROM " & StrFROM
StrSQL = StrSQL & "WHERE " & StrVendrediD & ";"

'Mise à jour de la définition de la requête SQL
CurrentDb().QueryDefs("VendrediD").SQL = StrSQL


Le code est toujours le même, des requetes se mettent à jour, mettant à jour des formulaires qui sont dans un Etat.
A la fin de ces mises à jour de requetes, il y à l'ouverture de l'Etat :
'Ouverture de l'état
DoCmd.OpenReport "PlanHebdo", acPreview


Et enfin le code de l'impression :
'Impression
On Error GoTo Err_print_Click

Dim stDocName As String

stDocName = "PlanHebdo"
DoCmd.OpenReport stDocName, acNormal

Exit_print_Click:
Exit Sub

Err_print_Click:
MsgBox Err.Description
Resume Exit_print_Click
'Fin Impression




Ce que j'aimerais, c'est mettre une boucle qui commence avant les premières requetes et qui finit après le code de l'impression. Cette boucle se terminerais quand tous les enregistrements de la liste déroulantes sont passés.
Le souci c'est que je ne connais pas le code pour passer d'un enregistrement à l'autre, ou pour savoir comment commencer au premier enregistrement. C'est très dur en fait d'expliquer, mais sa à l'air plus simple en fait, car le code interne n'est pas important, il faut juste que la boucle permette de changer de Chefs (enregistrements de la liste déroulante) à chaque fois, et une fois arriver a dernier de la liste, sortir de la boucle.
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
15 juil. 2008 à 09:22
Je ne suis pas sûre, mais je CROIS que ce que tu fais est MEGA compliqué.

A priori, une requête sans critères servant à construire un état avec regroupement aurait des milliers de fois mieux fait l'affaire. A vue de pif et vu d'ici.

Tu fais un "formulaire dans un état" (??????) là où un regroupement suffirait...
0
Koozag Messages postés 391 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 31 janvier 2013 50
15 juil. 2008 à 10:08
J'ai vu que c'été méga compliqué mais je reprend le codes des prédécésseurs et j'ai peu de temps, je dois tout automatiser, mais vu que sa marche je laisse. Ce qui m'énèrve c'est que j'arrive pas à faire les boucles, quand je clique sur le bouton sa me fait l'Etat, les requetes fonctionnent, sa m'imprime l'Etat, mais je voudrais faire une boucle our chaque enregistrement de la liste déroulante "Chef".

J'ai tenté avec ça

Dim db As DAO.Database
Dim rs1 As DAO.Recordset

Set db = CurrentDb
Set rs1 = db.OpenRecordset("SELECT nom FROM Chef1")

Do Until rs1.EOF



<CODE>


MsgBox ("L'impression du Planning de " & Chef & " est en cours !")

'Impression
On Error GoTo Err_print_Click

Dim stDocName As String

stDocName = "TOTO"
DoCmd.OpenReport stDocName, acNormal

Exit_print_Click:
Exit Sub

Err_print_Click:
MsgBox Err.Description
Resume Exit_print_Click
'Fin Impression

rs1.MoveNext

Loop


En fait ca sort direct de la boucle, alors que pour ce test là j'ai 2 valeurs dans la liste déroulante.... je comprend pas pourquoi ça ne fonctionne pas.
0