Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ajout dans table une selection d'aprés formulaire

4 réponses
Avatar
eric
Bonjour,
j'ai
1 table "détail lot" avec pour clef primaire 3 champs
n°marché
n°lot
ref article

1 table "base article" avec 2 champs
code_article
selection (oui/non)

un formulaire(recherche_ref) issu de"base article"
sur ce formulaire
je fais un selection sur la table "base article" en cochant selection pour
certains articles
je filtre sur les articles selectionnés

2 zone textes existent ou apparaissent
n°marché (val_marche_ajout)
n°lot( val_lot_ajout)
J'ai donc les infos nécessaires pour ajouter cette selection à ma table
"détail lot"

J'ai bien trouvé un code Vba pour ajouter les enregistrements


Private Sub miseajour_Click()
Dim MaTable As DAO.Recordset
Set MaTable = CurrentDb.OpenRecordset("détail lot")


With MaTable
.AddNew
.Fields("n°marché") = Form_recherche_ref!val_marche_ajout
.Fields("n°lot") = Form_recherche_ref!val_lot_ajout
.Fields("ref article") = Form_recherche_ref!code_article
.Update
End With

Malheuresement ce code ne copie que le premier enregistrement.
Je débute en vba et je ne sais pas comment coder
"pour tous les enregistrements dont la valeur "selection"=vrai applique la
procédure
miseajour"
Merci d'avance de m'éclairer
Cordialement

4 réponses

Avatar
Fabien
Bonjour,
j'ai
1 table "détail lot" avec pour clef primaire 3 champs
n°marché
n°lot
ref article

1 table "base article" avec 2 champs
code_article
selection (oui/non)

un formulaire(recherche_ref) issu de"base article"
sur ce formulaire
je fais un selection sur la table "base article" en cochant selection pour
certains articles
je filtre sur les articles selectionnés

2 zone textes existent ou apparaissent
n°marché (val_marche_ajout)
n°lot( val_lot_ajout)
J'ai donc les infos nécessaires pour ajouter cette selection à ma table
"détail lot"

J'ai bien trouvé un code Vba pour ajouter les enregistrements


Private Sub miseajour_Click()
Dim MaTable As DAO.Recordset
Set MaTable = CurrentDb.OpenRecordset("détail lot")


With MaTable
.AddNew
.Fields("n°marché") = Form_recherche_ref!val_marche_ajout
.Fields("n°lot") = Form_recherche_ref!val_lot_ajout
.Fields("ref article") = Form_recherche_ref!code_article
.Update
End With

Malheuresement ce code ne copie que le premier enregistrement.
Je débute en vba et je ne sais pas comment coder
"pour tous les enregistrements dont la valeur "selection"=vrai applique la
procédure
miseajour"
Merci d'avance de m'éclairer
Cordialement


Bonjour,

Tu n'est pas trés loin de la solution ;-)
Set MaTable = CurrentDb.OpenRecordset("détail lot") <- ici met la
requete sur ta table Detail Lot

Ensuite tu boucles avec
While Not Matable.eof
With Matable
.
.
.
End with
Matable.movenext
Wend
voilà
A toi de jouer !

Avatar
eric
bonjour,
Merci de ta réponse.
Une chose m'échappe qu'entends tu par "ici met la requête sur la table
"détail lot"?
Je ne lance pas de requête puisque ma selection est déjà faite via le filtre
suivant

Private Sub Filtsel_Click()

Me.FilterOn = True
Me.Filter = "[selection]=true"


End Sub

en suivant les instructions j'obtiens
Private Sub Commande100_Click()
Dim MaTable As DAO.Recordset
Set MaTable = CurrentDb.OpenRecordset("détail lot")

While Not MaTable.EOF
With MaTable
.AddNew
.Fields("num_interne_marche") = Form_recherche_ref!val_marche_ajout
.Fields("num_lot") = Form_recherche_ref!val_lot_ajout
.Fields("ref_plg") = Form_recherche_ref!CODE
.Update
End With
MaTable.MoveNext
Wend
End Sub

rien ne se passe



Bonjour,
j'ai
1 table "détail lot" avec pour clef primaire 3 champs
n°marché
n°lot
ref article

1 table "base article" avec 2 champs
code_article
selection (oui/non)

un formulaire(recherche_ref) issu de"base article"
sur ce formulaire
je fais un selection sur la table "base article" en cochant selection pour
certains articles
je filtre sur les articles selectionnés

2 zone textes existent ou apparaissent
n°marché (val_marche_ajout)
n°lot( val_lot_ajout)
J'ai donc les infos nécessaires pour ajouter cette selection à ma table
"détail lot"

J'ai bien trouvé un code Vba pour ajouter les enregistrements


Private Sub miseajour_Click()
Dim MaTable As DAO.Recordset
Set MaTable = CurrentDb.OpenRecordset("détail lot")


With MaTable
.AddNew
.Fields("n°marché") = Form_recherche_ref!val_marche_ajout
.Fields("n°lot") = Form_recherche_ref!val_lot_ajout
.Fields("ref article") = Form_recherche_ref!code_article
.Update
End With

