Merci a tous les collaborateurs anonyme qui laisse des sources sur internet. Grace à ceux-ci nous pouvons greffer des bouts de code pris à gauche et à droite pour finir par aboutir à un code qui satifaisant nos besoins et nos attentes !
Bon code !
emarck
'Dans un fichier excel créer une nouvelle macro et la modifier comme suit.
'Ne pas oublier d'aller dans le menu "Outils->Références" de la macro afin de sélectionner la référence suivante:
'Microsoft ActiveX Data Objects Recordset x.x Library (dans mon cas j'ai pris la version 2.8 avec excel 2003)
' Pour débuter déclarer une variable public pour la connection comme ceci :
Public cnx As ADODB.Connection
' Ensuite créer la routine suivante le nom excel_to_access se retrouvera dans la liste des vos macros dans excel.
Vous pouvez ensuite associer un bouton à cette macro afin de rendre l'opération plus transparente.
Si vous voulez que l'opération se fasse à l'ouverture de votre fichier excel, changer le nom excel_to_access pour auto_open
ou auto_close si vous désirez que le tout s'active lors de la fermeture de votre fichier.
Sub excel_to_access()
Dim chemin As String // chemin est un nom que vous devez associer à une cellule dans excel
Application.Goto Reference:="chemin"// permet de se positionner sur la cellule se nommant chemin
chemin = ActiveCell // active la cellule en question
' Nous testons si le fichier est accessible
If Len(Dir(chemin)) > 0 Then
' Déclaration de la variable de connexion
Set cnx = New ADODB.Connection
' Connexion à la base
ConnectDB cnx, chemin
Else
MsgBox "La base n'a pas pu être trouvée" & vbCrLf & _
chemin & vbCrLf & _
"n'est pas un chemin valide.", vbCritical + vbOKOnly
End If
End Sub
'Routine de connection après avoir validé l'existance de la bd
Sub ConnectDB(ByRef cnx As ADODB.Connection, ByVal chemin As String)
'Définition du recordset
Dim rec As New ADODB.Recordset
'Définition du pilote de connexion
cnx.Provider = "Microsoft.Jet.Oledb.4.0"
'Définition de la chaîne de connexion
cnx.ConnectionString = chemin
'Ouverture de la base de données
cnx.Open
//ouverture de la table T-Taux cotisation employeur
rec.Open "SELECT * FROM [T-Taux cotisation employeur]", cnx, adOpenKeyset, adLockOptimistic
//Associtation des informations contenu dans les cellules excel avec les champs de la table access
rec.Fields("Année") = Excel.Cells(2, 1).Value
rec.Fields("Ass maladie taux") = Excel.Cells(4, 2).Value
rec.Fields("Ass emploi taux base") = Excel.Cells(5, 2).Value
rec.Fields("Ass emploi taux collectif") = Excel.Cells(5, 3).Value
rec.Fields("Ass emploi taux non collectif") = Excel.Cells(5, 4).Value
rec.Fields("Ass emploi salaire max") = Excel.Cells(12, 2).Value
rec.Fields("RRQ taux") = Excel.Cells(6, 2).Value
rec.Fields("RRQ plancher") = Excel.Cells(6, 3).Value
rec.Fields("RRQ plafond") = Excel.Cells(13, 2).Value
rec.Fields("CSST taux") = Excel.Cells(10, 5).Value
rec.Fields("CSST salaire max") = Excel.Cells(14, 2).Value
rec.Fields("Fonds pension") = Excel.Cells(7, 2).Value
rec.Fields("Ass collectives") = Excel.Cells(21, 5).Value
//Mise à jour de la table access avec les nouvelles informations
rec.Update
Fermeture du recordset
rec.Close
Set rec = Nothing // déconnecter le recordset
End Sub
Le nom sub excel_to_access se retrouvera dans la liste des vos macros dans excel.
Vous pouvez ensuite associer un bouton à cette macro afin de rendre l'opération plus transparente.
Si vous voulez que l'opération se fasse à l'ouverture de votre fichier excel, changer le sub nom excel_to_access pour sub auto_open
ou sub auto_close si vous désirez que le tout s'active lors de la fermeture de votre fichier.
Bon code !
emarck