Code VBA qui fonctionne bien pour un UPDATE mais pasplusieur
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je viens vers vous car je n'arrive pas a résoudre mon problème, enfaite pour faire simple j'ai un formulaire ou je coche les commandes que je souhaite exporter vers un autre formulaire mais avant de les exporter une requête UPDATE a lieu sur ces enregistrements précédemment coché afin d'aller chercher la valeur du champ Laquage, Ref et NumFiliere par rapport à la référence....
Le code fonctionne lorsque je coche un enregistrement et que j'exporte mais ce code ne fonctionne plus quand je coche plusieurs enregistrement car le champ Laq,Ref et NumFiliere sont tous identique car j'ai l'impression que la requête fait le même UPDATE sur tous les enregistrements coché alors que les valeurs sont à chaque fois différente.
Private Sub Exporter_Click()
Dim base As Database
Dim SQL As String
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim strSql As String
Dim Valeur As String
Dim test
Dim extraitD As Variant
Dim extraitG As Variant
Set base = Application.CurrentDb
LongueurCh = Right([NumArticle], 4)
Set dbs = CurrentDb
strSql = "SELECT * FROM Commande " _
& " WHERE Selection = True "
Set rst = dbs.OpenRecordset(strSql, dbOpenDynaset)
extraitD = Right(rst.Fields("NumArticle"), 6)
extraitG = Left(rst.Fields("NumArticle"), InStr(rst.Fields("NumArticle"), extraitD) - 1)
RefLaq = Left([extraitD], 2)
'MsgBox (Laquage)
CurrentDb.Execute "UPDATE Commande " & _
"SET Commande.Laquage = '" & RefLaq & "' Where Selection=True ;"
test = DLookup("[PoidsTH]", "base", "[Référence] = '" & extraitG & "' ")
CurrentDb.Execute "UPDATE Commande " & _
"SET Commande.PoidsTH = '" & test & "' Where Selection=True ;"
' MsgBox (test)
CurrentDb.Execute "UPDATE Commande " & _
"SET Commande.Ref = '" & extraitG & "' Where Selection=True ;"
CurrentDb.Execute "UPDATE Commande " & _
"SET Commande.Longueur = " & LongueurCh & " Where Selection=True ;"
Filière = DLookup("[Filiere]", "Feuil2", "[Référence] = '" & extraitG & "' ")
CurrentDb.Execute "UPDATE Commande " & _
"SET Commande.NumFiliere= '" & Filière & "' Where Selection=True ;"
' CurrentDb.Execute SQL
DoCmd.RunSQL " INSERT INTO EnAttPlanification(NumOrigine,Numero,NumArticle,CodeVariante,DateCommande,DateLivDemander,QteManquante,QteRestante,QtePretDepart,PoidsManquant,Observations,NomDestinataire,NumDestination,Qte,Longueur,Ref,PoidsTH,Laquage,NumFiliere) " & _
"SELECT Commande.NumOrigine, Commande.Numero, Commande.NumArticle, Commande.CodeVariante, Commande.DateCommande, Commande.DateLivDemander, Commande.QteManquante, Commande.QteRestante, Commande.QtePretDepart, Commande.PoidsManquant, Commande.Observations, Commande.NomDestinataire, Commande.NumDestination, Commande.Qte, Commande.Longueur, Commande.Ref, Commande.PoidsTH, Commande.Laquage, Commande.NumFiliere " & _
"FROM Commande " & _
"WHERE Selection=-1;"
DoCmd.RunSQL " DELETE FROM Commande " & _
" WHERE Selection=-1;"
base.Close
Me.Requery
Me.Refresh
End Sub
Comme vous pouvez le voir sur la capture les enregistrements ont tous la même valeur alors que ce n'est pas censé être le cas.
J'espère que je me suis bien exprimer, merci par avance.
Windows / Chrome 107.0.0.0
- Code VBA qui fonctionne bien pour un UPDATE mais pasplusieur
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Windows update bloqué - Guide
- Code activation windows 10 - Guide
1 réponse
bonjour,
peux-tu choisir le langage, "basic", quand tu partages du VBA?
Dans le code, tu fais en effet une requête UPDATE qui affecte tous les enregistrements.
La première chose à modifier dans ton code, c'est de faire une boucle afin de parcourir tous les enregistrements de ton recordset, et les traiter un par un.
La seconde chose à modifier, ce sera d'utiliser .edit et .update, au lieu de tous ces CurrentDb.Execute.
Plus ou moins ceci: