Pour se connecter à une base de données Oracle depuis une feuille Excel en VBA et requêter.
Créer une source ODBC pointant vers l’instance Oracle voulue.
Dans le code VBA.
Dim instanceOracle As String Dim nbCasMax As Integer Dim nbTestsParCas As Integer ' Initialisation des variables instanceOracle = ThisWorkbook.Sheets("Param").Range("B1").Value nbCasMax = ThisWorkbook.Sheets("Param").Range("B2").Value nbTestsParCas = ThisWorkbook.Sheets("Param").Range("B3").Value ' Connexion à l'instance Oracle Set objSession = CreateObject("OracleInProcServer.XOraSession") Set objDatabase = objSession.OpenDatabase(instanceOracle, "login/password", 0) noLigne = 1 For i = 3 To nbCasMax + 3 cas = ActiveSheet.Range("A" & i).Value If cas <> "" Then requete = "select no_dossier, o.num_complet_dans_voie, c.libelle, v.libelle, substr(c.codec, 1, 2) from reflet.optimum o, reflet.commune c, reflet.voie v where " & ActiveSheet.Range("B" & i).Value & " and o.codec = c.codec and o.codec = v.codec and o.codev = v.codev and rownum <= " & nbTestsParCas ThisWorkbook.Sheets("Param").Range("D1").Value = requete Set oraDynaSet = objDatabase.DBCreateDynaset(requete, 0) If oraDynaSet.RecordCount > 0 Then oraDynaSet.MoveFirst For x = 0 To oraDynaSet.RecordCount - 1 noLigne = noLigne + 1 ThisWorkbook.Sheets("Resultats").Range("C" & noLigne).Value = oraDynaSet.Fields(0).Value ThisWorkbook.Sheets("Resultats").Range("H" & noLigne).Value = oraDynaSet.Fields(1).Value oraDynaSet.MoveNext Next End If End If Next Set objSession = Nothing Set objDatabase = Nothing