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 :

Atteindre un enregistrement en VBA [AC-365]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 47
    Par défaut Atteindre un enregistrement en VBA
    Bonjour à tous,

    Merci pour ce forum au top sur lequel je trouve beaucoup d'infos très utiles

    Dans le cadre d'un développement Access, je n'arrive pas à trouver la solution à mon problème, j'ai pourtant retourné le sujet dans tous les sens.

    Je souhaite simplement atteindre un enregistrement particulier dans un formulaire. Le formulaire s'appelle F_avis, la table associe T_avis, le champ id_avis. Je veux atteindre l'enregistrement chargé dans la variable nb du champ id_avis.

    J'ai essayé avec DoCmd.GoToRecord , , acGoTo, "id_avis = nb" mais cela ne fonctionne pas...

    Si vous pouvez m'aider cela me rendrait un grand service. Merci beaucoup par avance pour vos réponses !

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 960
    Par défaut
    bonjour,
    avec un identifiant, il faut préférer FindFirst car GotoRecord utilise la position relative (numéro d'enregistrement dans le RecordSet):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Call Me.Recordset.FindFirst(nb)
    'si pas trouvé on se positionne sur l'enregistrement suivant 
    If Me.Recordset.NoMatch Then DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, Me.Recordset.AbsolutePosition + 1

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 47
    Par défaut
    Merci beaucoup pour ta réponse. Néanmoins ça ne fonctionne pas, ça me met une erreur dès la première ligne de code. Peux-tu m'aider ?

    Merci !

  4. #4
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    La solution de tee_Grandbois aurait dû fonctionner.
    Tu peux aussi faire ceci moyennant un filtre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        With Me
            .Filter = "[id_avis] = nb"  'en supposant que nb est un nombre entier
            .FilterOn = True
        End With
    Ne pas oublier de désactiver le filtre après utilisation ou lors du chargement du formulaire (Me.FilterOn= False)
    NB: si nb est du texte, utiliser .Filter = "[id_avis] ='" & nb &"'"

  5. #5
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 960
    Par défaut
    bonsoir,
    Citation Envoyé par Zekraoui_Jakani
    La solution de tee_Grandbois aurait dû fonctionner
    en fait non, j'ai été un peu vite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Call Me.Recordset.FindFirst "[id_avis] = " & nb 
    'si pas trouvé on se positionne sur l'enregistrement suivant 
    If Me.Recordset.NoMatch Then DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, Me.Recordset.AbsolutePosition + 1

  6. #6
    Membre averti
    Inscrit en
    Août 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 47
    Par défaut
    Bonjour,

    Parfait, ça fonctionne avec ce dernier code, merci beaucoup!

    J'ai simplement supprimé le Call qui me mettait un message d'erreur

    Bonne journée à tous et encore merci

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

Discussions similaires

  1. Modifier enregistrement en VBA
    Par gwendk dans le forum Access
    Réponses: 3
    Dernier message: 19/04/2006, 15h08
  2. Réponses: 1
    Dernier message: 27/01/2006, 13h11
  3. Impossible d'atteindre l'enregistrement spécifié
    Par noname_971 dans le forum Access
    Réponses: 4
    Dernier message: 04/11/2005, 17h48
  4. SQL : Impossible d'atteindre l'enregistrement spécifié
    Par Farbin dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 30/09/2005, 17h01
  5. ajouter un enregistrement en vba
    Par xtaze dans le forum Access
    Réponses: 4
    Dernier message: 13/06/2005, 20h30

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