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 :

Comment changer la valeur d'un champ d'une feuille de données connaisant son n° de ligne [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 16
    Points
    16
    Par défaut Comment changer la valeur d'un champ d'une feuille de données connaisant son n° de ligne
    Bonjour et merci d'être le recours incontournable de solutions Microsoft ACCESS.

    C'est toujours vers vous que je me retourne lorsque mes autres recherches n'aboutissent pas, mais entre temps j'ai toujours perdu un temps précieux.

    Sous VB j'utilise :

    OccSource = Forms(frmListeClients)(ssfListeClients).Form.CurrentRecord

    pour sauvegarder la ligne d'appel d'un formulaire me donnant la liste des Clients de la base de données..

    La variable :

    Critère = Forms(frmListeClients)(ssfListeClients)![CodeClient]

    me permet d'ouvrir le formulaire Client frmClient avec les données de [CodeClient]

    et

    NbreClients = Forms(frmListeClients)(ssfListeClients).Form.RecordsetClone.RecordCount

    m'indique le nombre de clients affichés dans le sous formulaire.

    Pour des raisons qui nous emmèneraient trop loin dans la discussion, je voudrais simplement signaler que j'utilise une Pile (Rang, frmSource, ssfSource, Ligne, Cible, Code) pour décrire et gérer l'enchaînement des différents traitements.

    Mon problème est donc le suivant :

    Soit par exemple l'étape 1 de la Pile (1, frmListeClients, ssfListeClients, 17, frmClient, 69128)
    au sortir de la fiche Client je voudrais modifier la valeur du champ Etat (colonne 8) du Client de la ligne 17 (Code 69128) du sous formulaire ssfListeClients de mon formulaire frmListeClients traité en feuille de données.

    Comment faire ? Comment adresser la propriété value de Forms(frmListeClients)(ssfListeClients)![Etat] ?

    Merci pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 364
    Points : 19 756
    Points
    19 756
    Billets dans le blog
    65
    Par défaut
    Salut,

    J'ai pas tout suivi, mais en gros pour atteindre l'enregistrement n°10 sur ouverture d'un formulaire par exemple je ferai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Open(Cancel As Integer)
     
    ' déplace le curseur sur le 10ème enregistrement du recordset clone
    Me.RecordsetClone.Move 9 ' les numéros commence à 0.
     
    ' cale le curseur du formulaire sur cet enregistrement.
    Me.Bookmark = Me.RecordsetClone.Bookmark
     
    End Sub
    Autre possibilité:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Open(Cancel As Integer)
     
    DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, 10
     
    End Sub
    A+

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Merci User,

    J'ai travaillé sur les 2 possibilités.
    La seconde (DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, 10) ne fonctionnant pas, je voudrais compléter la solution pour un confrère rencontrant le même problème.

    1. Depuis le formulaire contenant la liste des Clients, on mémorise le champ source (nomCtrlSource) et la ligne (LigneSource) venant d'être sélectionnés, pour y retourner au sortir de la fiche Client, avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Forms(frmListeClients)(ssfListeClients)
    ...Critère = ![CodeClient]
    ...nomCtrlSource = .Form.ActiveControl.Name
    ...LigneSource = .Form.CurrentRecord - 1
    End With
    2. On ouvre le formulaire de la fiche client frmClient.
    3. Une fois traitée, on ferme la fiche Client et on retourne sur la ligne source (LigneSource) et on sélectionne le champ (nomCtrlSource).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    With Forms(frmListeClients)(ssfListeClients)
    ...'Rafraîchissement de la Requête Source
    ....Requery
    ...'Positionnement sur la Ligne Source
    ....Form.RecordsetClone.Move LigneSource
    ...'Recalage de la ligne de la Requête sur la Ligne du Sous-formulaire
    ....Form.Bookmark = .Form.RecordsetClone.Bookmark
    End With
    'Activation du Champ Source
    Forms(frmListeClients)(ssfListeClients)(nomCtrlSource ).SetFocus
    Merci encore.

    Cordialement.

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

Discussions similaires

  1. Comment récupérer la valeur d'un champ d'une fenêtre modale
    Par lodan dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/09/2011, 18h02
  2. Réponses: 10
    Dernier message: 21/04/2011, 09h40
  3. Changer la valeur d'un champs d'une table acces via vba
    Par gege22mars dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/09/2007, 20h37
  4. Comment changer la valeur d'un input selon une liste déroulante
    Par dreyo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/02/2007, 15h22
  5. Comment changer la valeur d'un attribut avec une stylesheet?
    Par BugsBunny dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 02/06/2006, 18h18

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