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 :

Ligne libre dans un formulaire [AC-2013]


Sujet :

IHM

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2011
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 160
    Points : 162
    Points
    162
    Par défaut Ligne libre dans un formulaire
    Bonsoir à tous,

    Utopique ou possible d'insérer une ligne libre dans un formulaire en mode continu dont la source est une requête.

    Par exemple la ligne d'une facture contient les champs: Article, Quantité, Prix, TotalLigne.
    Insérer une ligne libre de type texte dans laquelle on pourrait écrire " Référence à la note de livraison xxxxx"

    Merci pour vos réponses

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 816
    Points : 14 909
    Points
    14 909
    Par défaut
    Bonsoir,
    si c'est pour alimenter chaque enregistrement, le plus simple serait de rajouter un champ à la table

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2011
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 160
    Points : 162
    Points
    162
    Par défaut
    Bonjour tee_granbois et merci pour votre réponse.

    A ma table tblarticles j'ai effectivement ajouté un champ "Libre" de type texte
    J'ai aussi créé un article avec en désignation un point "."
    Dans les lignes de ma facture le premier champ article est une zone de liste appelée "Article"
    J'aurais voulu disposer d'une ligne dans laquelle j'aurais pu écrire du texte lorsque j'appelle l'article .


    Et j'ai bien essayé quelque chose avec une instruction if:
    Etant donné que l'identifiant idArt est 578 pour l'article .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if idArt = 578 then
    Article.controlSource = "Libre"
    end if
    Mais si j'appelle l'article . alors toutes les lignes de la factures ont pour source "Libre" et le premier champ est donc vide partout
    Pour aller plus loin, ça me dépasse.

    Merci si vous pouvez m'aider.

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 816
    Points : 14 909
    Points
    14 909
    Par défaut
    Bonjour,
    ce n'était pas forcément clair au départ, mais je pense avoir compris : tu souhaiterais pouvoir charger automatiquement le libellé des articles depuis une zone de liste (basée sur tblarticles champs : idArt, et, on va dire que le second s'appelle Libre), mais pouvoir également modifier ce libellé pour ceux dont le type article est 578.
    Ce n'est pas très orthodoxe surtout si tu utilises le mode continu pour ton formulaire car pour tous les enregistrements les libellés seront modifiables, puisqu'il n'est pas possible de verrouiller certains enregistrements quand on est en ce mode.
    As-tu dans ta table factures les 2 champs correspondants au code article et son libellé ?
    Si oui tu peux déjà essayer ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub idArt_Click()
        If Me.Idart = 578 Then
            Me.Article.Value = Me.Article          ' on garde le libellé mais on peut le modifier après avoir choisi le code 578
        Else 
             Me.Article.Value = Me.idArt.Column(1) ' on charge le libellé de l'article avec la 2ème colonne de la zone de liste contenant à priori le libellé de l'article 
    		                               ' si le code <> 578, mais quand même modifiable aussi 
        End If
    End Sub

  5. #5
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2011
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 160
    Points : 162
    Points
    162
    Par défaut Ligne libre dans un formulaire
    Bonsoir tee_granbois,

    Mea culpa si je n'ai pas été assez clair. J'essaie d'améliorer avec ce qui suit:

    Il s'agit d'un formulaire pour une facture de vente nommé frmFV

    ET ce qui nous concerne un sous formulaire pour les lignes de la facture nommé frmFVlg.

    La source de ce sous-formulaire est une requête multi-tables constituée entra autres de la table FVlg comportant un champ Article zdl lié à idArt (caché) de la table tblArt et DenArt en deuxième colonne.

    Je ne peux donc afficher ce sous-formulaire que en mode continu me semble-t-il, sinon je n'aurais pas vue sur toutes les lignes.

    J'ai vu un programme comptable dans lequel l'opérateur lorsqu'il choisissait un article bien précis et seulement celui-la, disposait d'une ligne dans laquelle il pouvait écrire une ligne de texte. Par exemple "Notre livraison du 30 novembre" et puis il pouvait continuer à saisir les lignes de sa facture.

    Cet article précis, le développeur lui avait donné la dénomination "."
    Donc si l'opérateur voulait ajouter une ligne dans laquelle il voulait inscrire un texte il lui suffisait de taper "." dans le champ article.

    Je trouvais ça bien pratique et j'essaie de le reproduire. Si comme tu l'écris il faut avoir recours à des méthode peu orthodoxes ou fastidieuses, je m'en passerai.

    Je testerai assidûment le code que tu me proposes probablement vendredi. Demain, j'ai une journée chargée.

    En attendant, je te remercie déjà de t'être intéressé à ma demande.

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 816
    Points : 14 909
    Points
    14 909
    Par défaut
    Bonsoir,
    J'ai vu un programme comptable dans lequel l'opérateur lorsqu'il choisissait un article bien précis
    C'est certainement possible avec d'autres applications.
    ET ce qui nous concerne un sous formulaire pour les lignes de la facture nommé frmFVlg.

    La source de ce sous-formulaire est une requête multi-tables constituée entra autres de la table FVlg comportant un champ Article zdl lié à idArt (caché) de la table tblArt et DenArt en deuxième colonne.
    Il est certain que si la source du sous formulaire est basé sur plusieurs tables ce ne sera pas possible car le libellé devient en quelque sorte un champ calculé par la jointure entre les 2 tables. La solution serait d'enlever cette jointure et de retrouver le libellé depuis la colonne DenArt la zone de liste. Mais cela obligerait l'ajout d'un champ dans la table FVlg permettant d'y mettre le libellé. Et tout cela implique aussi un peu (!?!) de code VBA.

  7. #7
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2011
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 160
    Points : 162
    Points
    162
    Par défaut
    Bonsoir,

    Voilà ce que j'ai trouvé de mieux:

    Pour rappel: un formulaire frmFV pour l'entête des factures
    et un sous-formulaire frmFVlg pour les lignes des factures dont la source est cette requête

    Nom : qryFVlgqbe.JPG
