Bonjour
J'ai crée dans une feuille Excel, grâce au visual basic editor, des routines qui vont lire des données dans une feuille Excel fermée pour les mettre dans une base Access.
Cette application marchait parfaitement depuis plus d'un an MAIS depuis 15 jours, sans que je n'ai rien modifié ni dans la feuille contenant les macros, ni dans l'organisation des feuilles où sont récupérées les données, j'ai une erreur '91' "Variable objet ou variable de bloc with non définie" ?!!!!!
L'erreur se produit dans une macro précise (trouvée à l'époque sur l'excellent site de Fréderic Sigonneau) qui lit la valeur d'une cellule ou d'un groupe de cellule dans une feuille Excel via une connexion ADO
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 Function GetValueWithADO(Classeur As String, Feuille As String, cell As Range) 'renvoie la valeur de la cellule Cell de la feuille Feuille 'du classeur fermé Classeur 'Note : cette fonction est utilisable dans une feuille de calcul 'Ex : =GetValueWithADO("D:\TestADO.xls";"feuil1";A1) Dim RcdSet As Object Dim strConn As String Dim strCmd As String Dim dummyBase As Range 'prépare une "base de données" bidon pour la clause SELECT '(une entête fictive et une ligne de données) Set dummyBase = cell.Resize(2) 'prépare les commandes ADO et SQL strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Classeur & ";" & _ "Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"";" '******************************************* 'msgbox -> strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\server\monchemin\resultats060220.xls;Extended Properties="Excel 8.0;HDR=No;IMEX=1;"; '******************************************* strCmd = "SELECT * FROM [" & Feuille & "$" & dummyBase.Address(0, 0) & "]" '******************************************* 'msgbox -> strCmd = SELECT * FROM [feuil1$A1:A2] '******************************************* 'crée l'objet Recordset Set RcdSet = CreateObject("ADODB.Recordset") 'va chercher l'info '******************************************* ' ERREUR SUR CETTE LIGNE: RcdSet.Open strCmd, strConn, 0, 1, 1 'adOpenForwardOnly, adLockReadOnly, adCmdText '******************************************* 'et la renvoie GetValueWithADO = Application.Clean(RcdSet(0)) 'autre syntaxe possible 'GetValueWithADO =Application.Clean(RcdSet.GetString(NumRows:=1)) 'nettoyage Set RcdSet = Nothing End Function 'fs
Je n'arrive pas à comprendre ce qui a pu changer puisque je n'ai modifié et que ce code fonctionnait !!!
Merci par avance pour toute info, idée...
cdk
Edit
Bienvenue sur le forum
Lis les règles du forum, elles pourront t'aider à trouver ce que tu cherches.
Afin que ton code soit lisible, encadre-le des balises Code et /code. Tu sélectionnes ton code puis un clic sur le bouton Code en haut de la fenêtre d'édition.
Pour corriger, le bouton "Editer" est là pour ça.
Conseils gracieusement offert par ouskel'n'or
Remarque : Dans le code, la mise en caractères gras est inopérante
Partager