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 :

Problème de procédure (lancement de module) sur ouverture d'un form [AC-2010]


Sujet :

IHM

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 28
    Par défaut Problème de procédure (lancement de module) sur ouverture d'un form
    Bonjour à tous

    J'ai un petit problème concernant le lancement d'un module.

    J'ai un formulaire accueil avec un bouton pour ouvrir un formulaire "FrmVoitureEncodage"

    Sur la propriété 'sur activation' de FrmVoitureEncodage je fait appel au module suivant (qui se trouve sur IDEtat_AfterUpade mais que j'exécute également à l'activation du form)

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Private Sub Form_Current()
         'execute le code etat_afterUpdate
        IDetat_AfterUpdate
    End Sub
     
    Voivi le module
     Public Sub EtatAfterUpdate()
     
        Dim AfterEtat As Form
        Set AfterEtat = Screen.ActiveForm
     
            If AfterEtat!IDEtat.Column(1) = "vendu" Then
               AfterEtat.detail.BackColor = vbRed
               AfterEtat!datevente.Visible = True
               AfterEtat!prixvente.Visible = True
               AfterEtat!restaurele.Visible = False
            Else
                If AfterEtat!IDEtat.Column(1) = "Restauré" Then
                    AfterEtat!restaurele.Visible = True
                    AfterEtat.detail.BackColor = vbGreen
                    AfterEtat!datevente.Visible = False
                    AfterEtat!prixvente.Visible = False
                Else
                    AfterEtat!restaurele.Visible = False
                    AfterEtat.detail.BackColor = vbYellow
                    AfterEtat!datevente.Visible = False
                    AfterEtat!prixvente.Visible = False
     
     
            End If
            End If
    End Sub
    Il me met une erreur sur l'ouverture, comme quoi il ne trouve pas[IDEtat.column1].

    Donc je suppose qu'il le recherche sur le formulaire ACCUEIL

    Ce que je trouve bizarre car le module doit normalement se lancer sur l'activation de FrmVoitureEncodage donc c'est bien ce dernier qui doit être le formulaire ACTIF.

    Or il me prend en compte le FrmAccueil comme étant actif.

    Sauriez vous me dire si je fait une erreur dans le lancement des procédures

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 54
    Par défaut
    Bonjour,
    A premier abord, je pense à 2 choses :
    -Ta page d'accueil est elle modale (tout le temps active) -voir les propriétés du formulaire
    -Ton code je l'aurais mis sur l'événement "sur ouverture" et non sur "activation"
    Pour le reste, dés que j'aurais le temps, j'analyserai le code et te tiendrai au courant.
    bon courage...

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 28
    Par défaut
    bonjour

    merci pour cette idée mais je l'ai testée et ca ne fonctionne pas,
    j'ai toujours le meme probleme.

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 54
    Par défaut
    Voici comment je vois les choses
    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
    24
    25
    26
    27
    28
    29
    30
    Private Sub Form_Current()
         'execute le code etat_afterUpdate
        IDetat_AfterUpdate
    End Sub
     
    Voivi le module
     Public Sub EtatAfterUpdate()
     
     
            If Me.IDEtat.Column(1) = "vendu" Then
               Me.detail.BackColor = vbRed
               Me.datevente.Visible = True
               Me.prixvente.Visible = True
               Me.restaurele.Visible = False
            Else
                If Me.IDEtat.Column(1) = "Restauré" Then
                    Me.restaurele.Visible = True
                    Me.detail.BackColor = vbGreen
                    Me.datevente.Visible = False
                    Me.prixvente.Visible = False
                Else
                    Me.restaurele.Visible = False
                    Me.detail.BackColor = vbYellow
                    Me.datevente.Visible = False
                    Me.prixvente.Visible = False
     
     
            End If
            End If
    End Sub
    Bon courage ----- @+ -----

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 28
    Par défaut
    oui, j'avais déjà penser à cette solution dans fonctionne si le code est mis directement dans le formulaire

    Mais l'instruction Me.xxx ne fonctionne pas dans un module

  6. #6
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 54
    Par défaut
    OK je comprend,
    Bon essaie alors de remplacer le Me.xxx par :
    forms![NomDuFormulaire]!xxx
    J'utilisais cettre écriture pour chercher les valeur contenu dans un formulaire particulier et pour mon appli ça fonctionne..
    J'espère (enfin) t'aider....
    Bon courage ----- @+ -----

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 28
    Par défaut
    ben oui

    cela fonctionne si je lance la procedure dans le formulaire même.

    Mais j'aimerai bien appliquer cette procedure à plusieur formulaire different (j'ai une partie voiture, tracteur, objet, livre,...) et je passe par un module pour ne mettre le code qu'une seul fois et pas à chaque formulaire) donc je ne sais pas mettre le nom du formulaire vu qu'il sera à chaque fois different

    Je vais essayer d'etre plus clair pour le probleme.

    Le code tel qu'il est la fonctionne très bien quand je l'execute sur directement sur le Formulaire "FrmEncodageVoiture" car c'est ce formulaire qui est actif.

    Mais quand je passe par le "FrmAcceuil" pour ouvrir, il me met une erreur car il considere le "FrmAccueil" comme le Formulaire Actif et non "FrmEncodageVoiture".

    Ce que je ne comprend par car la procedure ouverture du "FrmAccueilVoiture" se fait avant le lancement du module qui se trouve sur l'ouverture du formulaire.

    Donc c'est ce dernier qui devrait etre le formulaire Actif.

    Encore merci de votre aide mais je ne pensai pas que cela serait si compliqué

  8. #8
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 54
    Par défaut
    bon reprenons tout dans l'ordre.

    Lorsque je regarde les premières ligne du code initiale y'a un truc qui me chifonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Current()
         'execute le code etat_afterUpdate
        IDetat_AfterUpdate
    End Sub
    Pour moi, tu lance ta procédure lorsque tu reçois le focus (ce qui ne correspond pas forcément à l'ouverture).
    Tu devrais lancer ta procédure sur l'événement "Sur ouverture" de ton formulaire. tu obtiendais donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_open()
         'execute le code etat_afterUpdate
        IDetat_AfterUpdate
    End Sub

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 28
    Par défaut
    oui c'est juste mais dans un premier j'avais fait sur reception focus
    et suite à votre message j'ai testé sur open_form mais ca ne fonctionne pas j'ai le même message d'erreur.

  10. #10
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 54
    Par défaut
    Bon, autre chose...
    quel est le code du bouton qui te permet d'ouvrir le formulaire?

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 28
    Par défaut
    DoCmd.OpenForm "FrmVoitureEncodage"

  12. #12
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 54
    Par défaut
    Ok pas de soucis de ce côté-là

    Bon peux-tu me décrire le formulaire, notament le champs column(1)
    Fait-il parti d'un sous formulaire?
    Y-a t'il d'autre champs?
    As-tu la possibilité de me joindre un fichier?

    Par contre, je regarderai demain, je dois partir pour ce soir.....
    En attendant...
    Bonne soirée, bon courage ----- @+ -----

  13. #13
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonsoir,
    Je me permet d'intervenir dans le sujet parce qu'il y a quelque chose que je n'arrive pas à comprendre dans ta démarche.
    Quel type de contrôle tu as pour IDEtat. Si j'ai compris, c'est un combo ou une liste.
    Donc au moment de l'ouverture (ou chargement) du formulaire encodage qui le contient, la valeur d'IDEtat ne change pas, ou il est lié à un contrôle dans ton formulaire accueil?
    Plus de détails seraient nécessaires pour comprendre ton truc.


    Mandresy

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 28
    Par défaut
    Bonsoir

    Je vais essayer de faire un résumé et d'être un peu plus clair

    Je crée une base de donnée pour une collection d'objet Porsche

    La base contient plusieur catégorie (VoitureMd, voiture1/1, tracteurMD, Tracteur1/1, livre, objet,...)

    Pour chaque catégorie j'ai un formulaire d'encodage pour entrer les données de l'objet (N°auto, reference, couleur, etat, prixAchat, dateAchat, description, ...)

    Le controle IDEtat fait référence à la table TblEtat qui contient
    - IDEtat -> N°auto (clé primaire)
    - Etat -> Neuf, bon, à restaurer, vendu,...



    Dans FrmVoitureEncodage, IDEtat est une liste de choix qui reprend
    IDEtat et Etat (Liste de choix 2 colonne, 0,2cm d'ou le IDEtat.column1 pour faire reference au nom et pas au numéroAuto)

    Au premier abord j'avais mis dans tous les formulaires d'encodage à la propriété IDEtat_afterUpdate 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
    Private Sub IDetat_AfterUpdate()
    If [IDEtat].Column(1) = "vendu" Then 
        detail.BackColor = vbRed
        datevente.Visible = True
        prixvente.Visible = True
    Else
        detail.BackColor = vbYellow
        datevente.Visible = False
        prixvente.Visible = False
    End If
     
    If [IDEtat].[Column](1) = "restauré" Then
        [restaurele].Visible = True
        detail.BackColor = vbGreen
    Else
        If [IDEtat].[Column](1) <> "vendu" Then
        detail.BackColor = vbYellow
    End If
        [restaurele].Visible = False
     
    End If
    End Sub
    Ex:

    Si une voiture à pour ETAT-> "NEUF", la couleur de fond est jaune, et les champs PrixVente, DateVente ne sont pas visible.
    Si l'ETAT devient -> "VENDU", la couleur de fond devient rouge, et les champs PrixVente, Date vente sont visible.

    Donc si je ne reprend pas le code IDEtat_AfterUpdate à l'ouverture du formulaire, si l'ETAT de la voiture est "VENDU" le fond sera toujours jaune et les champs date et prix de vente non visible

    Et j'ai fait cela pour plusieur controle et plusieur formulaire, à chaque fois des copier-coller dans toutes les categories differente.

    Donc j'aimerai pour simplifier et n'avoir qu'une seule fois le même code et passer par un module.

    Je joint 2 photos en esperant que ca soit plus clair.



    Uploaded with ImageShack.us



    Uploaded with ImageShack.us

  15. #15
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 54
    Par défaut
    bonjour,
    je pense à un truc tout simple
    Dans tes bloc if, que penses-tu de remplacer comme ça :
    if [IDEtat] = 0 Then ' 0 : Numéro correspondant à l'état vendu

    A tester....
    Bone courage ----- @+ -----

  16. #16
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Bonjour,

    J'ai un peu de peine à suivre tes explications.

    Tu parles de plusieurs formulaires, mais tu ne nous en montres semble-t-il qu'un seul, FrmVoitureEncodage je suppose.

    Tu as combien de formulaires, au final ?

    A priori, je dirais que tu peux faire une procédure ou une fonction dans un module standard et passer le nom du formulaire en paramètre.

    As-tu exploré cette piste ?

    Domi2

  17. #17
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 28
    Par défaut
    Bonjour

    je pense que c'est ceci que j'essaie de faire mais je ne sais pas comment faire .

    (faire une procédure ou une fonction dans un module standard et passer le nom du formulaire en paramètre.)

    J'aimerai vous envoyer la base de donnée mais elle fait 20Mo toute seule, et si je doit envoyer les fichiers joint avec (photo, arriere plan,... ca fait 40Mo)

    Si vous savez m'expliquer comment mettre tout ca en ligne ca serait plus simple (ou alors vous l'envoyer par mail, en plusieur partie)

  18. #18
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Bonjour,

    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Appel de procédure depuis le formulaire
    NomDeTaProcedure(Me.Name)
     
    'La procedure
    Public NomDeTaProcedure(frm As Form)
     
        'Code
     
    End Sub
    Domi2

  19. #19
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 28
    Par défaut
    Bonsoir

    Voila le probleme est resolu

    je resume j'avais le code suivant qui etait executer sur IDEtat_AfterUpdate
    et que j'avais mis sur open_form du FrmVoitureEncodage

    Je l'ai supprimé de Open_form et à la place je le lance sur clic du BtnOuvrirFrmVoitureEncodage.

    voici le module

    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
    24
    25
    Option Compare Database
    Dim Test As Form
     
    Public Sub EtatAfterUpdate()
        Set Test = Screen.ActiveForm
     
               If Test!IDEtat.Column(1) = "vendu" Then
               Test.detail.BackColor = vbRed
               Test!datevente.Visible = True
               Test!prixvente.Visible = True
               Test!restaurele.Visible = False
            Else
                If Test!IDEtat.Column(1) = "Restauré" Then
                    Test!restaurele.Visible = True
                    Test.detail.BackColor = vbGreen
                   Test!datevente.Visible = False
                    Test!prixvente.Visible = False
                Else
                    Test!restaurele.Visible = False
                    Test.detail.BackColor = vbYellow
                    Test!datevente.Visible = False
                    Test!prixvente.Visible = False
            End If
            End If
    End Sub
    AVANT

    Sur le formulaire FrmVoitureEncodage

    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 IDetat_AfterUpdate()
        EtatAfterUpdate
    End Sub
     
    Private Sub Form_Open()
        EtatAfterUpdate
    End Sub
     
     
    Sur le FrmAccueilVoiture
     
    Private sub Encodage_click()
        docmd.openForm "FrmVoitureEncodage"
    end sub

    MAINTENANT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub IDetat_AfterUpdate()
        EtatAfterUpdate
    End Sub
     
    Sur le FrmAccueilVoiture
     
    Private sub Encodage_click()
        docmd.openForm "FrmVoitureEncodage"
        EtatAfterUpdate
    end sub
    Merci pour toutes vos réponses qui mon permis de trouver la solution

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

Discussions similaires

  1. Problème lors du lancement sur une autre machine
    Par poussinphp dans le forum Visual C++
    Réponses: 4
    Dernier message: 01/05/2007, 13h25
  2. Problème avec Barre de lancement, et icones sur le bureau
    Par FredericB dans le forum Windows XP
    Réponses: 10
    Dernier message: 15/02/2007, 23h39
  3. Message d'erreur sur ouverture module de BDD
    Par zakiabdess dans le forum Bases de données
    Réponses: 8
    Dernier message: 12/02/2007, 21h50
  4. [Tableaux] Problème sur ouverture fichier txt
    Par yaum4444 dans le forum Langage
    Réponses: 7
    Dernier message: 15/12/2006, 15h10
  5. Réponses: 5
    Dernier message: 04/07/2006, 00h11

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