[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
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
A voir également:
- [ACCESS] Impression toutes valeur d'une liste
- Spouleur d'impression - Guide
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Exemple base de données access à télécharger gratuit - Forum Access
- Liste de diffusion whatsapp - Guide
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
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.
...
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.
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
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.
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.
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
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...
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...
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
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.
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.