Importer des données d'une base de données Oracles dans un fichier Excel via une macro
Bonjour à tous,
Vous l'aurez deviné, je suis bloqué et j'ai besoin de vous pour me dépatouiller...
Alors voilà, je voudrais exporter des données qui sont dans une base de données Oracle pour les importer dans ma feuille Excel en fonction des informations qui se trouvent dans les cellules de ma feuille. Au stade actuel, les 3 premières colonnes sont remplies de ces infos, et grâce au données venant de la base de données je voudrais remplir la 4ème colonne.
Voilà ce que j'ai fait pour le moment sous VBA :
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 55 56 57 58 59
| 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=xxxxx;User ID=xxxxx;Password=xxxxx"
objCon.Open strCon
Set rnArea = Worksheets(1).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
strTestID = Cells(rnCell.Row, 4).Value
If intRow <> rnCell.Row Then
intRow = rnCell.Row
sSQL = "SELECT aliquot.name ALIQUOT, test.name TEST, result.formatted_result RESULT, test.test_id ID"
sSQL = sSQL + " FROM AA,"
sSQL = sSQL + " BB,"
sSQL = sSQL + " aliquot,"
sSQL = sSQL + " test,"
sSQL = sSQL + " result"
sSQL = sSQL + " WHERE AA.AA_id = BB.AA_id"
sSQL = sSQL + " AND BB.BB_id = aliquot.BB_id"
sSQL = sSQL + " AND aliquot.aliquot_id = test.aliquot_id"
sSQL = sSQL + " AND test.test_id = result.test_id"
sSQL = sSQL + ""
sSQL = sSQL + " AND aliquot.name = '" & strAliq & "' "
sSQL = sSQL + " AND test.name = '" & strTest & "' "
sSQL = sSQL + " AND formatted_result = '" & strResult & "' "
Set rsResult = objCon.Execute(sSQL)
rsResult.Close
rsResult.CursorType = adOpenStatic
rsResult.Open
rsResult.MoveFirst
Else: rsResult.MoveFirst
End If
Next
objCon.Close
End Sub |
La query SQL est ok parce si je l'a fait tournée en entrant une vraie valeur (plutôt que " & strAliq & " etc.) et il n'y a aucun souci, je trouve ce que je cherche à mettre dans la 4ème colonne.
Mais comme il y a pour le moment 4392 lignes, j'attends un soutien d'Excel pour le faire pour moi.
Si je poste ici c'est parce que la macro échoue et me renvoie : "Run-time error '3021': Either BOF or EOF is true, or the current record has been deleted. Requested operation requires a current record."
En débug la flèche jaune m'inque la ligne 51 que j'ai mise en gras ici.
Quelqu'un peut m'aider à décortiquer ce qui se passe mal svp ?
Ce que je souhaite, c'est que la macro lise les données reprises dans les 3 colonnes, remplacent ces données dans la query pour finalement mettre dans la 4ème colonne l'ID qui leur correspond et ainsi de suite pour chaque ligne.
Je vous remercie, j'espère que ce n'est trop obscur comme explication.