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

VBA Access Discussion :

Recalc d'un autre formulaire


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2013
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2013
    Messages : 136
    Points : 63
    Points
    63
    Par défaut Recalc d'un autre formulaire
    Salut et bon weekend,

    j'ai un un formulaire sans source sur lequel j'ai des onglets dans un onglet un sous formulaire avec pour source la requête "R_Sortie" et dans ce sous-formulaire un autre sous formulaire avec pour source la requête "R_détail_vente"

    lorsque je charge une sortie j'affecte un "client" via l'ouverture d'un autre formulaire qui m'importe un % lié au client et je recalcule la somme d'un champ dans R_détail_vente.

    Mon problème c'est qu'en faisant un me.requery, il va se placer ensuite sur le premier enregistrement de "R_sortie", pour éviter ce problème je fais me.Recalc et là je reste sur mon enregistrement.

    voici le code actuel derrière un bouton placé sur mon sous formulaire "HOME" avec pour source "R_sortie"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Me.Recalc
     
    CurrentDb.Execute "UPDATE R_Détail_Vente SET R_Détail_Vente.[PVUS RR TVAC] = R_Détail_Vente.[PVU RR TVAC] WHERE R_Détail_Vente.[#Sortie] = " & (Forms![Home].Form![Fille104]![Test_N°Sortie]) 'copie les prix
    CurrentDb.Execute "UPDATE R_Détail_Vente SET R_Détail_Vente.[PVUS RR HTVA] = R_Détail_Vente.[PVU RR HTVA] WHERE R_Détail_Vente.[#Sortie] = " & (Forms![Home].Form![Fille104]![Test_N°Sortie]) 'copie les prix
    CurrentDb.Execute "UPDATE R_Détail_Vente SET R_Détail_Vente.[TVA S] = R_Détail_Vente.[TVA] WHERE R_Détail_Vente.[#Sortie] = " & (Forms![Home].Form![Fille104]![Test_N°Sortie])
    maintenant si j'applique ça derrière l'événement de la sélection d'un client sur l'autre formulaire, ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Forms![Home].Recalc
     
    CurrentDb.Execute "UPDATE R_Détail_Vente SET R_Détail_Vente.[PVUS RR TVAC] = R_Détail_Vente.[PVU RR TVAC] WHERE R_Détail_Vente.[#Sortie] = " & (Forms![Home].Form![Fille104]![Test_N°Sortie]) 'copie les prix
    CurrentDb.Execute "UPDATE R_Détail_Vente SET R_Détail_Vente.[PVUS RR HTVA] = R_Détail_Vente.[PVU RR HTVA] WHERE R_Détail_Vente.[#Sortie] = " & (Forms![Home].Form![Fille104]![Test_N°Sortie]) 'copie les prix
    CurrentDb.Execute "UPDATE R_Détail_Vente SET R_Détail_Vente.[TVA S] = R_Détail_Vente.[TVA] WHERE R_Détail_Vente.[#Sortie] = " & (Forms![Home].Form![Fille104]![Test_N°Sortie])
    vous avez une astuce ?

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Exploite la propriété Bookmark..., d'un Recordset.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  3. #3
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonjour,

    Avant ton requery, il faut que tu stocke une valeur (clé si possible) de l'enregistrement sur lequel tu te trouve dans une variable locale.
    Ensuite, tu fais ton requery.
    Ensuite comme te le propose argyronet, tu dois te servir de la propriété bookmark de ton recordsetclone.
    En effet a chaque recordset d'un formulaire, Access y associe un clone.
    Sur ce clone tu peux faire une recherche, grace à la clé que tu a sauvegardé et te positionner sur le bon enregistrement.
    Ensuite tu récupère la valeur du Bookmark et tu l'affecte à la propriété du recordset de ton formulaire.

    Simple non

    Pour t'aider voila une petite procédure qui te facilitera la tâche
    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
    Sub Positionne(MonForm As Form, ControlName As String, ValeurRech, TypeValeur As Integer)
    On Error Resume Next
    Dim MonClone As Recordset
    Dim Crits As String
        Set MonClone = MonForm.RecordsetClone
        Crits = "[" & ControlName & "]="
        Select Case TypeValeur
            Case vbString
                Crits = Crits & "'" & ValeurRech & "'"
            Case vbDate
                Crits = Crits & "#" & Format(ValeurRech, "mm/dd/yyyy") & "#"
            Case vbLong
                Crits = Crits & ValeurRech
        End Select
        MonClone.FindFirst Crits
        MonForm.BookMark = MonClone.BookMark
        MonClone.Close
    End Sub
    A utiliser de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Positionne me,"MaClé", vnValeurSauvegarde, vbLong
    @+


    Pensez au tag

Discussions similaires

  1. Valeur d'un autre formulaire
    Par fab101 dans le forum Access
    Réponses: 11
    Dernier message: 17/06/2005, 10h42
  2. Réponses: 2
    Dernier message: 28/10/2004, 16h54
  3. Réponses: 2
    Dernier message: 29/10/2003, 11h05
  4. Réponses: 2
    Dernier message: 26/09/2003, 16h49

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