Problème de source de données ODBC

eleda28

XLDnaute Nouveau
Bonjour,

quand je lance ma macro, elle s'arrête sur cette ligne :
Code:
With ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal).Connection = _
        "ODBC;DSN=INFO_CLIENTS;DBQ=J:\BASE_DE_DONNEES_ACCESS\INFOS_CLIENTS.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
et me renvoie cette erreur : "N'est pas une source de données ODBC"
Quel est le problème??

Merci pour votre aide
 

ngogoisidore

XLDnaute Occasionnel
Re : Problème de source de données ODBC

Bonjour eleda28,

Le code :

Code:
ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal)

renvoie un objet PivotCache non encore connecté à une source de données.

En particulier, son attribut Connection est inaccessible en lecture. Essayer d'y accéder entraine l'erreur "Not an ODBC Data Source Or Web Query", que tu as expérimentée.

L'attribut Connection n'est accessible, à ce moment, qu'en écriture, à condition de rentrer une chaîne de connection valide. La connection n'est pas réellement établie à ce moment, mais la syntaxe doit être correcte sous peine d'un message d'erreur.

Lorsque tu écris :

Code:
With ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal).Connection = "chaîne de connection"

tu accèdes à l'attribut Connection en lecture, à cause de l'instruction With.

En effet, With Expression = "...", met Expression "à disposition" dans la suite du code (jusqu'à l'instruction End With de fermeture), et dans un deuxième temps, affecte la valeur "..." à Expression.

Remarque néanmoins que l'instruction "With Expression" ne fonctionne que si Expression est un Objet. Si, comme dans notre cas, Expression est un Variant(/String), le (pseudo) compilateur autorisera le déroulement du code, car un Variant peut contenir un objet, mais c'est un non sens, car le but du With est d'accéder rapidement aux méthodes et attributs de Expression, pas à Expression elle même ...

La syntaxe correcte la plus simple est :

Code:
ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal).Connection = "chaine de connection"

Ou bien :

Code:
With ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal)
    .Connection = "chaine de connection"
    ...
End With

De manière à pouvoir accéder aux attributs/méthodes de l'objet PivotCache nouvellement créé.

@+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 644
Messages
2 090 447
Membres
104 537
dernier inscrit
POTDGEL