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 :

Cocher et transférer les données dans un autre formulaire [AC-2016]


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Cocher et transférer les données dans un autre formulaire
    Bonjour,

    Je suis débutante en VBA et j'aurais vraiment besoin de votre aide pour un projet.

    J'ai un sous formulaire de catalogue de prix que je peux cocher(BPUmodèle!fLignesBPUmodèle), et je voudrais pouvoir importer les prix que j'ai coché dans un autre sous formulaire(fBPU!CTNRsfLignesDevis).
    Pour l'instant mon code fonctionne mais quand je coche plusieurs cases il y a qu'un seul enregistrement qui s'importe.


    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
    19
    20
    Private Sub BtValider_Click()
     
    If CurrentProject.AllForms("fBPU").IsLoaded = True Then
        If chkImportation = True Then
              Forms!fBPU!CTNRsfLignesDevis.Form!txtNom = Me.txtNom
              Forms!fBPU!CTNRsfLignesDevis.Form!txtNuméro = Me.txtNuméro
              Forms!fBPU!CTNRsfLignesDevis.Form!txtDescription = Me.txtDescription
              Forms!fBPU!CTNRsfLignesDevis.Form!txtMiseenoeuvre = Me.txtMiseenoeuvre
              Forms!fBPU!CTNRsfLignesDevis.Form!txtAide = Me.txtAide
              Forms!fBPU!CTNRsfLignesDevis.Form!txtUnité = Me.txtUnité
              Forms!fBPU!CTNRsfLignesDevis.Form!txtPrixUnitaire = Me.txtPrixUnitaire
              Forms.fBPU.CTNRsfLignesDevis.Form.Refresh
              DoCmd.Close acForm, Me.Name
        End If
    End If
     
    chkImportation = False
    Me.Refresh
     
    End Sub


    J'aimerais que tous les enregistrements que je coche sois transférés.
    Merci d'avance pour votre aide

  2. #2
    Membre émérite 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
    Points : 2 491
    Points
    2 491
    Par défaut Cocher et transférer les données dans un autre formulaire
    Faites plus simple: lorsque vous cochez un ou plusieurs prix, laissez "une requête d'ajout ou append query" écrire les prix choisis dans la table-source du sous-formulaire.
    Il ne vous reste plus qu'à réinitialiser cette table (via delete query) pour nouvel usage, ou bien empêcher que les prix déjà choisis ne se rajoutent pas de nouveau (via citère-filtre), selon vos besoins.

  3. #3
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Petit exemple pour éviter de long discours

    N'hésite pas à poser des questions
    Fichiers attachés Fichiers attachés

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour merci beaucoup pour vos réponses et désolé pour le temps d'attente j'étais en vacances

    J'ai opté pour un mélange de vos 2 solutions. J'ai crée une requête ajout "Importation" et j'ai recopié le code de la SGBD de @Jeannot45 (merci c'est beaucoup plus simple avec un téléchargement ).

    Mais j'ai le même problème sauf que la dernière ligne que je sélectionne se répète 200 fois et les autres que j'ai sélectionnées ne s'ajoutent pas à ma table.

    Voici ma requête "importation" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO bpu ( IDbpu_catégories, numéro, nom, Description, Aide, [Mise En Oeuvre], unité, [Prix Unitaire], IDaffaire )
    SELECT [Formulaires]![BPUmodèle]![CTNRsfBPUmodèle]![IDbpu_catégories] AS Expr1, [Formulaires]![BPUmodèle]![CTNRsfBPUmodèle].[Formulaire]![txtnuméro] AS Expr2, [Formulaires]![BPUmodèle]![CTNRsfBPUmodèle].[Formulaire]![txtnom] AS Expr3, [Formulaires]![BPUmodèle]![CTNRsfBPUmodèle].[Formulaire]![txtDescription] AS Expr4, [Formulaires]![BPUmodèle]![CTNRsfBPUmodèle].[Formulaire]![txtAide] AS Expr5, [Formulaires]![BPUmodèle]![CTNRsfBPUmodèle].[Formulaire]![txtMiseenoeuvre] AS Expr6, [Formulaires]![BPUmodèle]![CTNRsfBPUmodèle].[Formulaire]![txtunité] AS Expr7, [Formulaires]![BPUmodèle]![CTNRsfBPUmodèle].[Formulaire]![txtPrixUnitaire] AS Expr8, [Formulaires]![fBPU]![IDaffaire] AS Expr9
    FROM bpu_catégories INNER JOIN bpu ON bpu_catégories.IDbpu_catégories = bpu.IDbpu_catégories
    WHERE ((([Formulaires]![BPUmodèle]![CTNRsfBPUmodèle].[Formulaire]![chkImportation])=True))
    ORDER BY [Formulaires]![BPUmodèle]![CTNRsfBPUmodèle]![IDbpu_catégories];
    Et mon code sur le formulaire :
    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
    Private Sub BtValider_Click()
     
    If CurrentProject.AllForms("fBPU").IsLoaded = True Then
        With DoCmd
            .SetWarnings False
            .OpenQuery "Importation"
            .SetWarnings True
        End With
        Forms.fBPU.CTNRsfLignesDevis.Form.Refresh
        DoCmd.Close acForm, Me.Name
    End If
     
    chkImportation.Value = False
    Me.Refresh
    MsgBox ("Terminé")
    End Sub

  5. #5
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Désolé d'avoir envoyé une base exemple avec une erreur.
    Ci joint base corrigée

    Bonne journée
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    En relisant ton premier Post, j'ai vu que tu cochais les éléments que tu souhaitais récupérer.
    Je t'ai refait un exemple se basant sur ce principe.

    Du coup, je n'utilise plus la Syntaxe mais en utilisant des Recordsets et la méthode AddNew
    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
        ' Initialisation de la sequence SQL Source et récupération des différents Articles sélectionnés
        l_strSql = "SELECT CodeArticle FROM T_Articles WHERE Selection = -1"
        Set l_rsArticles = CurrentDb.OpenRecordset(l_strSql)
        ' Initialisation de la sequence SQL de la Cible
        l_strSql = "SELECT CodeDevis, CodeArticle FROM T_DetailsDevis"
        Set l_rsDevis = CurrentDb.OpenRecordset(l_strSql)
     
        ' Parcours le jeu d'enregistrements des articles sélectionnés
        With l_rsArticles
            Do While Not .EOF
                ' ajoute les données dans la table de détails du devis
                l_rsDevis.AddNew
                    l_rsDevis.Fields("CodeDevis") = Me.txtDevis
                    l_rsDevis.Fields("CodeArticle") = .Fields(0)
                l_rsDevis.Update
                .MoveNext
            Loop
        End With
    Bonne continuation
    Fichiers attachés Fichiers attachés

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut ça fonctionne !!!
    Bonjour,

    Merci beaucoup Jeannot45, j'ai repris votre code et ça fonctionne enfin.
    Ca me sauve la vie merci encore

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

Discussions similaires

  1. Transférer données entre deux tables sql server
    Par Aethen dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/05/2011, 14h52
  2. récupérer des données entre formulaires
    Par ballantine's dans le forum Langage
    Réponses: 7
    Dernier message: 27/10/2009, 09h24
  3. Réponses: 15
    Dernier message: 08/04/2007, 01h12
  4. passage de données entre formulaires
    Par patbeautifulday1 dans le forum Access
    Réponses: 1
    Dernier message: 30/08/2006, 18h06
  5. [VBA-A] transfert de données entre formulaire
    Par snaxisnake dans le forum VBA Access
    Réponses: 10
    Dernier message: 20/04/2006, 16h48

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