XL 2013 VBA - ADO - requête fait ouvrir le fichier source 2

JLE

XLDnaute Junior
Bonjour à tous,

Je reviens vers vous à ce sujet (https://www.excel-downloads.com/thr...quete-fait-ouvrir-le-fichier-source.20048994/) où la solution de mettre un Mode=Read dans la requête ADO avait pour moi résolu mon problème d'ouverture intempestive du fichier source, mais j'ai appris dernièrement, que cette modification n'a rien changé car le fichier s'ouvre toujours.

Alors j'ai refait des tests et recherches, il semble que ce soit un problème de version des fichiers utilisés dans ma requête :

Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Mode=Read" & ";Extended Properties=""Excel 12.0;HDR=YES;"""

C'est vrai que j'essaie de lire un fichier fermé sur le réseau qui est un XLS à partir d'un fichier qui est en XLSX, ce qui poserai problème dans ma requête d'après cette discussion https://www.excel-downloads.com/threads/connexion-adodb-ouverte-fichier-non-voulue.20033678/ notamment à "Excel 12.0" qui devrait être remplacé par 8.0 si j'ai bien compris car le fichier source est en XLS (8.0) et non pas en XLSX (12.0)

Malheureusement, si je modifie en 8.0 afin de lire mon fichier en XLS, cce fichier source continue de s'ouvrir...

Des idées ?
JLE

PS : Je ne savais s'il fallait que je continue le thread ou s'il fallait que j'en recréé un ... désolé si c'est une bourde.
 

JLE

XLDnaute Junior
Bonjour,

Oui le voilà, c'est celui qui est le plus souvent utilisé (j'ai d'autres variantes mais il est à la base des autres) :

Dim Source As Object, Requete As Object
Dim onglet As String, Plage As String, Fichier As String
Dim texte_SQL As String

'détermination de la plage à extraire
Fichier = "L:\Ch\CP.xls"
On Error GoTo GESTIONERREUR
onglet = "CodeRép"
Plage = "A1:H10"

Select Case verifCAcreateBT
Case Is = ""
plagerecherché = "Username"
valrecherche = "'%" & Environ("UserName") & "%'"
Case Is <> ""
plagerecherché = "CA"
valrecherche = "'%" & verifCAcreateBT & "%'"
End Select

'connexion ADO
Set Source = CreateObject("ADODB.Connection")

Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Mode=Read" & ";Extended Properties=""Excel 12.0;HDR=YES;"""

texte_SQL = "SELECT * FROM [" & onglet & "$" & Plage & "] WHERE " & plagerecherché & " LIKE " & valrecherche

Set Requete = CreateObject("ADODB.Recordset")
Set Requete = Source.Execute(texte_SQL)

remplaceusername = Requete.GetRows
utilisateur = remplaceusername(0, 0)
utilisateuravecpar = " par " & remplaceusername(0, 0)
utilisateurnomcomplet = remplaceusername(1, 0)
utilisateurfonction = remplaceusername(2, 0)
utilisateurmail = remplaceusername(3, 0)
affi = remplaceusername(4, 0)
utilisateurusername = remplaceusername(5, 0)
defzoomcalculs = remplaceusername(6, 0)
defzoomrecap = remplaceusername(7, 0)

'libère les pointeurs
Set Requete = Nothing
Set Source = Nothing
 

JLE

XLDnaute Junior
Bonjour @dysorthographie,

J'ai tenté de partager le classeur CP.xls, mais l'erreur est toujours présente malgré tout;;;

Je cherche depuis maintenant 3 jours et le comportement est de plus en plus étrange, dernier exemple qui date d'il y a un peu plus qu'une heure :

Durant une macro utilisée par le user "1" contenant le code précité, un user "2" fait un simple copier coller d'une cellule contenant la formule INDEX + EQUIV pointant vers le fichiers CP.xls à l'aide d'une autre macro, ce qui ouvre le fichier CP.xls :-( !

Et si je shunte le bout de code précité, il n'ouvre plus le fichier CP.xls mais demande où il se trouve dans une boite de dialogue, genre j'ai modifié son emplacement

Alors j'ai simulé en même temps les deux procédures sur deux PC différents, et le fichier source CP.xls s'ouvre dans la macro un peu plus loin au moment d'un ActiveCell.PasteSpecial, encore une fois un non sens..

C'est comme s'il perdait le lien entre le fichier cible et le fichier CP.xls car ce dernier serait utilisé et sans accès possible lors d'une requête ADODB ?

Alors j'ai essayé en local et même erreur, donc cela ne vient pas des paramètres réseau non plus...
 

JLE

XLDnaute Junior
Ok pour la boite de dialogue, mais le lien vers le fichier est pourtant valide, sauf quand le code de la procédure précité est en cours d'utilisation.

Alors ça viendrait quand même du code SQL, vous avez trouvé une anomalie dans mon code SQL ?
 

Discussions similaires

C
Réponses
15
Affichages
2 K
Compte Supprimé 979
C
Réponses
6
Affichages
2 K

Statistiques des forums

Discussions
312 104
Messages
2 085 346
Membres
102 868
dernier inscrit
JJV