Bonjour,
tout d'abord merci par avance aux propositions que vous pourrez faire à ce sujet.
Je suis complètement bloqué du à l'erreur Excel suivante :
[Microsoft][Pilote ODBC Excel] La connexion permettant de visualiser votre feuille de calcul Microsoft Excel liée est perdue
pour ce faire j'ai une feuille Excel nommée DATAPLUS
au lancement du traitement VBA, j'ai une connexion ADODB comme montré ci-dessous
La connexion semble fonctionné parfaitement. ?g_o_cnx --> result : Provider=MSDASQL.1;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Set g_o_cnx = New ADODB.Connection 'on crée une connection ADODB sur ce document Excel With g_o_cnx .Provider = "MSDASQL" .ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _ "DBQ=" & ThisWorkbook.FullName & ";ReadOnly=False;HDR=NO;IMEX=1;" .Open End With
Puis je défini un premier recordset qui m'avait déjà posé bien du soucis :
Cette "Requete" semble bien fonctionnée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Set l_o_rsDATA = New ADODB.Recordset l_o_SQLrsDATA = "SELECT DATAP.IDENT, DATAP.LADATE, DATAP.LIBELLE, DATAP.QUANTITE, DATAP.REF From [DATAPLUS$] as DATAP" l_o_rsDATA .ActiveConnection = g_o_cnx l_o_rsDATA .CursorLocation = adUseClient l_o_rsDATA .Open l_o_SQLrsDATA , g_o_cnx, adOpenDynamic, adLockOptimistic l_o_rsDATA .Sort = "LADATEASC"
Puis j'appelle ma fonction DonneesDetail avec en param mon recordset
Dans cette procédure, j'effectue un filtre sur ce recordset puis créé un NOUVEAU recordset comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 For l_i_num = 1 To l_i_nbTotalNum DonneesDetail l_i_num , l_o_rsDATA .... Next l_i_num
Lorsque j'essaie d’exécuter cette ligne j'obtiens l'erreur citée plus haut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 p_o_rsDATA.Filter = "IDENT= " & NzLng(l_s_num) 'filtre le recorset en param sur l'identifiant en cours If Not p_o_rsDATA.EOF Then p_o_rsDATA.MoveFirst While Not (p_o_rsDATA.EOF) ..... ..... Set l_o_rsref = New ADODB.Recordset 'on définit notre nouveau recordset 'ci dessous la requete qui ne fonctionne pas Set l_o_rsref = g_o_cnx.Execute("SELECT count(*) as nb From [DATAPLUS$] as DATAP WHERE DATAP.IDENT = " & MaVal & " AND MONTH(DATAP.LADATE)= 3 AND YEAR(DATAP.LADATE)= 2017 GROUP BY DATAP.REF")
A savoir que cette requête fonctionne uniquement sans clause where ni group by.
Merci par avance à tous ceux qui tenteront de m'aider.
Cordialement,
Dorian
Partager