Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Connexion ADODB -> Ouverte fichier non voulue

  • Initiateur de la discussion Initiateur de la discussion Ikito
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ikito

XLDnaute Occasionnel
Bonjour à tous,

Le but de mon fichier est de parcourir un emplacement réseau partagé et de récupérer des informations d'un certain type de fichier.
Aucun problème sur ce point, j'arrive à récupérer les donnés que je souhaite sur les fichiers fermés souhaités.

Le problème est le suivant :

Si le fichier en question est ouvert par quelqu'un sur son poste, les données ne sont pas récupérées et le fichier est ouvert, comme un Workbooks.Open en quelques sortes.

Résultat : Le programme plante.

Comment faire pour, soit :
  • Récupérer les données du fichier tout de même sans que ça l'ouvre
  • Ne pas récupérer les données du fichier, et relancer le programme plus tard lorsque les fichiers seront fermés.
Voici le bout de code que j'ai, où il faut certainement ajouter une condition...

VB:
Set Source = New ADODB.Connection
Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & Fichier & ";Mode=Read" & ";Extended Properties=""Excel 8.0;HDR=No;"";"
               
Set ADOCommand = New ADODB.Command
With ADOCommand
    .ActiveConnection = Source
    .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
End With
               
Set Rst = New ADODB.Recordset
On Error GoTo ResumeSuite:
Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
 
Dernière édition:
Bonjour,

C'est bien la première fois que j'entends dire qu'une connexion ADODB ouvre l'application d'un fichier source.
Ce sont des fichiers .xls qui sont à lire ? Si xlsx ou xlsm remplace "Excel 8.0" par "Excel 12.0" dans la chaîne de connection.
Tester également avant Source.Open: Source.CursorLocation = adUseClient.
Répéter cette dernière pour Rst au besoin.

P.S. c'est toujours la chiotte à dépatouiller ces histoires d'ouverture en mode exclusif.
Normalement ADODB n'intérroge que les versions enregistrées des source, pas les versions en mémoire (donc ouverte par leur application) et ne devrait pas poser de problème. Mais de temps à autre, je n'ai jamais réussit à savoir pourquoi, cela fait problème... Paramétrage réseau ou serveur????

Bon après-midi
 
Bonjour Roblochon,

Effectivement, ce sont des fichiers en .xlsm. Ca fonctionne parfaitement avec .12 au lieu de .8.
Cependant, pourquoi dans un cas ça les ouvre en Lecture Seule et dans l'autre ça ne les ouvre pas et ça récupère la valeur... ? Va savoir.

Merci 🙂
 
Re,

Cependant, pourquoi dans un cas ça les ouvre en Lecture Seule et dans l'autre ça ne les ouvre pas et ça récupère la valeur... ?

En employant les bons outils pour les bons formats de fichier, les problèmes se règlent.
Employer une bibliothèque faite pour les formats xlsx en lui disant d'ouvrir un fichier .xls c'est comme tenter de mettre une disquette 3'1/4 (souple) dans un lecteur CD.


Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
45
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
365
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…