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 :

VBA ré-executer dans un sous formulaire


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut VBA ré-executer dans un sous formulaire
    Bonjour,

    J'aimerais savoir s'il était possible de reexecuter tous les codes affecter à des champs d'un sous formulaire en modifiant un champs dans le formulaire principal
    Exemple :

    Formulaire principale :
    --> Coefficient = 3

    Sous formulaire en mode formulaire continu :
    TAILLE______________Nouvelle Taille
    600___________________1800
    800___________________2400
    100___________________300


    Sur le champs Coefficient sur l'évènement Sortie je met ce code:
    Me.Sousformulaire_tailles.Form![nouvelletaille]=me.coefficient*Me.Sousformulaire_tailles.Form![taille]

    Celà fonctionne mais que sur la première ligne de mon sous formulaire continu.
    J'ai mis un me.recalc sur sortie du champs Coeeficient mais celà ne fonctionne pas.
    Il faudrait un code qui reexecuterai tous les codes de tous mes champs dans le sous-formulaire

    Merci de votre aide.

    Cordialement,

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Personne n'aurait donc une solution possible?

    J'avais penser à utiliser une requête au lieu d'une table pour mon sous formulaire et ainsi ne pas mettre de code vba dans mes champs mais plutôt des formules
    dans ma requête

    Puis faire un me.monsouformulaire.requery pour rafraichir ma requête source. Cependant les champs que je veux mettre à jour sont des champs qui se trouve dans ma table. Je risque donc de creer un réplicat de sortie :s

    si quelqu'un peut m'aiguiller..

    Cordialement

  3. #3
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    L'idée de la requête est très bonne si tes champs ne sont pas des champs de saisie.

    Si tu dois conserver tes champs en lecture/écriture, alors il faut que tu gères toi-même leur mise à jour quand le coef change dans le form parent.

    L'événement approprié pour détecter la mise à jour du coef n'est pas Exit, mais AfterUpdate.

    Pour ce qui est des calculs de tes champs [nouvelletaille], je ne vois pas de solutions plus simple que de parcourir le Recordset du sous form pour mettre à jour les champs individuellement. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub UpdateTaille(coef As Double, ByRef rst As DAO.Recordset)
     
        With rst.Clone
            While Not .EOF
                .Edit
                    ![nouvelletaille] = ![Taille] * coef
                .Update
            .MoveNext
            .Close
        End With
        rst.Requery
    End Sub
    (\ _ /)
    (='.'=)
    (")-(")

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Bonjour Fred,

    Merci pour ton aide. J'ai finalement créé une requête mise à jour qui va mettre à jour tous les enregistrements répondant à certains critères.
    J'ai donc pour chaque champs de mon formulaire principale mis le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "R maj"
    DoCmd.SetWarnings True
    Me.Recalc
    L'avantage est de creer une seule fois la requête avec toute les formule de calcul possible et non plus de mettre les formules de calcul en VBA pour chaque champs.

    Et d'après ce que tu me dis j'ai finalment mis Sur MAJ et non sur sortie même si c'est la même chose puisque de toute façon à un moment ou un autre on sort du champs ?

    Cordialement,

  5. #5
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Et d'après ce que tu me dis j'ai finalment mis Sur MAJ et non sur sortie même si c'est la même chose puisque de toute façon à un moment ou un autre on sort du champs ?
    Ce n'est pas la même chose car l'événement afterUpdate est plus précis. Il peut survenir même si le contrôle ne perd pas le focus (lors d'un Refresh du form par exemple).
    (\ _ /)
    (='.'=)
    (")-(")

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 97
    Points : 59
    Points
    59
    Par défaut
    Alors sa c'est bon à savoir. Pour moi le AfterMAJ était actif qu'à partir du moment où l'on passe d'un recordset à l'autre mais maintenant c'est clear
    Merci pour cette info !!

    Cordialement,

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/03/2009, 14h49
  2. Réponses: 5
    Dernier message: 13/02/2009, 16h42
  3. Exécuter le code VBA d'un module dans un sous formulaire
    Par keketteboy dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/06/2008, 11h41
  4. [Formulaire-VBA]Recherche dans un sous formulaire
    Par Tonio571 dans le forum IHM
    Réponses: 3
    Dernier message: 02/04/2007, 15h31
  5. Réponses: 4
    Dernier message: 01/02/2007, 11h17

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