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 :

[VBA] table numéroauto


Sujet :

VBA Access

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut [VBA] table numéroauto
    Bonsoir,

    J'ai donc un formulaire1 indépendant liés à l'aide d'un contrôle à un formulaire2 qui affiche les données de ma table. Dans cette table, j'ai un champ "ID" avec comme type de données "NuméroAuto".

    Je souhaiterais donc, une fois le nom d'une personne sélectionné dans le formulaire1 (à l'aide d'une liste modifiable),que lorsque j'appui sur le contrôle qui ouvre le formulaire2, le formulaire2 ce place au même enregistrement que celui du formulaire1. Pour cela j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.GoToRecord acDataForm, "Carte", acGoTo, Me.ID.Value
    La valeur du numéro ID est extraite dans le formulaire1 à partir de la table en fonction du nom sélectionné.

    Le probléme est que si je supprime un enregistrement de la table, il y aura un décalage entre le numéroauto et le nombre réel d'enregistrement. Donc la fonction que j'utilise ne fonctionne plus, elle ce placera 1 enregistrement plus loin..

    Ce qui serait l'idéal c'est d'avoir un champ ID sans décallage de numéro, ou reussir a extraire dans le formulaire1 le numéro de l'enregistrement en fonction du nom sélectionné.

    En espérant que vous avez compris mon probléme....

  2. #2
    Faw
    Faw est déconnecté
    Membre Expert

    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
    Par défaut
    Salut, utilise plutôt Docmd.Openform + la clause where
    http://access.developpez.com/faq/?page=Forms#PassValeur

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut
    ok, merci de ton aide je vais essayer

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut
    J'ai essayé avec les aides données dans la faq, j'ai pas réussi a les aplliquer... Mais j'ai regardé dans l'aide d'access et j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Carte", acNormal, , "Nom = 'modifiable1'"
    Le probléme c'est que sa ouvre le formulaire et à côté de la barre de défilement y a marqué filtré, mais sa ne m'affiche pas les données pour la personne en question. Si j'écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Carte", acNormal, , "Nom = modifiable1"
    avant d'ouvrir le formulaire, y m'ouvre une petite fenêtre pour me demander la valeur de modifiable1, si j'écrit le nom d'une personne de la table, une fois le formulaire ouvert c'est bon. Ce serait bien de ne pas avoir a écrire le nom...

    Donc je pense que le probléme est assez simple, mais pour ma part je trouve pas encore la solution, si quelqu'un a une solution...

  5. #5
    Faw
    Faw est déconnecté
    Membre Expert

    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
    Par défaut
    Bon, d'abord tu n'as pas bien regardé la syntaxe de la faq
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[nom_champ] =" & Forms![nom_formulaire]![nom_contrôle dans autre formulaire]
    ce qui chez toi devrait donner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Carte", acNormal, , "Nom =" & Forms![Form1]!modifiable1
    Deusio, tu veux accéder à un enregistrement par son ID mais tu utilises
    Le NOM à priori...Où récupères-tu l'ID?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut
    J'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Carte", acNormal, , "Nom =" & Forms![Menu]!modifiable1
    Avec cette ligne de commande, y me demande maintenant la valeur pour la personne sélectionné...

    Ben a la base mon idée était de créer un champ ID (numéroauto) qui correspond enfaite au nombre d'enregistremnt de la table , puis l'extraire dans le formulaire1, pour cela j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.id = modifiable1.Column(0)
    J'obtient donc l'ID en fonction de la personne sélectionné, puis ouvrir l'autre formulaire avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.GoToRecord acDataForm, "Carte", acGoTo, Me.ID.Value
    Mais si je supprime un enregistrement de la table, et que je recrée un enregistrement il y aura un décallage du numéroauto par raport au nombre réel de'enregistrement.

    Je te met la bd, si tu veux comprendre plus précisement mon probléme... (toutes les actions que je veux faire c quand tu clic sur "Mise a jour client")

  7. #7
    Faw
    Faw est déconnecté
    Membre Expert

    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Carte", acNormal, , "ID =" & Me.id
    Enlève le filtre que tu as mis dans la propriété Filter du form "Carte"
    chez moi ça fonctionne...
    id est le contrôle indépendant du form "Menu".

    Je vais regarder pourquoi ça ne fonctionne pas à priori avec la combobox...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2006
    Messages : 47
    Par défaut
    Un grand merci a toi Faw, et pour quelqu'un qui ne comprends rien à Access je trouve que sa va, continue à te soigner sa à l'air de fonctionner.

    A bientôt.

  9. #9
    Faw
    Faw est déconnecté
    Membre Expert

    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
    Par défaut
    Citation Envoyé par BaRonm3
    Un grand merci a toi Faw, et pour quelqu'un qui ne comprends rien à Access je trouve que sa va, continue à te soigner sa à l'air de fonctionner.

    A bientôt.
    en ce moment, je me mettrais plutôt en "soins palliatifs"
    Merci à toi mais je ne suis pas convaincu que tu n'ais pas d'autres problèmes
    encore aucultés pour l'instant au regard de ta base...

    en effet, comment se fait-il que ta liste déroulante renvoie toujours le
    premier enregistrement en cas d'homonymie (test avec marius (oups c'était Maurice!)) alors que
    la référence est l'ID?!!! en principe tu ne devrais pas avoir besoin de passer
    par le contrôle "id" pour retourner le bon enregistrement....

    Et pourquoi le contrôle id du form Menu a comme source contrôle "id" alors que
    tu travailles avec un form et des contrôles indépendants?

    j'ai un peu plus le temps demain, vé essayer d'y voir plus clair.

    Suite...
    Finalement c'est assez simple:
    Tu mets la colonne liée = 1 et tu laisses les largeurs colonnes comme elles sont.
    Et ton appel de form devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Carte", acNormal, , "ID =" & Me.modifiable1

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

Discussions similaires

  1. SQL & VBA & Table temporaire
    Par HurGeek dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/05/2012, 17h39
  2. VBA Tables Liées
    Par Keuf95 dans le forum Access
    Réponses: 8
    Dernier message: 24/08/2006, 18h04
  3. [VBA] Attache automatique des tables
    Par bestall666 dans le forum Access
    Réponses: 4
    Dernier message: 14/05/2005, 12h42
  4. Créer une table en VBA ?
    Par nicburger dans le forum Access
    Réponses: 11
    Dernier message: 16/02/2005, 15h15

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