Bonjour,
il existe déjà une autre discussion sur ce message d'erreur mais je pense avoir déjà appliqué la solution proposée :
La solution consiste à ouvrir et fermer la base de données qu'une fois.La ligne 16 (While Not adoRS2.EOF) déclenche l'erreur "Cette opération n'est pas autorisée si l'objet est ouvert". Si on ne peut pas le faire sur un objet ouvert quand peut-on le faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Dim oCnMySQL As ADODB.Connection, adoRS As ADODB.Recordset, adoRS2 As ADODB.Recordset Set oCnMySQL = New ADODB.Connection oCnMySQL.connectionString = ADO_CONNEXION_STRING oCnMySQL.Open Set adoRS = New ADODB.Recordset Set adoRS2 = New ADODB.Recordset strRequete = "select CTL_LIBELLE_SQL etc." adoRS.Open strRequete, oCnMySQL, adOpenStatic, adLockOptimistic, adCmdText While Not (adoRS.EOF) ... strRequeteRecup = adoRS("CTL_LIBELLE_SQL") adoRS.MoveNext adoRS2.Open strRequeteRecup, oCnMySQL, adOpenStatic, adLockOptimistic, adCmdText If intIdRestitution = ID_CSV Then Open "C:\temp\" & Format(Now, "yyyy-m-d_hh-nn") & "_" & Replace(strNomCtrl, " ", "_") & ".csv" For Output As intNumLigne While Not adoRS2.EOF ... adoRS2.MoveNext Wend End If ... Wend adoRS.Close adoRS2.Close Set adoRS = Nothing Set adoRS2 = Nothing
Pour voir, j'ai ajouté "adoRS2.Close" juste avant et bien sûr j’obtiens : "Cette opération n'est pas autorisée si l'objet est fermé".
Partager