Malheuresement ce code ne copie que le premier enregistrement.
Je débute en vba et je ne sais pas comment coder
"pour tous les enregistrements dont la valeur "selection"=vrai applique la
procédure
miseajour"
Merci d'avance de m'éclairer
Cordialement


Bonjour,

Tu n'est pas trés loin de la solution ;-)
Set MaTable = CurrentDb.OpenRecordset("détail lot") <- ici met la
requete sur ta table Detail Lot

Ensuite tu boucles avec
While Not Matable.eof
With Matable
..
..
..
End with
Matable.movenext
Wend
voilà
A toi de jouer !




Avatar
Fabien
bonjour,
Merci de ta réponse.
Une chose m'échappe qu'entends tu par "ici met la requête sur la table
"détail lot"?
Je ne lance pas de requête puisque ma selection est déjà faite via le filtre
suivant

Private Sub Filtsel_Click()

Me.FilterOn = True
Me.Filter = "[selection]=true"


End Sub

en suivant les instructions j'obtiens
Private Sub Commande100_Click()
Dim MaTable As DAO.Recordset
Set MaTable = CurrentDb.OpenRecordset("détail lot")

While Not MaTable.EOF
With MaTable
.AddNew
.Fields("num_interne_marche") = Form_recherche_ref!val_marche_ajout
.Fields("num_lot") = Form_recherche_ref!val_lot_ajout
.Fields("ref_plg") = Form_recherche_ref!CODE
.Update
End With
MaTable.MoveNext
Wend
End Sub

rien ne se passe



Bonjour,
j'ai
1 table "détail lot" avec pour clef primaire 3 champs
n°marché
n°lot
ref article

1 table "base article" avec 2 champs
code_article
selection (oui/non)

un formulaire(recherche_ref) issu de"base article"
sur ce formulaire
je fais un selection sur la table "base article" en cochant selection pour
certains articles
je filtre sur les articles selectionnés

2 zone textes existent ou apparaissent
n°marché (val_marche_ajout)
n°lot( val_lot_ajout)
J'ai donc les infos nécessaires pour ajouter cette selection à ma table
"détail lot"

J'ai bien trouvé un code Vba pour ajouter les enregistrements


Private Sub miseajour_Click()
Dim MaTable As DAO.Recordset
Set MaTable = CurrentDb.OpenRecordset("détail lot")


With MaTable
.AddNew
.Fields("n°marché") = Form_recherche_ref!val_marche_ajout
.Fields("n°lot") = Form_recherche_ref!val_lot_ajout
.Fields("ref article") = Form_recherche_ref!code_article
.Update
End With

Malheuresement ce code ne copie que le premier enregistrement.
Je débute en vba et je ne sais pas comment coder
"pour tous les enregistrements dont la valeur "selection"=vrai applique la
procédure
miseajour"
Merci d'avance de m'éclairer
Cordialement


Bonjour,

Tu n'est pas trés loin de la solution ;-)
Set MaTable = CurrentDb.OpenRecordset("détail lot") <- ici met la
requete sur ta table Detail Lot

Ensuite tu boucles avec
While Not Matable.eof
With Matable
..
..
..
End with
Matable.movenext
Wend
voilà
A toi de jouer !

Bonjour,


Oups !!!
Voilà ce que j'ai compris de ton besoin :
La procedure a pour but de parcourir un jeux d'enregistrements. Ce jeux
doit donc être filtré.
Ne connaissant pas tous les détail de ta base, je pense qu'une requete
du genre select * from [base article] where [selection]=true devrait
faire l'affaire.
En clair on va parcourir le jeux d'enreg de la table base article pour
lesquels Selection est vrai. Pour chaque enregistrements de ce jeux on
va créé un nouvel enreg dans la table detail lot.

Private Sub Commande100_Click()
Dim MaTable As DAO.Recordset
Dim TableSource,Matable as DAO.Recordset

Set MaTable = CurrentDb.OpenRecordset("détail lot")
Set TableSource = CurrentDb.OpenRecordset("Select * from [Base
articles] where [Selection]=True")

While Not TableSource.EOF

MaTable.AddNew
Matable("num_interne_marche") = Form_recherche_ref!val_marche_ajout
Matable("num_lot") = Form_recherche_ref!val_lot_ajout
MaTable("ref_plg") = TableSource("CODE")
MaTable.Update

TableSource.MoveNext
Wend
Matable.close

TableSource.close
Set Matable=Nothing
Set TableSource=Nothing
End sub

C'est mieux ?




Avatar
eric
bonjour,
Je ne peux pas exploiter directement ma table source "base article"parce que
les
champs
n°marché
n°lot
n'y figurent pas et doivent être renseignés dans la table"détail lot"
puisqu'ils font partie de la clef primaire (voir structure de mes tables en
dessous)

C'est pourquoi j'ai crée un formulaire (recherche_ref) basé sur la table
"base article) dans lequel sont insérés 2 champs indépendants qui reprennent
les infos

n°marché (val_marche_ajout)
n°lot( val_lot_ajout)

C'est à partir de ce formulaire filtré que je dois pouvoir exécuter l'ajout.


1 table "détail lot" avec pour clef primaire 3 champs
n°marché
n°lot
ref article
1 table "base article" avec 2 champs
code_article
selection (oui/non)

Merci de ton aide