Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/10/2011, 18h50   #1
Membre confirmé
 
Inscription : janvier 2006
Messages : 578
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 578
Points : 259
Points : 259
Par défaut dupliquer enregistrement en vba

Salut à tous et toutes,

Voilà, j'ai un formulaire qui est basé sur une requête elle même composée de 2 tables.

Je voudrais un bouton qui me fasse une copie de l'enregistrement courant.

J'ai essayé avec
Code :
1
2
3
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdCopy
    DoCmd.RunCommand acCmdPasteAppend
mais j'ai un message d'erreur qui me dit
Citation:
error 2046 (la commande ou l'action coller par ajout n'est pas disponible pour l'instant)
Avez-vous déjà eu cette erreur.

Merci A+
electrosat03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 12h04   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 756
Points : 1 756
Bonjour,
si la source du formulaire est une requête basée sur plusieurs tables, il faut choisir les données à dupliquer et donc les tables sur lesquelles on doit agir.
Pour ma part, je ne comprends pas bien le but sauf si la copie doit se faire dans une 3ème table. Dans ce cas, ce sera plus compliqué.
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 17h43   #3
Membre confirmé
 
Inscription : janvier 2006
Messages : 578
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 578
Points : 259
Points : 259
Salut helas,

Merci pour ta réponse, En fait je dois encoder plusieurs fiches qui comportent les même données mais pas le même N° de série, donc j'aimerais dupliquer la fiche puis juste entrer le N° série.

Merci
A+
electrosat03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 02h06   #4
Membre confirmé
 
Homme
Développeur amateur
Inscription : mars 2009
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Développeur amateur

Informations forums :
Inscription : mars 2009
Messages : 176
Points : 255
Points : 255
Bonsoir,

J'ai fait le test. Ton code fonctionne tres bien mais à condition bien sûr que le curseur soit positionné sur l'enregitrement à dupliquer et c'est tout à fait normal.

Cordialement
reedy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 02h11   #5
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
Salut ma solution est bonne si tu a plusieurs champ à dupliquer. Donc si tu change de formulaire tu aura ton propre clipboard qui contiendra plusieurs champs différents.

Tu peut créer une table contenant une seule ligne afin de copier tes valeurs.
Ensuite avec un code sur bouton_click () tu copie tes valeurs.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub copier_Click()
dim champPlein as string
ChampPlein = nz(Dlookup("ChampPremiereValeur", "tbl_copie"), "")
if isnull(ChampPlein) or champPlein = "" then
copie :
Dim MaTable As Recordset
Set MaTable = CurrentDb.OpenRecordset("tbl_copie")
            MaTable.AddNew
                    MaTable("ChampPremiereValeur") = me.textbox1
                    MaTable("ChampDeuxiemeValeur") = me.textbox2
            MaTable.update
MaTable.Close
else 
CurrentDb.Execute "DELETE * FROM [tbl_copie];"
goto copie
end if 
end sub
ensuite lors de l'ouverture de ton autre fiche tu créer un bouton qui te permettera de re-copier les donnée précédement sauvegarder dans la table
avec un dlookup exemple:
Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub coller_Click()
Dim champvide As String
champvide = Nz(DLookup("ChampPremiereValeur", "tbl_copie"), "")
If IsNull(champvide) Or champvide = "" Then
MsgBox "Le Clipboard est vide", vbinformation, "Clipboard Vide !!!"
Exit Sub
Else
Me.champ1 = DLookup("ChampPremiereValeur", "tbl_copie")
Me.champ2 = DLookup("ChampdeuxiemeValeur", "tbl_copie")
End If
End Sub
puis quand tu ferme ta base tu peut écrire un autre code qui supprimera tes données exemple :
Code :
 CurrentDb.Execute "DELETE * FROM [tbl_copie];"
P.S. j'ai testé et ca fonctionne nickel. Je me suis amusé à le coder il va me servir à moi aussi. Des fois les problèmes des autres nous amènes de bonne idées merci
J'ai créer un tutoriel après ce post dans la section Contribuez ici
__________________
Parfois il faut faire le tour d'une roche 10 fois avant de s'apercevoir quelle est ronde.
  • Si vous trouvé mon post intéressant, n'oubliez pas de voter coté inférieur droit du message. Merci
  • Si votre Post est indiquez le....
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h27.


 
 
 
 
Partenaires

Hébergement Web