Comment Excel importe des données d'une base de données ?
Bonjour à tous,
J'ai l'impression de ne pas être très loin de la réussite et j'ai besoin d'un coup de pouce de l'un de vous svp.
J'ai un tableau Excel composé de 4 colonnes, les 3 premières sont remplies et la dernière est vide. En fait, cette dernière colonne peut être remplie grâce à une connexion aux tables de ma base de données.
J'ai trouvé le moyen de dire à Excel "lis ce qu'il y a dans la colonne A, la colonne B et la colonne C pour l'insérer dans la query". Je pense qu'il ne me reste plus que l'étape "compare ces 3 informations avec la base de données et copie le résultat de la query dans la colonne D" ... c'est là que j'ai besoin de vous.
Mon tableau ressemble à ça :
A --------B ----- C ------- D
Aliquot1 Test1 Resultat1
Aliquot2 Test2 Resultat2
Aliquot3 Test3 Resultat3
Et voici le code que j'ai déjà écrit :
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| Sub Find_testID()
Dim rnCell As Range
Dim rnArea As Range
Dim rsResult As Recordset
Dim strCon As String
Dim objCon As New Connection
Dim sSQL As String
Dim strAliq As String
Dim strTest As String
Dim strResult As String
Dim strTestID As String
Dim intRow As Integer
strCon = "Provider=MSDAORA;Data Source=xxxx;User ID=xxxx;Password=xxxx"
objCon.Open strCon
Set rnArea = Worksheets(3).Range("info")
For Each rnCell In rnArea
strAliq = Cells(rnCell.Row, 1).Value
strTest = Cells(rnCell.Row, 2).Value
strResult = Cells(rnCell.Row, 3).Value
If intRow <> rnCell.Row Then
intRow = rnCell.Row
sSQL = "SELECT aliquot.name,"
sSQL = sSQL + " test.name,"
sSQL = sSQL + " result.result,"
sSQL = sSQL + " test.test_id"
sSQL = sSQL + " FROM aliquot,"
sSQL = sSQL + " test,"
sSQL = sSQL + " result"
sSQL = sSQL + " WHERE aliquot.aliquot_id = test.aliquot_id"
sSQL = sSQL + " AND test.test_id = result.test_id"
sSQL = sSQL + " AND aliquot.name = '" & strAliq & "'"
sSQL = sSQL + " AND test.name = '" & strTest & "'"
sSQL = sSQL + " AND result.result = '" & strResult & "'"
Set rsResult = objCon.Execute(sSQL)
rsResult.Close
rsResult.CursorType = adOpenStatic
rsResult.Open
rsResult.MoveFirst
Else: rsResult.MoveFirst
End If
strTestID = Cells(rnCell.Row, 4).Value
Next
objCon.Close
End Sub |
Si je remplace dans la query la valeur de la première ligne, j'obtiens ça:
Aliquot - Test -- Resultat --- TestID
Aliquot1 Test1 Resultat1 123547
Je serai donc ravi de voir apparaître dans la colonne D le 123547 :D
Vu qu'il y a plus de 4000 lignes, j'aimerai faire tourner une macro qui se connecte directement à la base de données pour copier le TestID dans la colonne D. Mais quand je fais ça, il ne se passe rien.
Comment puis-je dire dans la macro "mets-moi le TestID dans la colonne D puis passe à la ligne suivante".
Je vous remercie pour vos conseils.
- Henri