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 :

Mise a jour d'un formulaire après ouverture [AC-365]


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Bidouilleur de piètre qualité
    Inscrit en
    Septembre 2020
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Bidouilleur de piètre qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 41
    Points : 40
    Points
    40
    Par défaut Mise a jour d'un formulaire après ouverture
    Bonjour,
    j'ai un formulaire A avec une liste déroulante "article" à plusieurs champs.
    Dans ce formulaire, j'ai un bouton qui me permet d'ouvrir le formulaire B et d'y transférer toutes une série de données issues du résultat de ma liste déroulante "article"
    A l'ouverture du formulaire B, en fonction des données transmis de A je voudrais faire apparaitre des champs et disparaitre d'autres.
    Avec une macro contenant les fonctions SI suivi de DEFINIRPROPRIETE j'y arrive mais je suis obligé de la lancer avec un bouton...bof bof
    Je voudrais que la mise en forme soit immédiate à l'ouverture du formulaire.

    J'ai essayé de mettre la macro dans :
    - sur chargement ou - sur ouverture mais cela ne marche pas lors de l'ouverture du formulaire..
    Par contre si je fais un aller retour création/mode formulaire la mise en forme s'effectue...

    Si quelqu'un peu me renseigner..
    Merci

  2. #2
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Bonjour,

    as-tu essayé en vba ?
    Sur l'évèvement load() du formulaire B, tu peux tester ce que contient la zone du formulaire A, et agir pour rendre actif / visibles certains contrôles.

    Bizarre que la macro ne te donne pas le résultat souhaité, mais je n'ai jamais trop utilisé, le vba faisant nettement plus.

    A+

  3. #3
    Membre du Club
    Homme Profil pro
    Bidouilleur de piètre qualité
    Inscrit en
    Septembre 2020
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Bidouilleur de piètre qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    Bonjour HDU71000 et merci pour ta réponse.

    Je viens d'essayer en VBA.
    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 Commande247_Click()
    Me.Refresh
    If (Forms![D2-SF-4]![Type GLM-2] = "LM") Then
            DoCmd.SetProperty "Modifiable244", acPropertyVisible, "-1"
            DoCmd.SetProperty "Modifiable235", acPropertyVisible, "0"
     
        ElseIf (Forms![D2-SF-4]![Type GLM-2] = "AA") Then
            DoCmd.SetProperty "Modifiable244", acPropertyVisible, "-1"
            DoCmd.SetProperty "Modifiable235", acPropertyVisible, "-1"
        Else
            DoCmd.SetProperty "Modifiable244", acPropertyVisible, "0"
            DoCmd.SetProperty "Modifiable235", acPropertyVisible, "-1"
        End If
    End Sub
    Le code fonctionne si je le lance depuis clic sur un bouton par contre je n'arrive pas à le positionner.

    - Si je l'intègre dans le VBA qui permet le passage du formulaire A ver s B j'ai un, message d'erreur
    Le nom Modifiable244 est mal orthographié ou fait référence à un controle qui n'existe pas...

    - Si je l'intègre au chargement du formulaire lors de l'ouverture rien ne se passe. J'ai passé Attendre post-traitement sur OUI mais cela ne change rien.
    Merci

  4. #4
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 931
    Points
    931
    Par défaut
    Bonjour Massepat,

    B est ouvert par A, le code qui déclenche l'ouverture est dans A, donc il ne connait pas de "Modifiable244" (qui est dans B), par contre il connaît Me.Type GLM-2.
    Pour peu que le formulaire B ait le temps de se charger (éventuellement intercaler un "DoEvents" ), tu pourrais après la commande d'ouverture de B tester Me.Type GLM-2 et faire la modification sur [Forms]![nom du formulaire B]![Modifiable244] depuis A.
    On peut aussi tester dans B Forms![D2-SF-4]![Type GLM-2] (dans l'événement Load), mais alors il faut toujours appeler B depuis A, et que A soit ouvert à ce moment-là, sinon tu auras une erreur.

    Cependant il existe un mécanisme de transfert de paramètre entre formulaires prévu pour.

    Dans la commande OpenForm, on utilise l'argument Openargs pour transmettre à B la valeur de Type GLM-2 ; Openargs sert précisément à cela.
    Tu n'as plus qu'à tester la valeur de Openargs dans l'événement "Load" du formulaire B ; tu as une explication vraiment très détaillée ici dans la Foire Aux Questions.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

  5. #5
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Citation Envoyé par massepat Voir le message
    Bonjour HDU71000 et merci pour ta réponse.

    Je viens d'essayer en VBA.
    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 Commande247_Click()
    Me.Refresh
    If (Forms![D2-SF-4]![Type GLM-2] = "LM") Then
            DoCmd.SetProperty "Modifiable244", acPropertyVisible, "-1"
            DoCmd.SetProperty "Modifiable235", acPropertyVisible, "0"
     
        ElseIf (Forms![D2-SF-4]![Type GLM-2] = "AA") Then
            DoCmd.SetProperty "Modifiable244", acPropertyVisible, "-1"
            DoCmd.SetProperty "Modifiable235", acPropertyVisible, "-1"
        Else
            DoCmd.SetProperty "Modifiable244", acPropertyVisible, "0"
            DoCmd.SetProperty "Modifiable235", acPropertyVisible, "-1"
        End If
    End Sub
    Le code fonctionne si je le lance depuis clic sur un bouton par contre je n'arrive pas à le positionner.

    - Si je l'intègre dans le VBA qui permet le passage du formulaire A ver s B j'ai un, message d'erreur
    Le nom Modifiable244 est mal orthographié ou fait référence à un controle qui n'existe pas...

    - Si je l'intègre au chargement du formulaire lors de l'ouverture rien ne se passe. J'ai passé Attendre post-traitement sur OUI mais cela ne change rien.
    Merci
    Si tu mets le ce code sur l'évènement load() du form B

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If Forms![D2-SF-4]![Type GLM-2] = "LM" Then
            me.Modifiable244.Visible = true
            me.modifiable235.visible=false
    etc
    ......
    End If

  6. #6
    Membre du Club
    Homme Profil pro
    Bidouilleur de piètre qualité
    Inscrit en
    Septembre 2020
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Bidouilleur de piètre qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    re bonjour HDU71000,
    Toujours le même problème.
    En mettant ton code sur l’événement LOAD,
    A l'ouverture rien ne se passe
    Je fais un aller retour mode création <-> mode formulaire
    et la la mise en forme se réalise....
    Quelle est la différence entre sur chargement (LOAD) et sur ouverture (form_Open)

    Et surtout pourquoi le même code fonction avec un bouton mais pas sur le chargement ou sur l'ouverture du formulaire??
    Est-ce que Attendre post-traitement agit dessus ??

    Merci

  7. #7
    Membre du Club
    Homme Profil pro
    Bidouilleur de piètre qualité
    Inscrit en
    Septembre 2020
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Bidouilleur de piètre qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    Bonjour Paraffine,

    En fait lors du passage de A vers B j'arrive bien a faire le controle sur GLM-2 car selon sa valeur j'ai le message d'erreur qui pointe soit sur la commande après le IF.
    Si mon code GLM-2 = LM j'ai l'erreur sur DoCmd.SetProperty ([Forms]![D2-SF-4]![Modifiable244].Visible = True) qui suit If (Forms![D2-SF-4]![Type GLM-2] = "LM") Then
    Si mon code GLM-2 = AA j'ai l'erreur sur DoCmd.SetProperty ([Forms]![D2-SF-4]![Modifiable244].Visible = True) qui suit ElseIf (Forms![D2-SF-4]![Type GLM-2] = "AA") Then

    Il doit y avoir une erreur de saisie dans ce code DoCmd.SetProperty ([Forms]![D2-SF-4]![Modifiable244].Visible = True) mais je n'arrive pas à trouver laquelle !!!!

    Merci

  8. #8
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Citation Envoyé par massepat Voir le message
    re bonjour HDU71000,
    Toujours le même problème.
    En mettant ton code sur l’événement LOAD,
    A l'ouverture rien ne se passe
    Je fais un aller retour mode création <-> mode formulaire
    et la la mise en forme se réalise....
    Quelle est la différence entre sur chargement (LOAD) et sur ouverture (form_Open)

    Et surtout pourquoi le même code fonction avec un bouton mais pas sur le chargement ou sur l'ouverture du formulaire??
    Est-ce que Attendre post-traitement agit dessus ??

    Merci
    C'est bizarre, il n'y a pas d'autre code dans le formulaire ???
    La différence entre load et open est minime, regardes ici --> https://stackoverflow.com/questions/...entry/31712800

    Tu peux essayer aussi de mettre le code sur l'évènement current() pour voir.

    Mais je reste quasi persuadé qu'il y a une macro ou un bout de code ailleurs qui empêche ton code de fonctionner (regardes aussi sur ton formulaire [D2-SF-4])

  9. #9
    Membre éprouvé Avatar de HDU71000
    Homme Profil pro
    Développement Access - En recherche de poste télétravail (invalide)
    Inscrit en
    Août 2016
    Messages
    716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement Access - En recherche de poste télétravail (invalide)

    Informations forums :
    Inscription : Août 2016
    Messages : 716
    Points : 1 023
    Points
    1 023
    Par défaut
    Citation Envoyé par massepat Voir le message
    Bonjour Paraffine,

    En fait lors du passage de A vers B j'arrive bien a faire le controle sur GLM-2 car selon sa valeur j'ai le message d'erreur qui pointe soit sur la commande après le IF.
    Si mon code GLM-2 = LM j'ai l'erreur sur DoCmd.SetProperty ([Forms]![D2-SF-4]![Modifiable244].Visible = True) qui suit If (Forms![D2-SF-4]![Type GLM-2] = "LM") Then
    Si mon code GLM-2 = AA j'ai l'erreur sur DoCmd.SetProperty ([Forms]![D2-SF-4]![Modifiable244].Visible = True) qui suit ElseIf (Forms![D2-SF-4]![Type GLM-2] = "AA") Then

    Il doit y avoir une erreur de saisie dans ce code DoCmd.SetProperty ([Forms]![D2-SF-4]![Modifiable244].Visible = True) mais je n'arrive pas à trouver laquelle !!!!

    Merci
    Si tu mets tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.modifiable244.visble=true
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    forms![d2-sf-4]!modifiable244.visible=true
    plutot que tes docmd.setproperty ?

    A+

  10. #10
    Membre du Club
    Homme Profil pro
    Bidouilleur de piètre qualité
    Inscrit en
    Septembre 2020
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Bidouilleur de piètre qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    A Y EST, j'ai enfin trouvé l'erreur...

    Dans le code pour passer du formulaire A vers B j'ai rajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    If (Forms![D2-SF-4]![Type GLM-2] = "LM") Then
           Forms![D2-SF-4]![Modifiable244].Visible = True
           Forms![D2-SF-4]![Modifiable235].Visible = False
     
     
       ElseIf (Forms![D2-SF-4]![Type GLM-2] = "AA") Then
          Forms![D2-SF-4]![Modifiable244].Visible = True
          Forms![D2-SF-4]![Modifiable235].Visible = True
        Else
          Forms![D2-SF-4]![Modifiable244].Visible = False
          Forms![D2-SF-4]![Modifiable235].Visible = True
        End If
    Juste une question de [].....
    Merci à HDU71000 et à Paraffine pour leur aide !!!!

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

Discussions similaires

  1. mise a jour d'un formulaire a partir d'une feuille
    Par alex.a dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/06/2007, 15h57
  2. Mise a jour selon Sous Formulaire
    Par Jah78 dans le forum IHM
    Réponses: 4
    Dernier message: 26/06/2007, 12h27
  3. Mise a jour d'un formulaire
    Par lecknaat dans le forum IHM
    Réponses: 19
    Dernier message: 15/01/2007, 17h58
  4. Réponses: 10
    Dernier message: 11/07/2006, 14h50
  5. Mise a jour dans un formulaire
    Par assane dans le forum Access
    Réponses: 2
    Dernier message: 05/07/2006, 08h57

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