Gagou_c
Messages postés65Date d'inscriptionmercredi 18 août 2004StatutMembreDernière intervention31 janvier 2006
-
30 janv. 2006 à 11:18
chouchouk8917
Messages postés1Date d'inscriptionsamedi 12 février 2011StatutMembreDernière intervention 8 mai 2012
-
8 mai 2012 à 20:35
Bonjour,
Je dois faire une macro avec excel qui consiste à parcourir une colonne, et pour chaque ligne trouver la référence correspondante dans une table de ma base ORACLE.
J'ouvre ma connexion, et lorsque j'exécute ma requete, il met l'erreur 424 "Objet Requis" sur une ligne de mon code ( rouge ci dessous ).
Je pense que le souci vient de la connexion passée en paramètre.
Pouvez vous m'aider ?
Merci
Voici mon code :
Sub Macro3()
' Connexion à la base
Dim connString As String
connString = "Provider=MSDAORA.1;Server=XXXX;Data Source=XXXXX;USER ID=XXXX;PASSWORD=XXXX"
'Création de l'objet connection
Set oConn = New ADODB.Connection
oConn.ConnectionString = connString
'Ouverture de la connexion
oConn.Open
'MsgBox "Connexion réussie"
For i = 1 To 2000
Cells(i, 1).Select
If Not IsNull(Cells(i, 1).Value) Then
Set rst = New ADODB.Recordset
Sql = "Select AVC from L3CGROUP.ITMFACILIT where ITMREF='" & Cells(i, 1).Value & "';"
rst.Open Sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'Création de l'objet connection
Set oConn = New ADODB.Connection
oConn.ConnectionString = connString
'Ouverture de la connexion
oConn.Open
'MsgBox "Connexion réussie"
For i = 1 To 2000
Cells(i, 1).Select
If (Cells(i, 1).Value <> "") Then
Set cmdCommand = New ADODB.Command
Set cmdCommand.ActiveConnection = oConn
With cmdCommand
.CommandText = "Select AVC_0 from L3CGROUP.ITMMVT where ITMREF_0='" & Cells(i, 1).Value & "'"
.CommandType = adCmdText
'.Execute
End With
Set rst = New ADODB.Recordset
Set rst.ActiveConnection = oConn
'Sql = "Select AVC from L3CGROUP.ITMFACILIT where ITMREF='" & Cells(i, 1).Value & "';"
rst.Open cmdCommand
If rst.EOF = False Then
Cells(i, 4).Value = rst.Fields(0)
End If
Else
Cells(i, 4).Value = ""
End If
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 janv. 2006 à 18:33
Salut
- Ta syntaxe RST.Open est bizarre (mais j'y connais pas grand chose en Excel).
- Tu n'arrêtes pas de rédimensionner ton RST ! Il faut utiliser Close de temps en temps !
For i = 1 To 2000
Cells(i, 1).Select
If Not IsNull(Cells(i, 1).Value) Then
<STRIKE>Set rst = New ADODB.Recordset
</STRIKE> Sql = "Select AVC from L3CGROUP.ITMFACILIT where ITMREF='" & Cells(i, 1).Value & "';"
rst.Open Sql, oConn , adOpenKeyset, adLockOptimistic
If rst.RecordCount > 0 Then
Cells(i, 2).Value = rst!AVC
Else
Cells(i, 2).Value = "Rien"
End If
rst.Close
Else
Cells(i, 2).Value = "Rien"
End If
Next i
Set rst = Nothing
Il est bizarre aussi que ton nom de table comporte un point ...
Rappel : Si ITMREF est déclaré comme numérique dans ta DB, il ne faut pas utiliser de ' pour encadrer les valeurs dans la syntaxe SQL !
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Ronaldort
Messages postés2Date d'inscriptionmardi 7 août 2007StatutMembreDernière intervention 8 août 2007 7 août 2007 à 13:45
moi j'ai la meme message 'erreur 424 ':un objet est requis
ce message apparait quand je veux aller d'une application Form1 à une autre Form2 en écrivant Form2.Show
pourquoi?
chouchouk8917
Messages postés1Date d'inscriptionsamedi 12 février 2011StatutMembreDernière intervention 8 mai 2012 8 mai 2012 à 20:35
bonjour ,
en fait un plutot une erreur 1004 erreur définie par l'application ou l'objet , ce que j'essaye de faire c'est de prendre un nom à partir d'une combobox et essayer de chercher son équivalent dans les feuilles excel, et puis quand il va trouver la feuille correspondante , le doit chercher dedans un nom contenu dans un autre combobox voici mon code. ( je suis vraiment nulle en VBA c'est la première fois que je l'utilise sans avoir des notions Programmation orientée objet ). je vous serai vraiment reconnaissante si vous m'aidiez!
Private Sub CommandButton6_Click()
'chercher dans les feuilles le secteur correspondant à l'entreprise selectionnée
Dim N As Integer
N = 3
Do While N < 13 And ComboBox1.Text <> Worksheets(N).Name
N = N + 1
Loop
'chercher la zone dédiée à l'entreprise
Dim I As Integer
Dim J As Integer
Do While I < 90
Do While J < 9000 And ComboBox2.Text <> Worksheets(N).Cells(I, J).Name
merci d'avance