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 :

Passer en mode création ?


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Janvier 2008
    Messages : 102
    Par défaut Passer en mode création ?
    Bonjour,
    Je développe actuellement une base de données Access qui doit permettre de gérer une liste de personnes. Je souhaites afficher dans un formulaire la liste des personnes avec un bouton permettant de modifier et un autre pour supprimer.
    En gros chaque ligne sera sous cette forme :
    Nom | Prénom | quelques informations venant d'autres tables | boutons modifier / supprimer

    Le bouton modifier va ouvrir un sous-formulaire permettant la modification de certains champs, le bouton supprimer va supprimer les enregistrements liés à la personne (après confirmation).

    J'ai donc créé une macro à l'ouverture du formulaire avec un RecordSet pour parcourir les enregistrements des tables que je souhaites afficher, puis un petit bout de programme pour créer de façon dynamique une ligne pour chaque personne et les boutons. Le soucis est que lorsque j'essaye de créer un contrôle (textbox ou autre), j'ai une erreur me disant que la création de contrôle doit se faire en mode création.

    Ma question est donc : comment changer de façon dynamique le mode de mon formulaire ? Je souhaites passer en mode création à l'ouverture, générer mon formulaire, le passer en mode Formulaire.

    Merci de votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Pourquoi as-tu besoin de créer le formulaire dynamiquement ?

    Tu ne peux pas utiliser une formulaire sur ta table qui contient la liste ?

    Et je n'ai pas compris, dois-tu supprimer la personne d'une liste de personnes ou dois-tu supprimer la personne définitivement de tes données ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Janvier 2008
    Messages : 102
    Par défaut
    Bonjour,

    J'en ai besoin car les formulaires de base ne me permettent pas d'obtenir ce que je veux. Le bouton supprimer va faire une suppression logique donc je suis obligé de passer par du VBA. Plus exactement, cela va désactiver dans deux tables les enregistrements, puis supprimer des lignes dans une autre table.
    EDIT : ma réponse n'est pas très claire je pense. La liste que j'affiche est une compilation de 3 tables. Les personnes ont besoin des informations de ces 3 tables pour prendre la décision.

    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par défaut
    Bonjour,

    Oui un CreateControl n'est disponible qu'en mode Création des formulaires.

    Je ne vois pas la relation entre une source multitable, le problème de suppression/modification et le createcontrol.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Janvier 2008
    Messages : 102
    Par défaut
    Le problème est que quand l'utilisateur va cliquer sur le bouton supprimer, il faut :
    * désactiver (cocher un booléen) dans deux tables
    * supprimer des enregistrements dans une autre table
    Ceci n'est possible qu'en VBA à ma connaissance.

    Pour revenir sur mon problème, avec des formulaires classiques, je n'obtiens pas ce que je veux, à savoir un bouton modifier et un bouton supprimer sur chaque ligne de mon tableau pour permettre à la personne d'ouvrir le bon sous-formulaire et modifier ou supprimer en fonction de son clic.

    En un formulaire je résous à la fois : la consultation, la possibilité de modifier, et la possibilité de supprimer.

    Mon problème est de permettre une ergonomie adaptée à mes utilisateurs, avec le moins d'écrans / formulaire possibles.

    Après je suis ouvert à toute solution.

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 137
    Par défaut
    Bonjour,

    Manipuler des données se fait avec VBA ou SQL ou VBA/SQL. Tout dépend de ce qu'on doit faire.

    Pour les boutons supprimer / modifier je ne vois pas ce qui t'empêche d'en mettre sur chaque ligne / ou pas. Dans un formulaire en mode continu ça fonctionne.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Janvier 2008
    Messages : 102
    Par défaut
    Bon... je suis vraiment à l'ouest

    Je ne connaissais pas le principe des formulaires en mode continu ! et j'essayais donc de faire exactement cela mais en VBA... ce qui est une galère sans nom.

    Merci beaucoup, en lisant des tutos sur le site et en ajoutant un simple bouton je devrais pouvoir m'en sortir

    Merci de votre patience

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    ce qui est une galère sans nom.
    Je pense que tu t'y prends mal.
    Comment je ferai :
    Créer un formulaire qui présente les données dont j'ai besoin, probablement basé sur une requête (ou une table).
    Soit c'est un formulaire qui présente toutes les données, soit un qui présente les données pour un enregistrement particulier. (Ouverture avec un filtre).
    Mettre un bouton "Supprimer"
    Dans le code du bouton supprimer :
    • Mettre à jour les champs booléens
      c'est au max une dizaine de lignes de code
      Quelque chose comme :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      dim db as dao.database: set db=currentdb
      dim r as dao.recordset: set r=db.openrecordset("TaTable", dobOpenDynaset)
      r.findfirst("[Taclef]=" & me.TaClef)
       
      if not r.nomatch() then
         r.edit
         r![TonChampBolleen]=True 'ou False selon la logique qui indique une suppression.
         r.update
      end if
       
      r.close: set r=nothing
      db.close: set db=nothing
    • Mettre du code qui va supprimer l'enregistrement voulu.
      Quelque chose comme :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      dim db as dao.database: set db=currentdb
      dim r as dao.recordset: set r=db.openrecordset("TonAutreTable", dobOpenDynaset)
      r.findfirst("[Taclef]=" & me.TaClef)
       
      if not r.nomatch() then
         r.delete 'À verifier je n'ai pas utilisé cela depuis des sciècles.
      end if
       
      r.close: set r=nothing
      db.close: set db=nothing


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 527
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 527
    Par défaut
    Les formulaires Access ne supportent pas la gestion dynamique de leur contenu.

    Par contre, tu peux créer un sous-formulaire, ou ouvrir un 2e formulaire en "pop-up".

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Citation Envoyé par deedolith
    Les formulaires Access ne supportent pas la gestion dynamique de leur contenu.
    C'est vrai mais on peut arriver à quelque chose de semblable en jouant avec la visibilité des contrôles, avoir tous les contrôles possibles et n'afficher qu'une partie à un moment donné.
    Et je pense qu'on peut aussi déplacer un contrôle même dans un formulaire ouvert (pas essayé).
    Dans tous les cas c'est du travail et de de la programmation.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/06/2006, 11h26
  2. Ouvrir le mode "création requête" avec un bouton.
    Par Goldenduck4000 dans le forum Access
    Réponses: 5
    Dernier message: 22/05/2006, 15h40
  3. Evènement sur ouverture d'un formulaire en mode création ?
    Par marchand_de_sable dans le forum Access
    Réponses: 8
    Dernier message: 09/09/2005, 15h51
  4. Comment passer en mode édition dans un TTreeView ?
    Par Invité dans le forum C++Builder
    Réponses: 6
    Dernier message: 08/08/2005, 13h37
  5. Passer en mode 800*600
    Par flavien tetart dans le forum Assembleur
    Réponses: 8
    Dernier message: 30/05/2002, 23h05

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