[ACCESS] Impression toutes valeur d'une liste

Koozag Messages postés 405 Statut Membre -  
Koozag Messages postés 405 Statut Membre -
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
Configuration: Windows 2000
Internet Explorer 6.0

[Config du boulot pas celle de mon pc, j'suis pas assez fou pour tourner sous 2000 et IE 6  -_-']

4 réponses

  1. LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
     
    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
  2. Koozag Messages postés 405 Statut Membre 50
     
    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
  3. LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
     
    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
  4. Koozag Messages postés 405 Statut Membre 50
     
    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