Mise à jour de la base de donnée MS Access via VBA code
Bonjour tout le monde,
Je suis nouveaux sur MS Access et j'ai bien évidement quelque questions. Tout les mois je dois mettre a jour la base de donnée a partir de plusieurs excel template (qui sont exactement pareil).
Le process que je fais actuellement:
1- Je consolide tout les template dans un seul fichier excel. CE fichier excel a exactement les meme header que dans les tables de ma db Access.
La premiere ligne sont les header et ensuite chaque ligne correspond a un clients.
Heureusement la consolidation se fait par code VBA :)
2- Une fois la consolidation faite, je met a jours la base de donnée via un code VBA. MAIS je dois le faire marcher pour chaque tables car je n'arrive pas a mettre a jour toutes les table correspondante au client. Le code que j'ai a present permets exclusivement de mettre a jour une seule table.
Dans ma base de donnée j'ai 2 tables: "CompanyInformation" et "FY_All" qui sont relié par la "ID"
Ma question est comment faire pour que se code VBA update en une seule fois les 2 tables en VBA?
Voici le code qui est utilisé:
Code:
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 35 36 37 38
| Public Sub SupplierPort()
Dim cn As ADODB.Connection, rs As ADODB.Recordset
Dim sDUNS As String, sName As String, cScore As Variant
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & _
"Data Source=C:\Users\Gord\Desktop\Database1.accdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "CompanyInformation", cn, adOpenKeyset, adLockOptimistic, adCmdTable
Range("A2").Activate ' row 1 contains column headings
Do While Not IsEmpty(ActiveCell)
sDUNS = ActiveCell.Value
sName = ActiveCell.Offset(0, 1).Value
cScore = ActiveCell.Offset(0, 2).Value
rs.Filter = "DUNS='" & sDUNS & "' AND Name='" & sName & "'"
If rs.EOF Then
Debug.Print "No existing record - adding new..."
rs.Filter = ""
rs.AddNew
rs("DUNS").Value = sDUNS
rs("Name").Value = sName
Else
Debug.Print "Existing record found..."
End If
rs("Score").Value = cScore
rs.Update
Debug.Print "...record update complete."
ActiveCell.Offset(1, 0).Activate ' next cell down
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub |
Si je ne suis pas claire dans mes propos dite le mois je répondrais pour vous donner des precisions.
Merci d'avance