Affichages : 101
Taille : 41,8 Ko

    De la table tblArt, voici les 4 articles qui serviront à l'exemple

    Nom : tblArt.JPG
Affichages : 86
Taille : 13,0 Ko

    Le sous-formulaire

    Nom : frm.JPG
Affichages : 100
Taille : 74,4 Ko

    Les champs sont activés ou désactivés suivant que c'est l'article id 518 permettant la ligne libre qui est sélectionné ou un autre avec 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
    Private Sub Maj_GotFocus()
        If idArt = 518 Then
            Qu.Enabled = False
            Prix.Enabled = False
            Remise.Enabled = False
            Libre.Enabled = True
     
        ElseIf idArt <> 518 Then
            Qu.Enabled = True
            Prix.Enabled = True
            Remise.Enabled = True
            Libre.Enabled = False
        End If
    End Sub
    J'ai inséré un champ sans cadre MAJ (donc on ne le voit pas) directement derrière "Article" pour déclencher mon code parce que je n'ai que des misères si je choisis un événement sur une zone de liste.
    Alors que je faisais appel à "beforeUpdate" sous Access 2007, ça ne fonctionne plus avec Access 2013. Soit, je m'adapte.

    Le champ description ne fait pas partie du formulaire, je l'ai illustré pour montrer comment il fonctionne.

    Je le remplis dans la requête avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Description:iif(idart=518;libre;DenArt)
    Le résultat final à l'impression de la facture de vente donne ceci:

    Nom : Etat.JPG
