Dim db1 As Database Dim Rs1 As RecordsetEn effet, DAO est obsolète et notamment sa méthode .Find ne fonctionne pas si tu fais une recherche de plusieurs champs.
Dim db1 As ADODB.Connection Dim Rs1 As ADODB.RecordsetTa méthode de connexion sera surement à revoir aussi.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionFunction ExportBase() Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long chemin = ActiveWorkbook.Path Source = chemin & "\Pilotage_DR.mdb" Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= " & Source & ";" Set rs = New ADODB.Recordset rs.Open "[Ref_GPAE]", cn, adOpenKeyset, adLockOptimistic, adCmdTable '** Tous les enregistrements de la table. '** Détermination de la taille de la plage à envoyer vers Access Set Plage = Worksheets("SDataBase").Range("A1").CurrentRegion.Offset(1, 0) Set Plage = Plage.Resize(Plage.Rows.Count - 1, Plage.Columns.Count) Plage.Select '** Lecture de la plage pour renvoyer une valeur contenant un tableau Array1 = Plage.Value For x = 1 To UBound(Array1, 1) With rs '.Find "[Code_Site] = """ & Array1(x, 1) & """ And [Code_Dispositif] = """ & Array1(x, 2) & """", , adSearchForward '.Find "[Code_Site] = """ & Array1(x, 1) & """", , adSearchForward .Filter "[Code_Site] """ & Array1(x, 1) & """ And [Code_Dispositif]= """ & Array1(x, 2) & """" If .EOF Then .AddNew .Fields("Code_Site") = Array1(x, 1) .Fields("Code_Dispositif") = Array1(x, 2) End If .Fields("Libelle_Dispositif") = Array1(x, 3) .Fields("Code_Regroupement") = Array1(x, 4) .Fields("Id_Onglet_Excel") = Array1(x, 5) .Fields("Ratio_GPAE_An") = Array1(x, 6) .Fields("Unite_Oeuvre") = Array1(x, 7) .Fields("Ratio_GPAE_Jour") = Array1(x, 8) .Fields("Duree_UO_Mn") = Array1(x, 9) .Update End With Next '** Effacement des données copiées vers la base (sauf les titres) With Selection.CurrentRegion Intersect(.Cells, .Offset(1)).Select End With Selection.ClearContents rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End function
If .EOF Then .AddNew .Fields("Code_Site") = Array1(x, 1) .Fields("Code_Dispositif") = Array1(x, 2) End If