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

Access Discussion :

Réaliser des copies des pages d'un état en changeant la couleur du détail


Sujet :

Access

  1. #1
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut Réaliser des copies des pages d'un état en changeant la couleur du détail
    Bonjour !

    Voilà, j'ai une colle .... la personne pour laquelle je réalise le projet access édite actuellement des bons de livraisons pour ses clients .... elle possède un logiciel qui lui fait un état BL en 4 exemplaires ... elle imprime ces quatres exemplaires sur 4 feuilles accrochées ensemble (papier carbone), les deux premières feuilles sont blanches, la troisième est bleue et la quatrième est rose . Ainsi, elle sait que la première page blanche est pour le client, la seconde est une copie, la troisième bleue ira dans les archives et la rose je sais plus pour quoi faire...
    cela permet en effet une visualisation plus rapide du dossier en cours. Par exemple, elle traite des tonnes de BL par jours donc si elle voit un BL rose dans sa pile, elle sait que la commande est traitée, si elle voit un bleu alors c'est pas fini .... etc ...

    Donc ma colle c'est que je dois réaliser le même principe sous un état Access !

    - J'ai fait un tour dans le forum (quelqu'un avait le même pb, on lui a conseillé de faire une boucle d'ouverture )
    http://www.developpez.net/forums/sho...at+exemplaires
    - J'ai fait un tour dans la FAQ :
    * j'ai trouvé comment imprimer un état en plusieurs exemplaires :
    http://access.developpez.com/faq/?pa...lrsExemplaires
    * J'ai trouver comment changer le détail de couleur selon les pages :
    http://access.developpez.com/faq/?pa...#CoulLigneEtat

    Le problème c'est que j'aimerai fusionner les deux solutions proposées par la FAQ : c'est-à-dire : Faire une copie en X 4 de toutes les pages de mon BL (car il peut y en avoir plusieurs!) tout en changeant la couleur du détail à chaque copie ..... hélas, la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.PrintOut acPages, , , , itCopies
    ne me permet pas de traiter différement les copies.

    De plus, ouvrir un état par copie serait lourd à réaliser et je ne sais pas si en faisant un état par copie l'impression des 4 exemplaires se ferait d'un coup, en une seule fois....
    Je sais pas si je me suis bien fait comprendre ....

    Donc voilà, si quelqu'un peut me montrer la voie dans cette usine à gaz , je serai bien heureuse !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut Mariboo,

    Il est éventuellement faisable de changer la couleur des sections, pour un etat comportant plusieurs pages !

    Mais il n'est pas possible en VBA de changer la couleur d'une page imprimée en 4 exemeplaires.

    Pour moi Il n'y a que 2 solutions
    1) c'est faire 2 copies de ton Etat
    - l'original est en blanc
    - la copie 1 est en bleu
    - la copie 2 est en rose
    Donc il faut ouvrir chaque état et les imprimer

    2) Par VBA avec un seul Etat
    Par contre plutôt que d'utiliser "PrintOut", tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ' Premier exemplaire BLANC
    DoCmd.OpenReport "MonEtat", acNormal, , , , 16777215
    ' Deuxième exemplaire BLANC
    DoCmd.OpenReport "MonEtat", acNormal, , , , 16777215
    ' Troisième exemplaire BLEU
    DoCmd.OpenReport "MonEtat", acNormal, , , , 16744448
    ' Quatrième exemplaire ROSE
    DoCmd.OpenReport "MonEtat", acNormal, , , , 12615935
    Dans ton Etat tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Report_Open(Cancel As Integer)
      If Len(Me.OpenArgs) > 0 Then
        Me.EntêteÉtat.BackColor = Me.OpenArgs
        Me.Détail.BackColor = Me.OpenArgs
        ' Etc ... Pour toutes les sections
      End If
    End Sub
    Voila

  3. #3
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut
    Ah OUAIS ! vu sous cet angle ça me plait mieux !

    Je pense ouvrir l'original en normal(preview) et les autres en mode caché ...
    Par contre, est-il possible, d'imprimer tous les états en même temps ??
    Si la personne va cliquer sur fichier - > imprimer de l'état original , comment faire pour qu'il m'imprime aussi tous les autres états ouvert en mode caché ?

  4. #4
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Tu peut lui faire toi même un bouton imprimer (tu crée une barre d'outil personnalisé) et tu associe au code de ce bouton l'impression de tes 4 versions

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mariboo
    Ah OUAIS ! vu sous cet angle ça me plait mieux !
    Je pense ouvrir l'original en normal(preview) et les autres en mode caché ...
    Par contre, est-il possible, d'imprimer tous les états en même temps ??
    Si la personne va cliquer sur fichier - > imprimer de l'état original , comment faire pour qu'il m'imprime aussi tous les autres états ouvert en mode caché ?
    Imprimer les états en même temps, non, l'un après l'autre oui

    Normalement avec "acViewNormal" et non "acNormal", l'état est imprimer sans le voir à l'écran

    Cordialement

  6. #6
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut
    Bon, j'ai fait plein de bidouillage ....

    Au final, je garde ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ' Premier exemplaire BLANC
    DoCmd.OpenReport "MonEtat", acPrewiew, , , , 16777215
    ' Deuxième exemplaire BLANC
    DoCmd.OpenReport "MonEtat", acPrewiew, , , , 16777215
    ' Troisième exemplaire BLEU
    DoCmd.OpenReport "MonEtat", acPrewiew, , , , 16744448
    ' Quatrième exemplaire ROSE
    DoCmd.OpenReport "MonEtat", acPrewiew, , , , 12615935
    Je les ouvrent tous en même temps en aperçu (je ne veux pas que ça s'imprime sans passer par la boite de dialogue) mais au final y en a qu'un qui s'affiche donc c'est bon.

    Puis ensuite pour imprimer, j'ai une barre de menu spéciale pour cet état qui va m'ouvrir la fenêtre de dialogue d'impression à partir de l'aperçu et grâce à la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.RunCommand acCmdPrint
    Que j'ai du mettre dans la fonction suivante (Prise sur le forum) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public Function fgImprimeCopiesEtat()
     
        DoCmd.RunCommand acCmdPrint
     
        DoCmd.PrintOut acPages, , , , 4
        DoCmd.Close acReport, "Etat BL"
     
     
    End Function
    Cette fonction va donc m'ouvrir la boite dialogue d'impression et me faire 4 copie de l'état....

    Cependant il me reste un souci, quand on fait "Annuler" dans cette boite de dialogue, il y a une erreur .... et je n'arrive pas à lever une erreur dans une fonction , le GoTo ne marche pas ...

    Donc ma question est maintenant : comment faire pour lever une erreur dans une fonction (un module)?

  7. #7
    Membre actif Avatar de Mariboo
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 254
    Points : 238
    Points
    238
    Par défaut
    Bon en fait, ça va pas .... on ne peut vraiment pas imprimer tous les états d'un coup...

    J'ai tout repris depuis le bédut et j'ai trouvé un truc tout bête :

    - J'ouvre un aperçu de mon état original
    - J'ai un bouton "Imprimer" dans la barre de menu spécialement pour cet état
    - ce bouton imprimer m'exécute le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Public Function fgImprimeCopiesEtat()
     
        'DoCmd.RunCommand acCmdPrint
     
        ' Premier exemplaire BLANC
        DoCmd.Close acReport, "Etat BL"
        Couleur = 16777215
        DoCmd.OpenReport "Etat BL", acNormal
     
        ' Deuxième exemplaire BLANC
        DoCmd.OpenReport "Etat BL", acNormal
        DoCmd.Close acReport, "Etat BL"
        ' Troisième exemplaire BLEU
        Couleur = 16744448
        DoCmd.OpenReport "Etat BL", acNormal
         DoCmd.Close acReport, "Etat BL"
        ' Quatrième exemplaire ROSE
        Couleur = 12615935
        DoCmd.OpenReport "Etat BL", acNormal
         DoCmd.Close acReport, "Etat BL"
     
    End Function
    Donc on lance l'impression directement en ouvrant 4 fois l'état en mode "Normal"
    Et dans le code d'ouverture de mon état j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
       If Len(Couleur) > 0 Then
            If Couleur <> 16777215 Then
                Me.Boîte23.BackColor = Couleur
                Me.Copie.Visible = True
                If Couleur = 16744448 Then
                    Me.Copie = "3/4"
                Else
                    Me.Copie = "4/4"
                End If
            Else
                Me.Boîte23.BackColor = Couleur
                Me.Copie.Visible = False
            End If
      End If
    En fait j'ai laissé tombé l'ouverture de la boite de dialogue d'impression.. Ils auront qu'à choisir leur imprimante AVANT !!

    En plus au lieu de colorier l'état j'ai préférer colorier un rectangle en haut de la page sinon bonjour la consommation d'encre !

    Voilà la solution que j'ai trouvée ... il y a surement mieux ....

    @ Bientôt !! et merci pour votre aide !!

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

Discussions similaires

  1. Copy des dates des dossiers
    Par alpha_one_x86 dans le forum C
    Réponses: 1
    Dernier message: 01/04/2013, 15h54
  2. [XL-2003] Copie des valeurs des cellules dans un userform de Word
    Par SSOOAADD dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/02/2011, 14h34
  3. Réponses: 19
    Dernier message: 20/12/2006, 10h15
  4. Gestion des majuscules des miniscules des accent
    Par issam16 dans le forum Access
    Réponses: 2
    Dernier message: 13/07/2006, 14h21

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