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 :

Ouverture état sous conditions


Sujet :

IHM

  1. #1
    Membre du Club
    Ouverture état sous conditions
    Bonsoir,

    J'aimerais qu'un état s'ouvre ou non sous conditions qui sont les suivantes:

    Si le champs "commentaires" de l'état [Produits_surveillance] n'est pas "Vide" alors l’état "Produits_surveillance" doit s'ouvrir, autrement aucune action.

    Je précise que le champ "commentaires" est à l'origine un champ de la table "produit_commentaires" que j'ai intégré à l'état "etik Gildas" auquel j'ai crée une jointure entre deux champs nommé Référence/code article
    De manière à si une correspondance est trouvé entre ces deux champs alors le champs commentaires associé à la référence es afficher dans l’état [Produits_surveillance]

    Ça c’était pour l'explication... maintenant j'aimerais tester mon état [Produits_surveillance], si les champs sont vide alors inutile qu'il s'ouvre...

    Cordialement,




  2. #2
    Membre du Club
    J'ai trouver un début de solution avec un Cancel = True dans événement sur aucune donné.. mais ça me donne un popup d'erreur distant que l'action openreport à était annulé, ce qui es normale.
    Une autre solution qui serait invisible ?

  3. #3
    Responsable
    Office & Excel

    Salut. Tu viens d'où pour ouvrir ton état, d'un formulaire? Si oui, je suppose que tu ouvres sur l'enregistrement courant. Tu pourrais donc, en amont de l'ouverture, tester tes conditions et n'ouvrir le formulaire que si elles sont remplies.

    Sans le code que tu as testé, difficile de t'aider.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre du Club
    Salut Pierre,

    Oui je déclenche l'impression via un formulaire, suite à l'ajout de cette nouvelle table Excel et le report 'produits_surveillance" j'aimerais que ce dernier s'ouvre uniquement s'il comporte des données.. pour info ce report comportera des données ou non en fonction de si une correspondance es trouvé entres deux tables... la source de mon report évidement et l'autre table à laquelle j'ai joint deux champs.

    Possibilité de tester les champs du report directement dans le code demandent son ouverture ?

    Le report à tester est celui ci

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    'DoCmd.OpenReport " Produits_surveillance", acViewPreview


    Le code du bouton au complet ;

    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 Commande02_Click()
    DoCmd.RunCommand acCmdSaveRecord
    If Forms![menu_s]![CheckBox_Rafale] = True Then
    DoCmd.RunMacro "imprim numero ID_rafale"
    DoCmd.RunMacro "imprim etik gildas_rafale"
    DoCmd.RunMacro "Edition feuille lot rafale"
    DoCmd.RunMacro "Etik NumID_rafale_1"
    Else
    DoCmd.RunMacro "imprim numero ID"
    DoCmd.RunMacro "imprim etik gildas"
    DoCmd.RunMacro "Edition feuille lot trace"
    End If
    'DoCmd.OpenReport " Produits_surveillance", acViewPreview
       'DoCmd.Close


    Bonne journée amie lecteur

  5. #5
    Responsable
    Office & Excel

    Salut.

    Comme je pense qu'on te l'a déjà dit sous ton ancien pseudo, si tu fais du VBA, fais du vba jusqu'au bout. Appeler des macros par code crée une rupture dans ton code. A la lecture de celui-ci, on ne peut pas deviner ce que font tes macros, donc ça ne nous aide pas beaucoup.

    Comme je le disais précédemment, tu dois donc tester ta condition avant la ligne DoCmd.OpenReport... et ne passer sur cette ligne que si les conditions sont remplies.

    Citation Envoyé par Marionette Voir le message
    [...]
    Possibilité de tester les champs du report directement dans le code demandent son ouverture ?[...]
    Il ne s'agit pas de tester les "champs" du report ^^ D'ailleurs, il n'y a pas de "champs" dans un report, il n'y a que des contrôles, qui sont, pour certains, alimentés par des "champs" de la requête qui alimente le report. Les conditions portent sur les champs de données, donc d'une table ou d'une requête, et c'est donc cette table ou requête qu'il faut tester. Perso, si ces champs ne sont pas dans le formulaire qui contient le code d'ouverture du report, je passerais par une fonction booléenne perso qui me permettra de décider de la marche à suivre.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre du Club
    Comme je l'ai dit sous mon ancien pseudo et je le redis avec l’actuel, il faut cesser les jugements de valeur, tu devrais faire ceci ou cela...
    Je ne manipule en rien le VBA sinon je ne serais surement pas sur ce forum ! Je sais juste à peu après manipuler les fonctions native d'Access sous certaines limites.

    Je suis ingénieur qualité et responsable ligne production dans une société qui produit des pièces et équipements pour le secteur de l’aéronautique et armement militaire,
    je n'ai jamais suivi de cours informatique et je fais ce que je peux avec le peu de temps que j'ai dans ce domaine qui n'est pas les miens !

    Je préfère que l'ont ne m'aide pas que plutôt avoir affaire à des râleurs, celui qui ne souhaite pas m'aider est libre de partir !

    maintenant reprenons le sujet :

    D'accord je comprends mieux le déroulement, il faudrait donc tester si une correspondance est trouvée entre les deux champs joints,
    Ou plutôt si le champ commentaires n'est pas vide et la déclencher ou non l'ouverture du report j'imagine ?
    Tu as un code que je pourrais adapter ?

    Cordialement,

  7. #7
    Responsable
    Office & Excel

    Il n'y a aucun jugement de valeurs. Tu viens sur un site technique, tu vas donc trouver des techniciens qui vont te dire comment faire. Et ils te diront forcément "il faut faire ceci" ou "il ne faut pas faire cela"... Que veux-tu qu'on te dise d'autre? Ce n'est pas www.bisounours.com, ici

    Dans la mesure où l'on ne sait pas ce que font les macros que tu appelles dans le code vba, ben... on ne sait pas t'aider. Etre ingénieur qualité n'est pas une tare, et ça permet normalement de comprendre ce qu'on te répond.

    Après cette mise au point, dans la mesure où je ne sais pas quelle est la requête qui nourrit on formulaire ni quelle est celle qui nourrit ton rapport, pas plus que je ne sais quelle(s) condition(s) exacte(s) détermine(nt) quand l'état doit être appelé, ben... je ne sais pas beaucoup t'aider
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre du Club
    Re,

    Dans mon cas les macros servent à déclencher des requêtes ou des reports, à vrai dire pas mal d'action... la seule macro qui pourrais avoir un rapport avec le sujet est
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    DoCmd.RunMacro "imprim etik gildas"


    Cette macro sert à imprimer un report nommé "Etik Gildas" que j'avais cité lors de message précédent... je dit en rapport avec le sujet car j'ai fait une jointure dans le générateur de requête source de mon état "etik Gildas" avec la table excel "produits_commentaires" qui elle es la source de mon état à déclencher ou non en fonction de s'il comporte des donné "produits_surveillance"

    Tu souhaite quelle informations pour que tu te fassent une idée plus précise ?

    Voici la macro convertie au cas ou ça te servirais :

    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
    Option Compare Database
     
    '------------------------------------------------------------
    ' imprim_etik_gildas
    '
    '------------------------------------------------------------
    Function imprim_etik_gildas()
    On Error GoTo imprim_etik_gildas_Err
     
        DoCmd.OpenReport "Etik Gildas", acViewNormal, "", "", acNormal
     
     
    imprim_etik_gildas_Exit:
        Exit Function
     
    imprim_etik_gildas_Err:
        MsgBox Error$
        Resume imprim_etik_gildas_Exit
     
    End Function

  9. #9
    Responsable
    Office & Excel

    En gros, tu devrais avoir ce code, placé probablement sur le bouton du formulaire sur lequel tu cliques pour ouvrir le rapport:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    If Not IsNull(Me![Produits_surveillance]) then DoCmd.OpenReport...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre du Club
    Citation Envoyé par Pierre Fauconnier Voir le message
    En gros, tu devrais avoir ce code, placé probablement sur le bouton du formulaire sur lequel tu cliques pour ouvrir le rapport:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    If Not IsNull(Me![Produits_surveillance]) then DoCmd.OpenReport...

    J'ai essayer un truc un peu à l'improviste du genre ;

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    If Not IsNull(Me![Produits_surveillance]) Then DoCmd.OpenReport "etik gildas" Else
    DoCmd.OpenReport "etik gildas" And "Produits_surveillance"



    Il me dit qu'il ne trouve pas le champ "Produits_surveillance"
    C'est le champ à tester ou l'état ?
    Tu es sur de la syntaxe ?

    Ensuite mon état "etik Gildas" doit s'ouvrir à tous les coups, seul l'etat Produits_surveillance es soumis à une conditions.

  11. #11
    Responsable
    Office & Excel

    N'ayant pas ta base sous la main, je ne sais que faire des suppositions.

    Il faudra quand même te coltiner l'apprentissage des bases du VBA à un moment donné, pour progresser. Pour ouvrir deux états, tu ne peux pas employer ta syntaxe avec "And". Tu dois avoir les deux lignes DoCmd. Puisque tu dois toujours ouvrir etik gildas, ouvre-le hors du bloc If et ne soumets que "Produits_surveillance" à la condition.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    DoCmd.OpenReport "etik gildas"
    If Condition Then DoCmd.OpenReport "Produits_surveillance"


    Pour ce qui est du champ qui serait inexistant, je ne saurais pas répondre pour toi. J'ai supposé que ce champ faisait partie de la requête qui alimente le formulaire. Quelle est cette requête? Que contient-elle comme champs? Te permet-elle d'établir ta condition d'ouverture? Tant que tu ne répondras pas à ces questions, tu ne sauras pas avancer.

    Da Vinci disait "Tout commence par un dessin". En Access, tout commence par un schéma: As-tu fait un schéma, même simple, de ce que tu souhaites obtenir?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Membre du Club
    Bonjour,

    Voici une copie de ma BDD où je n'ai gardé que l'essentiel en rapport au sujet.
    Les éléments concernés sont :

    Le formulaire Sel code article PF (Contient le bouton clic sur événement qui déclenche tout)

    Les tables : code article & Produit Commentaires
    Les états : Etik Gildas & Produits Surveillance,

    Je te laisse voir les jointures par toi-même...

    Le déroulement est le suivant : si une correspondance est trouvée entre les deux tables citées ci-dessous, alors l’état " Produits Surveillance" doit s'ouvrir en aperçue avant impression, ou d'une autre manière où il serait affiché à l'écran sans s'imprimer.

    Cordialement,

    Oops j'ai oublié un fichier dans l'archive

    Cordialement,

  13. #13
    Membre du Club
    D'autres volontaires pour essayer de résoudre mon problème ? De préférence pas quelqu’un qui répond à tous les sujets juste pour répondre ou qui fait les choses à moitié.

    Cordialement,

  14. #14
    Responsable
    Office & Excel

    Franchement... ^^

    Tu peux aussi demander un devis et payer pour le développement de ton appli. Il y a des personnes qui t'ont répondu un dimanche, d'autres qui travaillent le lundi et n'ont pas que ton problème comme préoccupation. J'aurais été prêt à regarder ton fichier, mais vu le ton employé et les sous-entendus, je vais passer du temps à répondre à des personnes plus aimables envers celles qui prennent du temps pour les aider
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

###raw>template_hook.ano_emploi###