Copie dans un nouvel enregistrement VBA acc
Résolu/Fermé
A voir également:
- Copie dans un nouvel enregistrement VBA acc
- Copie cachée - Guide
- Nouvel outlook - Guide
- Copie écran samsung - Guide
- Copie disque dur - Guide
- Vba l'indice n'appartient pas à la sélection - Forum VB / VBA
16 réponses
Alros voici la solution (sorry pr le retard, petit rdv... !)
Dans la partie INSERT TO, vous devez donner le nom du champ tel qu'il est dénommé dans la table
Dans la partie VALUES, vous devez donner le nom que porte votre champ dans le formulaire.
DoCmd.RunSQL "INSERT INTO Donation (TitreMr, NomMr, Prénom, TitreMme, NomMme, Gestionnaire) VALUES (""" & Titre & """, """ & Nom & """, """ & Prénom & """, """ & Titre_Mme & """, """ & Nom_Mme & """, """ & Gestionnaire & """);"
Dans la partie INSERT TO, vous devez donner le nom du champ tel qu'il est dénommé dans la table
Dans la partie VALUES, vous devez donner le nom que porte votre champ dans le formulaire.
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
26 mars 2008 à 17:10
26 mars 2008 à 17:10
En programmation tout est possible meme si ce n'est pas forcement evident... (jc bellamy)
Comment est ton formulaire ? L'a tu generer automatiquement ?
Je pense que le mieux pour dupliquer un enregistrement est d'utiliser une requete ajout :
Comment est ton formulaire ? L'a tu generer automatiquement ?
Je pense que le mieux pour dupliquer un enregistrement est d'utiliser une requete ajout :
Sub Dupliquer() DoCmd.RunSQL "INSERT INTO ... SELECT ..." End Sub
Le formulaire n'est pas généré automatiquement.
L'utilisateur rempli un certain nombre de champs et l'idée est qu'il clique sur un bouton pour dupliquer (ce qu'il vient de remplir).
Je vais essayer ce que tu me propose ! Merci ;-)
L'utilisateur rempli un certain nombre de champs et l'idée est qu'il clique sur un bouton pour dupliquer (ce qu'il vient de remplir).
Je vais essayer ce que tu me propose ! Merci ;-)
En effet, ta solution semble bonne, mais elle copie tous les enregistrements !!! Et moi je voudrais dupliquer uniquement le document en cours !
Or, comme il sagit d'un code, je ne peut pas spécifier la valeur du champ à l'avance.
:s
ps: comme ma DB est destinée à être multi-utilisateur, il faut que ce soit vraiment l'enregistrement actuelement utilisé par l'utilisateur.
Or, comme il sagit d'un code, je ne peut pas spécifier la valeur du champ à l'avance.
:s
ps: comme ma DB est destinée à être multi-utilisateur, il faut que ce soit vraiment l'enregistrement actuelement utilisé par l'utilisateur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
27 mars 2008 à 09:53
27 mars 2008 à 09:53
Il faut que tu ajoute une clause where.
Je ne sais pas du tout quels sont tes champs mais la syntaxe presque complete pourrais etre :
je suppose que ta table s'appelle matable et que l'identifiant de cette table s'appelle id.
l'id entre guillemet designe le nom du champ dans la table.
l'id en dehors des guillemets fait reference a la valeur du champ id dans le formulaire.
donc le runsql interpretera en fait un chaine du genre :
Je ne sais pas du tout quels sont tes champs mais la syntaxe presque complete pourrais etre :
Sub Dupliquer() DoCmd.RunSQL "INSERT INTO matable SELECT * FROM matable WHERE id=" & id End Sub
je suppose que ta table s'appelle matable et que l'identifiant de cette table s'appelle id.
l'id entre guillemet designe le nom du champ dans la table.
l'id en dehors des guillemets fait reference a la valeur du champ id dans le formulaire.
donc le runsql interpretera en fait un chaine du genre :
"INSERT INTO matable SELECT * FROM matable WHERE id=123"
Merci... Je pense qu'on y est presque, mais j'ai un problème car il me dit que Le nombre de valeur de la requête doit coïncider avec le nombre de champs destination. Je comprends bien le message, mais je ne vois pas où il me manque un élément... puisque j'ai 7 insert to et 7select !
Private Sub TddDBQ_Click()
DoCmd.RunSQL "INSERT INTO Donation (TitreMr,NomMr,Prénom,TitreMme,NomMme,Numéro_Custumer,Gesionnaire) SELECT Donation (TitreMr,NomMr,Prénom,TitreMme,NomMme,Numéro_Custumer,Gesionnaire)
FROM Donation
WHERE NomMr = "& NomMr And Prénom ="& Prénom"
End Sub
En fait, une fois qu'il a copié ceci, il devrait encore écrire une valeur dans un champ, car tous ne sont pas complétés. Mais chaque chose en son temps... A moins qu'on puisse ajouter une value directement?
Private Sub TddDBQ_Click()
DoCmd.RunSQL "INSERT INTO Donation (TitreMr,NomMr,Prénom,TitreMme,NomMme,Numéro_Custumer,Gesionnaire) SELECT Donation (TitreMr,NomMr,Prénom,TitreMme,NomMme,Numéro_Custumer,Gesionnaire)
FROM Donation
WHERE NomMr = "& NomMr And Prénom ="& Prénom"
End Sub
En fait, une fois qu'il a copié ceci, il devrait encore écrire une valeur dans un champ, car tous ne sont pas complétés. Mais chaque chose en son temps... A moins qu'on puisse ajouter une value directement?
blux
Messages postés
25966
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 avril 2024
3 284
27 mars 2008 à 13:37
27 mars 2008 à 13:37
Salut,
on peut ajouter une value directement, mais à mon avis, le problème risque d'être autre : pour pouvoir faire le select il faut que l'enregistrement existe, or quand on est en train de saisir dans le form, le record n'est pas encore créé, donc il ne sera pas présent dans la table, donc pas récupérable via select.
Il faut, à mon avis, faire un insert into, mais avec des values en source (que tu seras allé chercher en vba) et non avec un select.
on peut ajouter une value directement, mais à mon avis, le problème risque d'être autre : pour pouvoir faire le select il faut que l'enregistrement existe, or quand on est en train de saisir dans le form, le record n'est pas encore créé, donc il ne sera pas présent dans la table, donc pas récupérable via select.
Il faut, à mon avis, faire un insert into, mais avec des values en source (que tu seras allé chercher en vba) et non avec un select.
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
27 mars 2008 à 13:25
27 mars 2008 à 13:25
Il y a une erreur dans ton WHERE. Tu dois ecrire :
qui sera interprete ainsi :
Tu peux en plus ajouter des guillemets pour gerer les cas ou il y a un espace dans le NomMr ou Prenom
qui sera interprete ainsi :
WHERE NomMr=" & NomMr & " AND Prénom=" & Prénom
qui sera interprete ainsi :
WHERE NomMr=Diez AND Prénom=Santiago
Tu peux en plus ajouter des guillemets pour gerer les cas ou il y a un espace dans le NomMr ou Prenom
WHERE NomMr=""" & NomMr & """ AND Prénom=""" & Prénom & """"
qui sera interprete ainsi :
WHERE NomMr="Diez" AND Prénom="Santiago Felipe"
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
27 mars 2008 à 13:48
27 mars 2008 à 13:48
Blux a probablement raison. Sa proposition donne la commande suivante :
J'ai suppose que TitreMr, NomMr, Prénom, TitreMme, NomMme, Numéro_Custumer et Gesionnaire existent tous a la fois comme champ de table et comme champ de formulaire.
J'ai suppose qu'il fallait mettre des guillemets partout sauf autour de Numéro_Custumer qui est probablement numerique.
Private Sub TddDBQ_Click() DoCmd.RunSQL "INSERT INTO Donation (TitreMr, NomMr, Prénom, TitreMme, NomMme, Numéro_Custumer, Gesionnaire) SELECT """ & TitreMr & """, """ & NomMr & """, """ & Prénom & """, """ & TitreMme & """, """ & NomMme & """, " & Numéro_Custumer & ", """ & Gesionnaire & """;" End Sub
J'ai suppose que TitreMr, NomMr, Prénom, TitreMme, NomMme, Numéro_Custumer et Gesionnaire existent tous a la fois comme champ de table et comme champ de formulaire.
J'ai suppose qu'il fallait mettre des guillemets partout sauf autour de Numéro_Custumer qui est probablement numerique.
blux
Messages postés
25966
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 avril 2024
3 284
27 mars 2008 à 13:54
27 mars 2008 à 13:54
Ou
A+ Blux
INSERT INTO Donation (TitreMr, NomMr, Prénom, TitreMme, NomMme, Numéro_Custumer, Gesionnaire) VALUES (TitreMr,....)--
A+ Blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
Merci à tous pour votre aide !
Bon j'ai encodé toutes vos informations...
Le code donne ceci (j'ai viré le Numéro Customer pcq je devrais le renommer dans ma table pr ne pas que ca bug) et j'ai également bougé la condition WHERE, car il n'arrivait à aucun résultat (0 lignes !)! :(
Par contre, en virant également le FROM donation, il m'indique qu'il copie 1 ligne =D
Mais dans ces cas là, j'obtiens ceci comme message.
http://img143.imageshack.us/img143/5265/erreurxa0.png
(ici il parle de 10 lignes, mais c'est pcq je n'avais pas encore bougé le FROM. En bougeant le FROM, il n'indique qu'une ligne)
Bon j'ai encodé toutes vos informations...
Le code donne ceci (j'ai viré le Numéro Customer pcq je devrais le renommer dans ma table pr ne pas que ca bug) et j'ai également bougé la condition WHERE, car il n'arrivait à aucun résultat (0 lignes !)! :(
DoCmd.RunSQL "INSERT INTO Donation (TitreMr, NomMr, Prénom, TitreMme, NomMme, Gestionnaire) SELECT """ & TitreMr & """, """ & NomMr & """, """ & Prénom & """, """ & TitreMme & """, """ & NomMme & """, """ & Gesitonnaire & """ FROM Donation;"
Par contre, en virant également le FROM donation, il m'indique qu'il copie 1 ligne =D
Mais dans ces cas là, j'obtiens ceci comme message.
http://img143.imageshack.us/img143/5265/erreurxa0.png
(ici il parle de 10 lignes, mais c'est pcq je n'avais pas encore bougé le FROM. En bougeant le FROM, il n'indique qu'une ligne)
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
27 mars 2008 à 15:19
27 mars 2008 à 15:19
parceque justement il faut que tu enleve le FROM Donation.
Comme l'evoquais Blux, les donnees ne doivent pas etre prise dans la table (on est pas encore sur qu'elles y soient) mais dans le formulaire. Donc tu dois enlever FROM Donation.
Comme l'evoquais Blux, les donnees ne doivent pas etre prise dans la table (on est pas encore sur qu'elles y soient) mais dans le formulaire. Donc tu dois enlever FROM Donation.
blux
Messages postés
25966
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 avril 2024
3 284
27 mars 2008 à 15:21
27 mars 2008 à 15:21
Donc ce n'est pas la peine de faire un 'select' mais un 'values' suffit...
Oui mais même ne bougeant le FROM j'ai quand même le message. Blux avait entièrement raison comme tu le dis, maintenant il ne sélectionne qu'une seule ligne.
Mais bon il y a ce problème de validation.
Mais bon il y a ce problème de validation.
J'obtiens toujours le message ne mettant VALUES... :(
blux
Messages postés
25966
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 avril 2024
3 284
27 mars 2008 à 15:29
27 mars 2008 à 15:29
Colle-nous ta ligne de VBA...
Car il est possible qu'il faille préfixer les noms des champs avec celui du formulaire pour les récupérer.
Car il est possible qu'il faille préfixer les noms des champs avec celui du formulaire pour les récupérer.
Private Sub TddDBQ_Click() DoCmd.RunSQL "INSERT INTO Donation (TitreMr, NomMr, Prénom, TitreMme, NomMme, Gestionnaire) VALUES (""" & TitreMr & """, """ & NomMr & """, """ & Prénom & """, """ & TitreMme & """, """ & NomMme & """, """ & Gestionnaire & """);" End Sub
blux
Messages postés
25966
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 avril 2024
3 284
27 mars 2008 à 15:40
27 mars 2008 à 15:40
Et puis vu que TitreMr est un champ, il faudrait passer par TitreMr.value avant et mettre le tout dans une chaine pour éviter les soucis de """"" multiples.
Ensuite, il serait intéressant d'afficher les valeurs de données, pour voir.
Mets un msgbox "#" & TitreMr & "#" & TitreMr.value & "#" avant ton docmd, pour voir si la donnée est correctement renseignée
Ensuite, il serait intéressant d'afficher les valeurs de données, pour voir.
Mets un msgbox "#" & TitreMr & "#" & TitreMr.value & "#" avant ton docmd, pour voir si la donnée est correctement renseignée
Merci Blux !! J'ai réussi à copier !!
Je vais maintenant adapter la suite, si j'ai encore des questions, je poserai.
On va dailleurs commencer avec une question à 5 Cent : est-il possible de modifier le contenu du message qui indique qu'une ligne va être modifiée?
Encore MERCI !! :)
Je vais maintenant adapter la suite, si j'ai encore des questions, je poserai.
On va dailleurs commencer avec une question à 5 Cent : est-il possible de modifier le contenu du message qui indique qu'une ligne va être modifiée?
Encore MERCI !! :)
blux
Messages postés
25966
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 avril 2024
3 284
27 mars 2008 à 16:06
27 mars 2008 à 16:06
Copie ton code, que ça serve à tout le monde...
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
27 mars 2008 à 16:01
27 mars 2008 à 16:01
Non, il n'est pas possible de modifier le message par contre tu peux :
1) desactiver ce message
menu Outils, Options...
onglet Modifier/Rechercher
decoche Confirmer Requetes action
2) Creer ton propre message
1) desactiver ce message
menu Outils, Options...
onglet Modifier/Rechercher
decoche Confirmer Requetes action
2) Creer ton propre message
If MsgBox("Etes vous sur ?", vbYesNo) = vbNo Then Exit Sub