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

IHM Discussion :

Dupliquer enregistrement sous formulaire avec VBA


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Septembre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 73
    Points : 20
    Points
    20
    Par défaut Dupliquer enregistrement sous formulaire avec VBA
    Bonjour à tous, mon projet a bien avancé avec votre aide et il me reste une petite chose encore à améliorer. Je souhaite avoir un bouton permettant de dupliquer le dernier enregistrement de mon formulaire. Mon formulaire comporte 3 sous formulaire et j'aimerai dupliquer les informations pour mon formulaire et mon sous formulaire 1. Hors avec la méthode ci-dessous que j'utilise je ne parviens à copier les valeurs de mon enregistrement que pour mon formulaire général.


    - Module DupliquerEnregistrement
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Option Compare Database
     
    Sub DupliquerEnregistrement( _
        frm As Access.Form, _
        avarChamps As Variant, _
        Optional ByVal blnFin As Boolean = True)
     
        ' Quelques variables...
        Dim rst As DAO.Recordset
        Dim varChamp As Variant
     
        ' Source de données du formulaire
        On Error Resume Next
        Set rst = frm.RecordsetClone
     
        ' Se positionner en début ou en fin de table
        If blnFin Then
            rst.MoveLast
        Else
            rst.MoveFirst
        End If
     
        ' Transférer les données
        If rst.EOF Then
            MsgBox "Aucune donnée à dupliquer !", vbInformation
        Else
            For Each varChamp In avarChamps
                frm(varChamp) = rst(varChamp)
            Next
        End If
     
        ' Libérer les ressources
        Set rst = Nothing
    End Sub
    Et voici le code que j'utilise ensuite pour dupliquer les champs souhaités de l'enregistrement précédent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Commande101_Click()
        Dim avarChamps As Variant
     
        ' La liste des champs à dupliquer
        avarChamps = Array("code_etat_quest", "contact", "code_unep", "nom_source", "nom_source_periode", "nom_exploitant", "code_unite_taux_activite")
     
        ' On appelle la procédure de copie
        DupliquerEnregistrement Me, avarChamps
    End Sub

    Tous les champs mentionnés ici appartiennent à mon formulaire principale et la duplication fonctionne parfaitement pour le formulaire principale. Si j'essaye de rajouter des noms de champs de mon sous formulaire 1 dans avar Champs, la copie ne fonctionne que pour les champs du formulaire principale... J'ai essayé d'intégrer un second bouton DupliquerElement dans mon sous formulaire 1 en lui reformulant les champs souhaités du sous formulaire 1 mais toujours sans succès (message d'erreur).

    J'ai regardé la FAQ et notamment l'article dupliquer un élément en cascade dans un formulaire mais je ne comprends pas du tout le code VBA utilisé et n'arrive pas à l'adapté à ma propose base (je n'y connais rien en VBA).

    L'ideal pour mon projet serait d'avoir un seul bouton DupliquerElement permettant de dupliquer les champs voulu de mon formulaire principales ainsi que ceux de mon sous formulaire 1.

    Comment intégrer cette exigence pour le sous formulaire 1 dans le code VBA que j'utilise ?

    Je pense qu'il doit être possible de rajouter une ligne avarChamps2 pour mon sous formulaire 1 et une seconde ligne pour la procédure de copie mais je bloque...

    Bonne journée

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 085
    Points : 5 200
    Points
    5 200
    Par défaut
    Bonjour,

    Tout d'abord, un formulaire n'est pas nécessairement le reflet exact d'une et une seule table

    Ensuite les données affichées peuvent se lire soit "dans la mémoire de l'écran" soit dans les tables sous-jacentes. Ainsi par exemple les données du sous-formulaire sont aussi dans une (des) table(s) et accessibles par lecture directe.

    Enfin il existe plusieurs syntaxes VBA pour créer de nouveaux enregistrement sur une table. J'utilise .execute qui a la meilleure gestion d'erreur !

    Voici par exemple une procédure qui copie une entete de commande (à partir de données à l'écran) puis ses lignes (par lecture dans la table) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    dim Sr as string, new_cde as string
    new_cde = "A12345" 'nouveau n° de commande (alpha)
    'ENTETE : tous les champs sont ceux du formulaire principal sauf new_cde et date
    Sr = "INSERT INTO cdeHA (cd_cde,cd_tiers,qui,date_cre,devise,langue,cd_adrs,cd_adrs_fact) VALUES ('" & new_cde & "'," & cd_tiers _
    & ",'" & qui & "','" & Date & "','" & devise & "','" & langue & "'," & cd_adrs & "," & cd_adrs_fact & ");"
    msgbox Sr 'pour debug et comprendre
    CurrentDb.Execute Sr, dbFailOnError
     
    'LIGNES : copie des lignes de la commande n° cd_cde (alpha) par lecture dans la table cdeHA_lg
    Sr = "INSERT INTO cdeHA_lg (cd_cde,lg,code,Qte,pu) SELECT '" & new_cde & "',lg,code,Qte,pu FROM cdeHA_lg where cd_cde='" & cd_cde & "'"
    msgbox Sr 'pour debug et comprendre
    CurrentDb.Execute Sr, dbFailOnError
    C'est plus pratique de lire les données du sous-formulaire dans la table car il peut y avoir plusieurs lignes
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Septembre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 73
    Points : 20
    Points
    20
    Par défaut
    Bonjour Nico et merci pour votre réponse.

    Malheureusement je ne connais pas le langage VBA et j'ai du mal a comprendre quelques éléments du code, ce qui m'empêche de le reproduire.

    Si j'ai bien compris, seule la partie 'LIGNES me concerne pour mon pb. Je ne comprends pas ce qu'est new_cde. Est-ce un champ de votre table ? Que désigne le terme alpha ?

    Question bete, je ne comprends pas dans le code à quel moment vous lui dites que la ligne à copier est la dernière de votre table cdeHA_lg.


    Désolé pour ces questions de débutant


    Bonne journée

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 085
    Points : 5 200
    Points
    5 200
    Par défaut
    Citation Envoyé par Fontaine_CLB Voir le message
    Si j'ai bien compris, seule la partie 'LIGNES me concerne pour mon pb. Je ne comprends pas ce qu'est new_cde. Est-ce un champ de votre table ? Que désigne le terme alpha ?
    Mon exemple copie d'abord la ligne courante du formulaire principal en changeant le n° de commande - d'où la variabe locale new_cde de type alpha(numérique) : en pratique son contenu doit être soit calculé (prochain n° libre) soit demandé à l'utilisateur (inputbox) soit lu qqpart...

    Citation Envoyé par Fontaine_CLB Voir le message
    Question bete, je ne comprends pas dans le code à quel moment vous lui dites que la ligne à copier est la dernière de votre table cdeHA_lg.
    Ensuite je copie toutes les lignes de la commande à l'identique (seul le n° de cde change) grâce à insert into... select...
    Dans ce cas je ne vais pas lire le sous-formulaire mais directement les données dans la table sous-jacente
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Septembre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 73
    Points : 20
    Points
    20
    Par défaut
    J'y vois déjà un peu plus clair merci


    Moi je ne veux pas copier toutes les lignes de la table liée à mon sous formulaires 1 mais uniquement la dernière ligne (celle avec le numéro auto max en pratique). Quelle serait la syntaxe à appliquer dans ce cas avec l'exemple suivant :
    table : table_1
    champs: N_auto_PK, champ1,champ2,champ3

    Autre question, ma clef primaire est un numéro auto pour mon sous formulaire et il n'est donc pas possible de copier ce numéro auto. J'imagine que si je ne spécifie pas mon champ numéro auto dans INSERT INTO celui-ci ne sera pas copié et sera de ce fait bien généré à nouveau automatiquement lors de la copie de l'enregistrement ?

    Je vous remercie pour le coup de main.

    Bonne journée

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 085
    Points : 5 200
    Points
    5 200
    Par défaut
    Citation Envoyé par Fontaine_CLB Voir le message
    Quelle serait la syntaxe à appliquer dans ce cas avec l'exemple suivant :
    table : table_1
    champs: N_auto_PK, champ1,champ2,champ3
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into table1 (champ1,champ2,champ3) select top 1 champ1,champ2,champ3 from table1 order by n_auto_pk desc
    Citation Envoyé par Fontaine_CLB Voir le message
    Autre question, ma clef primaire est un numéro auto pour mon sous formulaire et il n'est donc pas possible de copier ce numéro auto. J'imagine que si je ne spécifie pas mon champ numéro auto dans INSERT INTO celui-ci ne sera pas copié et sera de ce fait bien généré à nouveau automatiquement lors de la copie de l'enregistrement ?
    Oui pour le 1er insert mais alors il faut pouvoir retrouver la valeur de ce n° auto pour le 2e insert si cette clé sert de liaison entre les 2 tables !
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Septembre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 73
    Points : 20
    Points
    20
    Par défaut
    Cette clef primaire ne fait pas le lien entre deux tables. J'essaye votre méthode cette aprem et je vous tiens informé.

    Bonne après midi

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Septembre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 73
    Points : 20
    Points
    20
    Par défaut
    Arf la méthode telle que je l'applique ne solutionne pas mon pb.

    J'arrive bien à faire la copie avec une commande DoRunSql puis le insert into... Et effectivement, access créé bien une copie de ma dernière ligne dans ma table1. Le problème est que cela n'apparait pas sur le sousformulaire et surtout il copie la ligne, génère le num auto comme il faut mais indépendamment de ma table principale (appelons la tablep) à laquelle est liée ma table1. Je m'explique, ma table1 comporte un champ n_auto_FK qui est lié au numéro auto (PK) de ma tablep et qui me sert de champ pere/fils pour le lien entre les formulaires.

    N'est il pas du tout possible d'utiliser le module DupliquerEnregistrement présenté dans mon premier post pour un sous formulaire en mettant par exemple en plus dans le code associé au bouton qqch comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     avarchamps2=Array("champ1","champ2","champ3")
     DupliquerEnregistrement Forms![formulairep]![formulaire1].Form!, avarchamps2
    J'ai un message d'erreur me disant qu'il ne trouve pas mon formulaire1 avec cette méthode

  9. #9
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour le forum ,Fontaine_CLB et nico84.
    Faire simple ,mais pas plus
    Ceci dit, l'explication de Fontaine_CLB pouvais ouvrir différentes voies.
    Dans ton dernier code ,il faudrait enlever le dernier apostrophe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DupliquerEnregistrement Forms![formulairep]![formulaire1].Form, avarchamps2
    Cdlt

  10. #10
    Membre à l'essai
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Septembre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 73
    Points : 20
    Points
    20
    Par défaut
    Bonsoir,

    Malheureusement il s'agissait juste d'une écriture un peu trop rapide sur le forum pour le point d'exclamation en trop mais sur mon formulaire, le code est identique à celui que vous proposé Thierry_Pallier... J'obtiens le message d'erreur du module DupliquerEnregistrement, à savoir : Il n'y a aucun enregistrement à dupliquer

  11. #11
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    ha bah oui, tu lui demandes le recordset clone d'un formulaire vide ,celui dans lequel justement tu dois envoyer des données !
    Je manque de temps, et ta question manque de clareté.
    Pour faire simple ,je pense qu'il faut rajouter un argument dans ta fonction:
    le form de départ,le form d'arrivée,et avarChamps (plus ton champ optionnel).
    Fais un essais comme celà.
    A mon avis ,dans ce que j'ai compris de ton problème, cette methode est simple ,mais ne convient que pour un formulaire unique (1 seul enregistrement.
    A+

  12. #12
    Membre à l'essai
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Septembre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 73
    Points : 20
    Points
    20
    Par défaut
    Arf la méthode telle que je l'applique ne solutionne pas mon pb.

    J'arrive bien à faire la copie avec une commande DoRunSql puis le insert into... Et effectivement, access créé bien une copie de ma dernière ligne dans ma table1. Le problème est que cela n'apparait pas sur le sousformulaire et surtout il copie la ligne, génère le num auto comme il faut mais indépendamment de ma table principale (appelons la tablep) à laquelle est liée ma table1. Je m'explique, ma table1 comporte un champ n_auto_FK qui est lié au numéro auto (PK) de ma tablep et qui me sert de champ pere/fils pour le lien entre les formulaires.
    Et sinon n'est pas possible d'adapter le code de Nico de façon à dupliquer l'enregistrement dans ma table 1 ou le champ n_auto_FK de ma table1 est maximum ? Ca devrait solutionner le pb et ca devrait faire apparaitre l'enregistrement dans mon sous formulaire non ? Dans ce cas, quelle serait la syntaxe de l'argument à lui indiquer ?

    Bonne soirée

  13. #13
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 085
    Points : 5 200
    Points
    5 200
    Par défaut
    Dans mon code il y a un exempe d'insertion qui utilise les champs du formulaire et un autre exemple qui utilise les données lues dans la table. En combinant les 2 on peut faire à peu près tout.

    Si j'ai bien compris il s'agit seulement de dupliquer la dernière ligne de la sous-fenêtre avec sa clé externe, seule la clé interne change (mais c'est une clé auto donc inutile de la préciser). Donc le code le plus proche est celui de mon 1er insert.
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  14. #14
    Membre à l'essai
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Septembre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 73
    Points : 20
    Points
    20
    Par défaut
    A vrai dire la clef externe ne doit pas être dupliquée non plus. Elle est liée a mon numéro_auto_PK de ma table principale (relation 1 a 1, j'avais besoin de découper ma table principale). Si demain je crée un fichier exemple, vous pourrez y jeter un oeil ? Jpense qu'un exemple concret sera bcp plus parlant que mon charabia de débutant.


    Vous pouvez lire le format 2007 ?

  15. #15
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 085
    Points : 5 200
    Points
    5 200
    Par défaut
    Si j'ai bien suivi il ne manque que la clé externe n_auto_FK qui fait le lien avec la cle de l'enregistrement en cours (que j'ai appelé cle_pere et que j'ai supposé numérique) donc ça doit s'écrire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sr = "INSERT INTO table_fille (n_auto_FK,c1,c2,c3) SELECT top 1 " & cle_pere & ",c1,c2,c3 FROM table_fille order by cle_fille desc"
    msgbox Sr 'pour debug et comprendre
    CurrentDb.Execute Sr, dbFailOnError
    Où cle_fille est la clé primaire de la table fille (n° auto)

    Est-ce que par hasard les 2 tables auraient leur clé primaire nommée n_auto_pk ? Si oui c'est pas une bonne idée !
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  16. #16
    Membre à l'essai
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Septembre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 73
    Points : 20
    Points
    20
    Par défaut
    Vous avez bien suivi oui, j'essaye de tester votre méthode dans la matinée.

    Et non la clef primaire des deux tables portent un nom différent

    Merci pour votre patience

  17. #17
    Membre à l'essai
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Septembre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 73
    Points : 20
    Points
    20
    Par défaut
    J'ai un message d'erreur de syntaxe pour la ligne INSERT INTO

    Par contre dans le code que vous proposer, j'ai un doute sur le & cle_pere &

    La fameuse clef père appartient à ma table_père donc ne peut être extraite de ma table_fille...

    Je crée un fichier exemple et le post ici, ce sera bcp plus simple.

  18. #18
    Membre à l'essai
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Septembre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 73
    Points : 20
    Points
    20
    Par défaut
    Voici
    Fichiers attachés Fichiers attachés

  19. #19
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 085
    Points : 5 200
    Points
    5 200
    Par défaut
    Il faut remplacer cle_pere par le nom du champ qui contient la clé père dans le formulaire courant (le truc qui doit aller dans n_auto_fk) !

    En fait dans le cas présent (création de doublon) ça doit marcher aussi comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sr = "INSERT INTO table_fille (n_auto_FK,c1,c2,c3) SELECT top 1 n_auto_FK,c1,c2,c3 FROM table_fille order by cle_fille desc"
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  20. #20
    Membre à l'essai
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Septembre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur environnement
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2014
    Messages : 73
    Points : 20
    Points
    20
    Par défaut
    C'est ce que j'ai fait dans l'exemple posté en pièce jointe. Cela ne fonctionne pas et j'ai ce message d'erreur sur le INSERT INTO.

    J'ai réessayé avec votre nouveau code, cela ne fonctionne pas non plus, mon champ n_auto_FK étant indexé sans doublon.

    Pouvez vous regarder le code mis sur le bouton copier dans mon exemple ?

    Bonne après midi

Discussions similaires

  1. dupliquer un enregistrement (sous-formulaire)
    Par Salsaboy60 dans le forum IHM
    Réponses: 4
    Dernier message: 06/03/2009, 01h55
  2. Ajout enregistrement sous formulaire avec onglet
    Par maxime350 dans le forum IHM
    Réponses: 5
    Dernier message: 04/06/2008, 09h10
  3. PB avec enregistrer sous ppt depuis VBA Excel
    Par sash6 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/11/2007, 10h05
  4. Sous-formulaire avec 1 seul enregistrement
    Par Farbin dans le forum Access
    Réponses: 6
    Dernier message: 08/08/2006, 17h37
  5. Réponses: 19
    Dernier message: 26/01/2006, 09h44

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