Affichages : 92
Taille : 31,4 Ko

    Avec un peu de code sur l'impression de la zone détail pour gérer la couleur.

    Je peux me satisfaire de cette solution avec finalement peu de code. S'il y a toutefois des améliorations ou remarques, elles sont les bienvenues. C'est pourquoi j'attends quelques jours avant de clôturer.

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 816
    Points : 14 909
    Points
    14 909
    Par défaut
    Bonsoir,
    J'ai inséré un champ sans cadre MAJ (donc on ne le voit pas) directement derrière "Article" pour déclencher mon code parce que je n'ai que des misères si je choisis un événement sur une zone de liste.
    Excellente astuce pour détourner les limites du formulaire en mode continu qui ne permet pas la saisie multiple depuis un champ indépendant.
    Alors que je faisais appel à "beforeUpdate" sous Access 2007, ça ne fonctionne plus avec Access 2013. Soit, je m'adapte.
    Etrange, en effet. C'est avec le code écrit dans GotFocus que tu as constaté le symptôme ?

  9. #9
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2011
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 160
    Points : 162
    Points
    162
    Par défaut Ligne libre dans un formulaire
    Bonjour,

    Avec le code écrit sur gotFocus, d'un champ indépendant, je n'ai aucun problème.
    C'est quand j'écris sur beforeUpdate, Exit, lostFocus et pas mal d'autres que j'ai essayé d'une ZDL que j'ai des soucis.
    Peut-être que je rate quelque chose ailleurs dans le code. Ce qui m'étonne, c'est que beforeUpdate sur une ZDL en access 2007 ne posait pas problème et bien avec access 2013.
    Je trouverai peut-être la cause. En attendant, je me débrouille avec ce qui fonctionne.

    En ce qui concerne les formulaires en mode continu, pour ce qui est la saisie des pièces comptables que sont les Factures de ventes, Factures entrées, Saisie des financiers, Saisie des Od, et autres pièces comme Bon de Commande, Note de livraison, etc.
    Il n'y a pas moyen de faire autrement. L'opérateur doit voir en continu toutes les lignes de la facture qu'il crée.

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 816
    Points : 14 909
    Points
    14 909
    Par défaut
    Bonjour Marcello5255,
    C'est quand j'écris sur beforeUpdate, Exit, lostFocus et pas mal d'autres que j'ai essayé d'une ZDL que j'ai des soucis.
    Peut-être que je rate quelque chose ailleurs dans le code. Ce qui m'étonne, c'est que beforeUpdate sur une ZDL en access 2007 ne posait pas problème et bien avec access 2013.
    S'agissant d'une zone de liste déroulante, j'ai toujours privilégié l'évènement Click sans jamais rencontrer de soucis de ce genre.

  11. #11
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2011
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 160
    Points : 162
    Points
    162
    Par défaut Ligne libre dans un formulaire
    Oui bien sûr, Comme un click sur un bouton, ça ne rate jamais

    Mon code permet de remplir le champ "article" sans clic. T affiche tous les enregistrements qui contiennent "t" tr tous ceux qui contiennent tr et ainsi de suite jusqu'à ce qu'il n'en reste qu'un ou bien, on descend avec la flêche sur celui à choisir lorsqu'il n'en reste que quelques-uns, enter sur celui-là, il est sélectionné, et puis le curseur passe au champ suivant.

    Académique ou pas, c'est très rapide et facile. Je l'utilise depuis 5 ans et ça me convient parfaitement.

    Quand l'opérateur est occupé à remplir des lignes d'une facture et que le curseur passe de l'un à l'autre séquentiellement, difficile et impensable de lui imposer de clicker ici ou là pour exécuter un code. Même pour moi qui utiliserais le programme, je ne le concevrais pas.

  12. #12
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 816
    Points : 14 909
    Points
    14 909
    Par défaut
    Je suis complètement d'accord avec ton approche.
    Dans le passé, j'ai développé des applications pour des utilisateurs qui passaient du mode clavier avec poste de travail passif relié à un serveur unix ou à un système AS400 vers le monde Windows avec souris et que les méthodes (ou habitudes, c'est selon) de saisie étaient à prendre avec beaucoup de considération. D'où l'intérêt d'utiliser l'évènement Click : sais-tu qu'il se déclenche même sans clic quand tu tapes sur la touche Entrée du clavier ?
    Essaie et tu verras.

  13. #13
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Avril 2011
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 160
    Points : 162
    Points
    162
    Par défaut
    Bonjour tee_granbois,

    sais-tu qu'il se déclenche même sans clic quand tu tapes sur la touche Entrée du clavier ?
    Si je l'avais su, j'aurais certainement mieux compris ta réponse précédente.
    Comme tu m'y invites, j'ai essayé et testé à plusieurs reprises; ça fonctionne tellement bien que j'ai supprimé le champ "Maj" pour placer mon code sur Article_Click.
    C'est quand même plus propre qu'avec un champ qui ne sert qu'à générer du code.

    Je te remercie pour cette astuce que je vais pouvoir utiliser à d'autres endroits de mon application et pour l'échange enrichissant que nous avons eu.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/04/2009, 14h03
  2. Réponses: 6
    Dernier message: 25/03/2009, 01h50
  3. [PHP 5.0] Suppression de lignes cochées dans un formulaire
    Par wolfdream dans le forum Langage
    Réponses: 4
    Dernier message: 06/02/2009, 10h27
  4. Réponses: 2
    Dernier message: 28/10/2008, 12h03
  5. Réponses: 9
    Dernier message: 08/04/2007, 22h11

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