IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Comment ne pas impirmer en PDF les états vides


Sujet :

IHM

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut Comment ne pas impirmer en PDF les états vides
    Bonjour,

    J'imprime (aperçus) des états ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DoCmd.OpenReport ("BC_REG1"), acPreview
    DoCmd.OpenReport ("BC_REG2"), acPreview 
    ....  (liste de tous les autres états
    Il peut arriver que des états soient vides alors j'ai mis ceci dans les états :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Report_NoData(Cancel As Integer)
      MsgBox "rien à imprimer", vbExclamation, "INFO"
      Cancel = True
    End Sub
    Cela marche parfaitement. Mais suite à tous les aperçus. Je souhaite stocker tous les états sous un format PDF. Donc j'ai mis ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Chemin = "C:\envoiFTP\archives\Les_BC\" & CLIENT & "_REG1_" & REFBC & ".pdf"
    DoCmd.OutputTo acOutputReport, "BC_REG1", "PDFFormat(*.pdf)", Chemin, False, "", 0
    Chemin = "C:\envoiFTP\archives\Les_BC\" & CLIENT & "_REG2_" & REFBC & ".pdf"
    DoCmd.OutputTo acOutputReport, "BC_REG2", "PDFFormat(*.pdf)", Chemin, False, "", 0
    ... (suite avec tous les autres états)
    Mais lors de l'éxécution, en toute logique, il me remet le message "rien à imprimer" lorsque un état est vide. Donc si en aperçu, j'ai 5 états vide, j'obtiens 5 fois "rien à imprimer" puis ensuite pour la génération des pdf, j'obtiens de nouveau 5 fois "rien à imprimer".

    Je trouve que c'est contraignant pour l'utilisateur. Y aurait-il un moyen pour que le code d'impression des PDF ne se lance que si les aperçus ont donné un résultat.

    Je pensais à valoriser une variable du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If DoCmd.OpenReport ("BC_REG1"), acPreview = True  Then
    BC1="Ok pour PDF"  .....
    Mais je ne sais pas s'il possible de gérer qq chose dans ce genre ?

    Merci pour votre aide
    Thibault

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    Bonjour,

    Pourquoi ne pas gérer ça avec une variable globale ?

    Tu la revalorise à false dans chaque nodata et à vrai dans chaque sur formatage.

    Tu ne déclenche la commande output que si elle est à vrai.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut
    Merci Loufab.
    Mais cela ne marche pas. Je pense que je dois faire une erreur dans la déclaration.

    Voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Public ETAT1 As String
    Public ETAT2 AS String...
    Dans mon état 1, sur l'évenement NODATA, j'ai ajouté : (idem avec ETAT2...sur les autres états)
    Sur mon bouton IMPRIMER_Click, j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    DoCmd.OpenReport ("BC_REG1"), acPreview
    DoCmd.OpenReport ("BC_REG2"), acPreview
    ...
     
    ' XXXXXXXX Edition PDFXXXXXXXXXXXX
    If BCREG1ETATVIDE <> "VIDE" Then
            Chemin = "C:\envoiFTP\archives\Les_BC\" & CLIENT & "_REG1_" & REFBC & ".pdf"
            DoCmd.OutputTo acOutputReport, "BC_REG1", "PDFFormat(*.pdf)", Chemin, False, "", 0
    End If
    ...
    Lors du déroulement en déboggage, je vois bien ma variable prendre "VIDE" lors du passage de l'état vide, mais dés que cela revient dans la procédure IMPRIMER_Click, la variable perd sa valeur.


    Je pensais que mettre PUBLIC devant la variable devait la rendre lisible dans toutes les procédures ?

    MErci

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut
    J'ai trouvé grâce aux archives du forum : un ancien post similaire indiquait une soluce dans la FAQ et j'ai trouvé :

    Voici ce qu'il faut faire si qq'un rencontre un jour le même pb que moi :

    http://access.developpez.com/faq/?pa...gage#VarGlobal

    Il faut bien déclarer la variable avec PUBLIC mais dans un module.

    J'ai donc créer un module "variablesGlobales" et j'y ai mis mes décalarations.

    Merci
    Thibault

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    Oui une variable globale se déclare OBLIGATOIREMENT dans un module et non un module d'objet (form ou report).
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/11/2011, 14h18
  2. [XL-2003] Comment charger un userfrom avec tous les TextBox vides
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/09/2010, 22h37
  3. [AC-2007] Comment ne pas valider une zone de texte vide
    Par BRUNO71 dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/05/2010, 10h30
  4. Comment ne pas etre bloqué par les dépendances ?
    Par mucky dans le forum Mandriva / Mageia
    Réponses: 4
    Dernier message: 20/12/2009, 13h37
  5. Réponses: 2
    Dernier message: 16/07/2009, 17h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo