Macro transfer donnée dans MS Access

Soleil11

XLDnaute Occasionnel
Bonjour,

Je transfère des données chaque mois dans une table MS Access et j'utilise le script ci-dessous. J'aimerais de l'aide pour modifier le script ci-dessous afin de pouvoir filtrer les données par Année = 2015 et Mois = 8 avant le transfer des données dans MS Access dans la table "T_Data".

Est-il possible d'ajouter ce filtre avant l'envoi des données dans MS Access. J'ai ajouté un fichier test pour faciliter mes explications.

Code:
Sub Transferdonnées()

' exports data from the active worksheet to a table in an Access database
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long, deletevalue As String
Dim strSQL As String
Dim cmd As ADODB.Command

Sheets("Données").Select

    ' connect to the Access database
    Set cn = New ADODB.Connection
    
    
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Data\Données.accdb;Persist Security Info=False"
 
   
    ' open a recordset
    Set rs = New ADODB.Recordset
    rs.Open "T_Data", cn, adOpenKeyset, adLockOptimistic, adCmdTable
    ' all records in a table
    r = 2 ' the start row in the worksheet
    Do While Len(Range("A" & r).Formula) > 0
    ' repeat until first empty cell in column A
        With rs
            .AddNew ' create a new record
            ' add values to each field in the record
            
            .Fields("Année") = Range("A" & r).Value
            .Fields("Mois") = Range("B" & r).Value
            .Fields("Nom") = Range("C" & r).Value
            .Fields("Prénom") = Range("D" & r).Value
          
           ' add more fields if necessary...
            .Update ' stores the new record
        End With
        r = r + 1 ' next row
    Loop
    
    rs.Close
    
    Set rs = Nothing
   
    cn.Close
    Set cn = Nothing

End Sub

Merci de votre aide.

Soleil11
 

Pièces jointes

  • fichier transfer donnée test.xlsm
    17.5 KB · Affichages: 14

Jam

XLDnaute Accro
Re : Macro transfer donnée dans MS Access

Salut Soleil11

La solution est assez simple, il te suffit de tester la valeur des champs Année et Mois AVANT de faire l'ajout ;)

Un simple
Code:
if Range("A" & r).Value <> 2015 and Range("B" & r).Value <>8 Then
    with rs
    ...
    end with
end if


Bon courage
 

Discussions similaires

Réponses
10
Affichages
315

Statistiques des forums

Discussions
311 725
Messages
2 081 942
Membres
101 849
dernier inscrit
florentMIG