Lecture d'une valeur dans une base de donnée Access
Bonjour,
J'essaie de lire une valeur précise dans une base de donnée Access. Je change le champ recherché (Field), ça fonctionne. Le seul problème, c'est que ma fonction retourne toujours la valeur de la première ligne de ma base de donnée. C'est quand je change la valeur de Value qu'il y a aucun changement. J'ai mis la ligne que je crois qui occasionne problème en rouge.
Merci d'avance de m'aider.
Function ReadDatabase(DatabaseFilePath As String, Table As String, Column As String, Value As String, Field As String) As Variant
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
'¤ Arguments de la fonction ¤
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
'DatabaseFilePath Chemin de la base de donnée
'Table Nom de la table
'Column Nom du champ de référence
'Value Valeur de référence
'Field Nom du champ recherché
'ReadDatabase("C:\Entreprise\DB.accdb";"Factures";"N° de Facture";"1";"TPS à payer")
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
'¤ Références nécessaire ¤
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
'Microsoft Visual Basic pour Application
' --> Outils
' ---> Références…
' Microsoft ActiveX Data Objects 6.1 Library
' Microsoft ADO Ext. 6.0 for DLL and Security
Dim AccessDatabase As String
Dim Command As New ADODB.Command
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Dim SQL As String
AccessDatabase = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & DatabaseFilePath & ";"
Set Connection = New ADODB.Connection
Connection.Open AccessDatabase
Set Recordset = New ADODB.Recordset
Recordset.Open Table, Connection, adOpenKeyset, adLockOptimistic, adCmdTable
SQL = "SELECT * FROM Table WHERE Column = 'Value'"
ReadDatabase = Recordset.Fields(Field)
Recordset.Close
Set Recordset = Nothing
Connection.Close
Set Connection = Nothing
End Function
Martin
Bonjour Martin,
Tout est expliqué dans les arguments de la fonction, pourquoi as-tu modifier le code
A+
Bonjour,
Je suis nouveau sur ce forum et dans VBA.
(Je compte sur votre aide pour me remettre sur le droit chemin si je commets quelques erreurs de jeunesse
Je cherche à appeler (depuis un fichier excel 2016) des données qui se trouvent dans une base de données Acces 2016
(Voir fichiers joints). En résumé, le fichier excel se présente de la manière suivante en col A le "nomduproduit" et en col B la "couleurduproduit" à faire afficher en cherchant la valeur dans une base Access.
Cette base est faite de 800 articles (en lignes) avec une 100ène de caractéristiques (en colonne) dont la couleur à trouver pour l'article correspondant.
J'ai repris l'exemple ci-dessous qui avait été laissé dans le post, mais celui-ci n'affiche effectivement que la valeur du premier enregistrement (peu importe le produit en référence).
Au préalable j'avais des erreurs concernant les Références-VBAProject (Dans VBA Menu outils/Références..)
Cf copie écran des références actuelles sélectionnées.
Au vu de la dernière remarque de BrunoM45, il semble que ce code est été modifié.
Serait-il possible d'avoir de l'aide d'une personne pour la correction de ce code ?
Merci d'avance
Salutations
Function ReadDatabase(DatabaseFilePath As String, Table As String, Column As String, Value As String, Field As String) As Variant
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
'¤ Arguments de la fonction ¤
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
'DatabaseFilePath Chemin de la base de donnée
'Table Nom de la table
'Column Nom du champ de référence
'Value Valeur de référence
'Field Nom du champ recherché
'ReadDatabase("C:\Entreprise\DB.accdb";"Factures";"N° de Facture";"1";"TPS à payer")
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
'¤ Références nécessaire ¤
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
'Microsoft Visual Basic pour Application
' --> Outils
' ---> Références…
' Microsoft ActiveX Data Objects 6.1 Library
' Microsoft ADO Ext. 6.0 for DLL and Security
Dim AccessDatabase As String
Dim Command As New ADODB.Command
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Dim SQL As String
AccessDatabase = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & DatabaseFilePath & ";"
Set Connection = New ADODB.Connection
Connection.Open AccessDatabase
Set Recordset = New ADODB.Recordset
Recordset.Open Table, Connection, adOpenKeyset, adLockOptimistic, adCmdTable
SQL = "SELECT * FROM Table WHERE Column = 'Value'"
ReadDatabase = Recordset.Fields(Field)
Recordset.Close
Set Recordset = Nothing
Connection.Close
Set Connection = Nothing
End Function
Bonjour,
Tu as intérêt à ouvrir un nouveau sujet ... car se greffer sur un sujet clos il y a trois ans ... ne va pas t'aider ...
Ok Merci du conseil, je ne voulais pas faire de doublons.
A+