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 :

[ETAT] Positionnement fixe pour Pied de Facture ?


Sujet :

IHM

  1. #1
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 189
    Points : 151
    Points
    151
    Par défaut [ETAT] Positionnement fixe pour Pied de Facture ?
    Bonjour,

    Nous utilisons un état comme facture, qui est lui fractionné en 3 parties qui sont techniquement 3 sectons d'un état (cf image):

    1. secHeadOrderBill: Entête
    2. secDetail: Détail de produits facturés, section = Report.Section(acDetail)
    3. secFoot: Pied de facture


    Nous voulons que secFoot commence toujours à la même position, à 5cm du bas de la page par example, quelque soit le contenu de la section secDetail. En effet la section secDetail se multiplie autant de fois que le nombre d'enregistrements à imprimer, son cumul change de taille comme le nombre des produits facturés peut varier de 1 à 1000.

    Pourriez-vous m'éclairer ?


  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Pourriez-vous préciser.
    Supponsons que la facture comporte 4 pages en raison du nombre de produits.
    Voulez-vous ceci :
    1ère page : l'entête et le début du détail
    2ème et 3 ème pages : uniquement du détail
    4ème page : la fin du détail suivi du "pied de la facture", ce dernier se terminant à 5 cm du bord inférieur de la feuille ?

  3. #3
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 189
    Points : 151
    Points
    151
    Par défaut
    Merci à ta réponse ClaudeLELOUP,

    Il me faut que le "Pied de facture" se trouve à 5cm de la marge inférieure de la dernière page.

    Ce "Pied de facture" ne peut pas être sur le "Pied de Page" acFooter de l'état, car cela pose des problèmes de somme d'une commande pour le Montant total, TVA, paiements etc.

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Pour contourner le problème des calculs (sans doute des cumuls) vous pourriez peut-être envisager ceci comme architecture :

    1ère étape du raisonnement : construire les morceaux
    Confectionner 3 états indépendants basés sur la requête actuelle
    - l’entête
    - le détail des livraisons
    - les totaux récapitulatifs
    1 page par client
    Lorsqu’ils sont au point, occulter dans « détail » et « totaux » l’impression des données redondantes (sans doute l’identifiant client)


    2ème étape : rassembler les morceaux (la facture proprement dite)
    Un état composé, dans la zone « Détail », des 3 sous-états décrits à la 1ère étape
    Avec comme propriétés
    « source » = une requête qui donne 1 enregistrement par identifiant client
    « champs fils » et « champs pères » = l’identifiant client
    « auto extensible » = oui
    Provoquer un saut de page à chaque client

    Vous laissez ainsi à Access le soin de mettre en page et vous vous affranchissez « des problèmes de somme d'une commande pour le Montant total, TVA, paiements etc. »

  5. #5
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 189
    Points : 151
    Points
    151
    Par défaut
    Merci ClaudeLELOUP,

    Permettez-moi de continuer à vous tutoyer, il me semble que cela est conventionnel dans le Forum.

    Ta strucutre ne garantit pas le positionnement de "Pied de facture" à 5cm du bord bas de la page ?

    J'expose plus sur la structure en usage: chaque client CustomerRef peut avoir autant de commandes. Chaque commande est identifiée par OrderRef.

    Afin d'utiliser les fonctions de cumul telles que SUM(),COUNT(),FIRST(),etc., le "Pied de facture" est en effet la section du Pied du groupement de OrderRef, grouplevel nommé secFoot. Sur lequel je mets des sous-états de cumul pour Montant, Paiements, TVA etc. qui sont liés père-fils par le champ OrderRef.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Report.Section(acDetail).CanGrow = true
    afin d'imprimer les descriptions de produits longues.

    Pour localiser à peu près ce "Pied de facture", via VBA Report_Open(), je la grandis par modifier .Height de la section, et je déplace ces sous-états vers le bas. La quantité de cette translation est calculée par rapport au nombre de produits dans la commande dans la section secDetail (section Détail).

    Le problème se pose lorsque, par exemple, 5 produits prennent une seule ligne chacun, 6 prennent 2 lignes: on ne peut plus déterminer la taille effective de la section Détail, car autoextensible.

  6. #6
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 406
    Points : 1 683
    Points
    1 683
    Par défaut
    Bonjour,

    Vite fait une idée à mettre tout de suite à la poubelle si nécessaire :

    Ton pied de facture, que tu veux mettre à la fin de ta facture et en bas pourrait être assimilé à un pied de page que l'on ne voit que sur la dernière page ???

  7. #7
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Tu peux mettre des champs calcules dans ton pied d'état via VBA. Cependant comme le dit très justement ClaudeLELOUP et si la facture fait plus d'une page ?

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    TuTuTu….. J’ignorais l’usage. Je m’adapte.
    Une idée :
    -essayer de placer une espèce d’air-bag entre l’impression de la dernière ligne du détail et le début de l’impression du pied de facture.
    -l’épaisseur de cet air-bag serait modulée dans chaque facture, de manière à positionner le texte à l’endroit voulu
    -si on parvenait à déterminer cette épaisseur utile (en Twips), alors, dans l’événement « sur formatage » de la section pied de facture, on lancerait une boucle sur tous les contrôles de la section pour incrémenter, de cette épaisseur, leur propriété « Hauteur » d’origine.
    -on détricoterait cette translation par exemple dans le 1er événement « sur impression » du CustomerRef suivant.

    le hic :
    comment déterminer l’ordonnée de la dernière ligne détail sur la page en cours d’impression ?
    Il y a sans doute une donnée disponible dans Access ou peut-être moyen de la calculer avec précision dans le cas présent ?
    -autre souci :
    que doit-il se passer lorsque l’espace restant disponible après l’impression de la dernière ligne est trop exigu pour accueillir le texte du pied de facture ?

  9. #9
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 189
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par Gabout Voir le message
    Ton pied de facture, que tu veux mettre à la fin de ta facture et en bas pourrait être assimilé à un pied de page que l'on ne voit que sur la dernière page ???
    Cela pose problème technique: les fonctions de cumul SUM(), COUNT(), etc. ne marchent pas sur le pied de page. Mais idée à creuser par un calcul VBA ?

    Par ailleurs, même si l'on cache les pieds de page sauf la dernière, Access calcule tout de même pour chaque page, la performance ne sera pas optimale.

  10. #10
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 189
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par Jeannot45 Voir le message
    Tu peux mettre des champs calcules dans ton pied d'état via VBA. Cependant comme le dit très justement ClaudeLELOUP et si la facture fait plus d'une page ?
    Cela pose problème technique: les imaginons que l'on imprime plusieurs factures en même temps (cela arrive souvent pour la comptabilité), les fonctions de cumul donnent le résultat de toutes les ventes sur la section Pied d'état (acFooter), mais pas par vente individuelle: il me faut donc faire le cumul sur le grouplevel OrderRef correspondant à une seule vente.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Il y a peut-être une solution, mais un peu tordu, c'est d'écrire toi même dans la page.

    Il faut détecter la dernière page, pour cela voir du coté de Page et de sa collection.

    Sur l'évènement Report_Page tu détectes la dernière page, tu connais la taille d'une page, et donc tu écris où tu peux aussi dessiner à l'endroit ou tu veux.

    Pour plus d'infos sur ces méthodes, il existe un article : http://starec.developpez.com/tuto/ecriredessineretats/

    Starec

  12. #12
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 189
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    TuTuTu…..
    Merci .

    -essayer de placer une espèce d’air-bag entre l’impression de la dernière ligne du détail et le début de l’impression du pied de facture.
    Ceci serait probablement la meilleure solution, mais:

    comment déterminer l’ordonnée de la dernière ligne détail sur la page en cours d’impression ?
    La majorité de factures ne font qu'une seule page, on peut ignorer les cas de factures qui font plusieurs pages, qui sont ésthétiquement acceptables même si le "Pied de facture" colle à la section Detail sur la dernière page.

    Mais si elle ne fait qu'une seule page, on ne peut pas laisser la moitié de la page vierge.

  13. #13
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 189
    Points : 151
    Points
    151
    Par défaut
    Merci Starec,

    Citation Envoyé par Starec Voir le message
    ...c'est d'écrire toi même dans la page.
    Ta solution serait mon dernier recours. Car dans cette dernière, les fonctions intrinsèques de l'ETAT que je pense les plus performantes et surtout les plus cohérentes et les plus sures, telles que SUM(), COUNT(), FIRST() ne peuvent plus être utilisées.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jacou Voir le message
    Merci Starec,

    Ta solution serait mon dernier recours. Car dans cette dernière, les fonctions intrinsèques de l'ETAT que je pense les plus performantes et surtout les plus cohérentes et les plus sures, telles que SUM(), COUNT(), FIRST() ne peuvent plus être utilisées.
    Tu peux toujours utiliser des équivalences par le code, un autre article du même auteur : http://starec.developpez.com/tuto/fonctionsdomaines/

    Starec

  15. #15
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 189
    Points : 151
    Points
    151
    Par défaut
    Starec, je promets de me mettre sur le dernier article.

    Et bonne soirée de dimanche.

    Bien cordialement.

Discussions similaires

  1. [AC-2010] Etat pour envoi de facture
    Par Smoky184 dans le forum IHM
    Réponses: 23
    Dernier message: 22/06/2014, 07h00
  2. Réponses: 1
    Dernier message: 24/02/2009, 14h27
  3. Réponses: 1
    Dernier message: 07/03/2005, 11h28
  4. [HTML][débutante] Positionnement fixe d'image
    Par khany dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 08/11/2004, 18h01
  5. Stratégie d'installation des fixes pour windows 2000/2003
    Par bill4134 dans le forum Autres Logiciels
    Réponses: 20
    Dernier message: 07/07/2004, 16h04

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