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 :

Modifications sur champs calculés [AC-2007]


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Modifications sur champs calculés
    Bonjour,

    J'ai un sous formulaire continu basé sur une requête qui affiche notamment les prix calculés de chaque articles. Une fois calculé et affiché j'aimerai tout de même pouvoir modifier ces prix et les stocker dans une table (même si il n'est pas conseillé de stocker des champs calculés..).
    Dans mon sous formulaire continu, j'ai donc également un champ vide ayant pour source la colonne prix d'une table dans laquelle je souhaite stocké la valeur calculée.

    Grâce à un peu de code vba, j'aimerai qu'en cliquant sur un bouton, le prix calculé soit copier/coller dans ce champ prix. Ainsi, je pourrai tout de même modifier le prix par la suite.

    Prix calculé (impossible à modifier) ---> Prix copier/coller et stocker dans une table (modification possible)

    Du fait qu'il s'agit d'un sous formulaire continu, je n'arrive pas à écrire les bonnes lignes de codes VBA.

    Voila mon code:

    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
    Private Sub CmdePrix_Click()
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Set db = Application.CurrentDb
    Set rst = db.OpenRecordset("Devis++")
    While rst.EOF = False
    rst.Edit
    rst("PT") = Me.PT1
    rst.Update
    rst.MoveNext
    Wend
    rst.Close
    Set rst = Nothing
    Set db = Nothing
    End Sub
    Le problème est que le Me.PT1 ne se déplace pas d'un enregistrement à un autre, et je me retrouve avec le même prix partout.

    Finalement mon problème se résume à comment copier/coller un champ dans un formulaire continu, grâce a du vba

    Merci pour votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,
    ton code ne doit pas marcher sur le contrôle du sous-formulaire mais sur le champ calculé de la requête; de plus il doit y avoir correspondance entre l'article dont le prix doit être stocké et l'article dont le prix calculé doit être récupéré.
    Puisque ton sous-formulaire a une source, il doit également disposer d'un recordset dans le lequel se trouve les champs que tu souhaites pour chaque ligne.
    Essaie un truc du genre :
    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
    Private Sub CmdePrix_Click()
    Dim rst As DAO.Recordset
      Set rst = db.OpenRecordset("Devis++")
      While rst.EOF = False
         Form.RecordsetClone.MoveFirst
         'Rechercher dans le recordset du formulaire l'article correspondant
         'où xxx est le nom du champ article de la source du formulaire
         'et yyy le nom du champ article de la table Devis++
         Form.RecordsetClone.FindFirst ("xxx=" & rst(yyy))
         If Not Form.RecordsetClone.NoMatch Then 
           rst.Edit
           rst("PT") = Form.RecordsetClone("PT1")
           rst.Update
         Endif
         rst.MoveNext
      Wend
      rst.Close
      Set rst = Nothing
    End Sub
    Maintenant, pourquoi une fois la requête remplie ne transfers-tu pas ses données directement dans la table Devis++, de fait tu peut dès lors donner pour source du sous-formulaire la table Devis++, ce qui te permettras de modifier les prix des articles dans le sous-formulaire ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup ilank !!!!!!! Tu me libère d'un gros poids !
    Après quelques petits soucis d'écriture, ca marche !!!!

    C'est a propos de ce recordset que j'avais du mal... Transfert de données, ok, avec INSERT INTO ? anyway ca marche comme ca.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/03/2007, 15h37
  2. evenement sur champ calculé
    Par krassi dans le forum IHM
    Réponses: 7
    Dernier message: 16/03/2007, 09h19
  3. somme sur champ calculé et table liée
    Par pierrot67 dans le forum Bases de données
    Réponses: 6
    Dernier message: 06/11/2006, 18h02
  4. Code si modification sur champ dans formulaire
    Par guiguikawa dans le forum IHM
    Réponses: 1
    Dernier message: 14/06/2006, 15h31
  5. Recherche sur champ calculé
    Par srvremi dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/07/2004, 14h04

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