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] Choisir le bon événement / Rafraichir formulaire


Sujet :

IHM

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut [VBA] Choisir le bon événement / Rafraichir formulaire
    Bonjour à tous,

    Petit problème sur des champs calculés que je souhaite mettre à jour de manière dynamique/continue dans un formulaire appelé "devis d'affaire"

    J'ai entre autres deux zones de saisie (NuméroDevisaffaire et PrixFinal) et plusieurs champs calculés qui ne me servant qu'à afficher des données (CalculCD, CalculPV, CalculMB, etc)

    Voici le code que j'ai créé:

    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
    33
    34
    35
    36
    37
    38
    39
    40
    'calcul des différentes valeurs
    If Not IsNull(Me.NuméroDevisaffaire) Then
     
        Dim mysql As String
        mysql = "SELECT Prestation.Quantité, Prestation.PrixUnitaire, 
    Prestation.CoeffRetenu FROM [Devis d'affaire] INNER JOIN Prestation ON 
    [Devis d'affaire].NuméroDevisaffaire = Prestation.DevisPère WHERE 
    Prestation.DevisPère = '" & Me.NuméroDevisaffaire.Value & "'"
        Dim cnn1 As ADODB.Connection
        Set cnn1 = CurrentProject.Connection
        Dim myRecord As New ADODB.recordset
        myRecord.ActiveConnection = cnn1
     
        myRecord.Open mysql
     
        Dim CDirects As Double
        CDirects = 0
        Dim PVcalcul As Double
        PVcalcul = 0
     
        If Not myRecord.EOF Then
        myRecord.MoveFirst
        While Not myRecord.EOF
            CDirects = CDirects + myRecord.Fields(0) * myRecord.Fields(1)
            PVcalcul = PVcalcul + myRecord.Fields(0) * myRecord.Fields(1) * 
    myRecord.Fields(2)
            myRecord.MoveNext
        Wend
        End If
     
        Me.CalculCD.Value = CDirects
        Me.CalculPV.Value = PVcalcul
        Me.CalculMB.Value = Me.PrixFinal.Value - CDirects
        If CDirects <> 0 Then
        Me.calculCoeff.Value = Me.PrixFinal.Value / CDirects
        Else
        Me.calculCoeff.Value = 0
        End If
     
    End If
    Je l'ai mis dans les évenements afterupdate de mes deux zones de saisie et il fonctionne parfaitement dès que je modifie une des deux valeurs.

    Petit souci: J'ai un bouton sur ce formulaire qui ouvre un formulaire "prestation", permettant de saisir les prestations liées à ce devis d'affaire. Comme vous pouvez le voir, la requete permettant les calculs va chercher les données de la table "prestation". A la fermeture du formulaire "prestation", je retourne sur le formulaire "devis d'affaire", mais je n'arrive pas à mettre mes données à jour. J'ai essayé de remettre le code dans les évenements suivants du formulaire "devis d'affaire": Gotfocus, current, load. Mais ça n'a pas marché.

    J'ai aussi essayé de faire un requery sur le formulaire "devis d'affaire" à la fermeture du formulaire "prestation". Mais je ne suis pas trop sûr de ma syntaxe, que j'ai effacée d'ailleurs...

    Bref, si quelqu'un connait une astuce pour gérer ce petit problème...

    Merci d'avance de votre aide.

    Flu

    PS: Où puis-je trouver une description précise des déclenchements d'évenements?? C'est toujours un peu flou pour moi...

  2. #2
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut,
    A la fermeture du formulaire "prestation", je retourne sur le formulaire "devis d'affaire", mais je n'arrive pas à mettre mes données à jour. J'ai essayé de remettre le code dans les évenements suivants du formulaire "devis d'affaire": Gotfocus, current, load. Mais ça n'a pas marché.
    pourquoi pas sur fermeture de "prestation"?
    Je ne comprends rien à Access...Mais je me soigne.
    Moteur de recherche
    DAO

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Je préfèrerais le mettre dans un évenement du formulaire "Devis d'affaire", vu que les champs concernés sont dans ce formulaire.

    En le mettant sur fermeture de "prestation", il va falloir que je modifie le code, non? Passer les "me." en autre chose. Je ne suis pas trop sûr de ce à quoi doit ressembler ce "autre chose"!

    Forms![Devis d'affaire].calculMB.value à la place de Me.calculMB.value ou je me trompe???

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    J'ai mis le code suivant pour le formulaire "prestation":

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Private Sub Form_Close()
     
    Forms("Devis d'affaire")![affichage prestation].Form.Requery
     
    'calcul des différentes valeurs
    If Not IsNull(Forms("Devis d'affaire")!NuméroDevisaffaire.Value) Then
     
        Dim mysql As String
        mysql = "SELECT Prestation.Quantité, Prestation.PrixUnitaire, 
    Prestation.CoeffRetenu FROM [Devis d'affaire] INNER JOIN Prestation ON 
    [Devis d'affaire].NuméroDevisaffaire = Prestation.DevisPère WHERE 
    Prestation.DevisPère = '" & Forms("Devis d'affaire")!NuméroDevisaffaire.Value & "'"
     
        Dim cnn1 As ADODB.Connection
        Set cnn1 = CurrentProject.Connection
        Dim myRecord As New ADODB.recordset
        myRecord.ActiveConnection = cnn1
     
        myRecord.Open mysql
     
        Dim CDirects As Double
        CDirects = 0
        Dim PVcalcul As Double
        PVcalcul = 0
     
        If Not myRecord.EOF Then
        myRecord.MoveFirst
        While Not myRecord.EOF
            CDirects = CDirects + myRecord.Fields(0) * myRecord.Fields(1)
            PVcalcul = PVcalcul + myRecord.Fields(0) * myRecord.Fields(1) *
     myRecord.Fields(2)
            myRecord.MoveNext
        Wend
        End If
     
        Forms("Devis d'affaire")!CalculCD.Value = CDirects
        Forms("Devis d'affaire")!CalculPV.Value = PVcalcul
        Forms("Devis d'affaire")!CalculMB.Value = 
    Forms("Devis d'affaire")!PrixFinal.Value - CDirects
        If CDirects <> 0 Then
        Forms("Devis d'affaire")!calculCoeff.Value = 
    Forms("Devis d'affaire")!PrixFinal.Value / CDirects
        Else
        Forms("Devis d'affaire")!calculCoeff.Value = 0
        End If
     
     
    End If
     
     
    End Sub
    J'ai donc remplacer les "me." par "forms("Devis d'affaire")".

    Mais ça ne fonctionne pas quand je ferme le formulaire. Et je ne comprends pas pourquoi.

Discussions similaires

  1. [VBA-A] transfert de données entre formulaire
    Par snaxisnake dans le forum VBA Access
    Réponses: 10
    Dernier message: 20/04/2006, 16h48
  2. Désactiver évènement sur formulaire
    Par zut94 dans le forum Access
    Réponses: 4
    Dernier message: 18/04/2006, 18h35
  3. [VBA-E]copie de .xls et formulaires
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 38
    Dernier message: 23/02/2006, 13h31
  4. Réponses: 2
    Dernier message: 03/11/2005, 19h48
  5. [VBA] Changer le nom d'un formulaire
    Par lbourlet dans le forum Access
    Réponses: 2
    Dernier message: 05/11/2004, 11h54

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