Impossible d'updater mes data avec mes liens à partir d'un fichier fermé

Bonjour à toute la communauté,

Dans le cadre d'un projet j'ai un fichier source contenant une liste de projets et 70 autres fichiers qui disposent tous de la même liste déroulante qui contient tous les projets.

Les fichiers sont distincts car la liste peut changer du jour au lendemain.

Il se peut que plusieurs utilisateurs utilisent leurs fichiers respectifs parmi les 70 dispo et piochent donc simultanément dans le même fichier source. (Ce qui m'empêche donc d'ouvrir le fichier source en fond pour permettre l'update de la liste).

J'ai donc bien réglé mes liens et quand je lance mon fichier et demande la mise à jour des données, cela fonctionne seulement si le fichier source est ouvert également.

Donc, après mes recherches sur le net je tombe sur un article sur silkyroad qui explique qu'à priori:

"Il existe deux types de connection disponibles pour lire et écrire dans un classeur fermé.

* OLE DB Microsoft Jet.

* OLE DB pour pilotes ODBC."

Donc je me dis top, sauf que voilà aucun des codes disponibles ne fonctionne pour moi

J'ai utilisé le code qu'il conseille pour les fichiers ".xlsx" comme je travaille sur Excel 2010.

J'obtiens :

Run-time error '-2147467259 (800004005)'

Could not find installable ISAM

sur la ligne : .Open

Voilà le code:

Sub RequeteClasseurFerme()
    Dim Cn As ADODB.Connection
    Dim Fichier As String
    Dim NomFeuille As String, texte_SQL As String
    Dim Rst As ADODB.Recordset

    'Définit le classeur fermé servant de base de données
    Fichier = "U:\Workarea\Ongoing\2018\2. My Time Tracking Tool\00. Buffer\ProjectList.xlsx"
    'Nom de la feuille dans le classeur fermé
    NomFeuille = "Sheet1"

    Set Cn = New ADODB.Connection

    '--- Connection ---
    With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Fichier & _
            ";Extended Properties=Excel 8.0;"
        .Open
    End With
    '-----------------

    'Définit la requête.
    '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
    texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"

    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)

    'Ecrit le résultat de la requête dans la cellule A2
    Range("A2").CopyFromRecordset Rst

    '--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing

End Sub

Si vous avez n'importe quelle idée / input, je vous en serai très reconnaissant!

Bon dimanche à toutes & à tous!

Signé LeNovice!

Edit : Je ne trouve pas la réponse à ce sujet sur le forum, chaque fois la discussion semble faire un flop puis est noyée et il n'y a pas de réponse. (Ex : https://forum.excel-pratique.com/viewtopic.php?f=2&t=58496)

Bonjour,

une seule idée.

U:\ ça sent un lecteur réseau. Essayer en utilisant le nom du serveur \\serveur\etc au lieu de la lettre lecteur

eric

Hello Eric,

Je vais tester demain parce que c'est sur un PC pro et je ne sais pas comment obtenir cette information sans demander au service IT qui gère nos réseaux.

Merci pour ta réponse!

Si quelqu'un voit une autre source d'erreur possible, qu'il/elle n'hésite pas

bonjour,

essaie ceci

Sub RequeteClasseurFerme()
    Dim Fichier As String
    Dim NomFeuille As String, texte_SQL As String

    'Définit le classeur fermé servant de base de données
    Fichier = "U:\Workarea\Ongoing\2018\2. My Time Tracking Tool\00. Buffer\ProjectList.xlsx"
    'Nom de la feuille dans le classeur fermé
    NomFeuille = "feuil1"

    '--- Connection ---
    Set Cn = CreateObject("ADODB.Connection")
    Cn.Provider = "MSDASQL"
    Cn.Open "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
            "DBQ=" & Fichier & "; ReadOnly=False;"

    '-----------------

    'Définit la requête.
    '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
    texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"

    Set Rst = CreateObject("ADODB.Recordset")
    Rst.Open texte_SQL, Cn, 3

    'Ecrit le résultat de la requête dans la cellule A2
    Range("A2").CopyFromRecordset Rst

    '--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing

End Sub
Rechercher des sujets similaires à "impossible updater mes data liens partir fichier ferme"