Dim ou set

Bonjour à vous,

J'ai besoin d'un petit cour sur les commandes Dim et Set dans VBA. J'esseye de définir une base de donnée accès dans une macro, mais je ne comprends pas comment la définir. J'ai regardé le site de JB, il semble faire ça comme ceci :

Dim bd As Database

repertoire = ThisWorkbook.Path & "\"

Set bd = OpenDatabase(repertoire & "access2000.mdb")

Je ne comprends pas trop... J'ai esseyé ceci :

Dim bd as database

Set db = P:\comptabilite\Rapport exception\BD.mdb

Je ne comprends pas trop comment ça fonctionne...

Est ce quelqu'un peut m'apporter des précisions, je ne suis sûr de n'être plus très loin de comprendre.

Merci et bonne journée à tous.

Bonjour,

Les deux instructions font la même chose en fait.

Seul petit oubli de ta part ce sont les guillemets avant et après l'instruction et le Opendatabase

Donc pour ce que tu as fait, il te faut :

Set Db = "P:\comptabilite\Rapport exception\BD.mdb"

Au lieu de

Set Db = P:\comptabilite\Rapport exception\BD.mdb

Pour ce qui est de la comparaison entre ta solution et l'autre. D'un coté on définit une variable qui permet de donner le chemin où se trouve ton fichier sur le disque dur

repertoire = ThisWorkbook.Path & "\"

Dans ton cas cela correspond à :

P:\comptabilite\Rapport exception\

En gros ton code devrait être ceci :

Dim bd As database
Set Db = opendatabase("P:\comptabilite\Rapport exception\BD.mdb")

ou

Dim bd As database
repertoire = ThisWorkbook.Path & "\"
Set Db = OpenDatabase(repertoire & "BD.mdb")

L'avantage du Thisworkbook est que si tu déplaces ton fichier sur ton disque, ton code ira toujours ouvrir la database et ce, pour autant qu'elle soit dans le même répertoire que ton fichier bien sûr.

Amicalement

Dan

Bonjour Dan,

Merci beaucoup pour les explications très clair. Je comprends mieux maitenant. Je me permet d'abuser de ton aide en voulant simplifier mon code. Je commence comme ceci :

Dim bd As database
repertoire = ThisWorkbook.Path & "\"
Set Db = OpenDatabase(repertoire & "BD.mdb")

Voici le reste du code que j'aimerais vraiment simplifier en remplancant tous les P:/comp... par bd mais je n'y arrive pas... Ce code est enregistrer à l'aide de l'enregistreur de macro lors qu'on fait une query. En espérant que tu puisses m'aider encore un peu.

    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=MS Access Database;DBQ=P:\comptabilite\Rapport exception\BD.mdb;DefaultDir=P:\comptabilite\Rapport exception;DriverId=25;FI" _
        ), Array("L=MS Access;MaxBufferSize=2048;PageTimeout=5;")), Destination:=Range _
        ("B4"))
        .CommandText = Array( _
        "SELECT Emp.NoE, Emp.Nom, Emp.Statut, Emp.Directeur, Emp.Description, Emp.`Actif-Inactif`, Emp.VP, `10`.HM, `11`.HM, `12`.HM" & Chr(13) & "" & Chr(10) & "FROM `P:\comptabilite\Rapport exception\BD`.`10` `10`, `P:\comptabilite\Rap" _
        , _
        "port exception\BD`.`11` `11`, `P:\comptabilite\Rapport exception\BD`.`12` `12`, `P:\comptabilite\Rapport exception\BD`.Emp Emp" & Chr(13) & "" & Chr(10) & "WHERE `10`.NoE = Emp.NoE AND `11`.NoE = Emp.NoE AND `12`.NoE = Emp.NoE A" _
        , "ND ((Emp.VP='A. Bouchard'))")

Merci beacoup !!!

re

Par Edition/remplacer, essaie en remplaçant tous les

P:\comptabilite\Rapport exception\

par

repertoire & 

Veille bien à mettre un espace derrière le "&"

Dan

Merci, mais ça ne foncionne pas Il m'indique que le fichier est pas trouvable... Mon problème c'est qu'à partir du de Array( _, j'ai le droit à 1000 caractères max alors que je dois aller chercher 1 élément dans une 20taine de table... donc trop de caractères...

J'esseye en vain de trouver une solution alternative pour conterner ce problème...

Merci beaucoup !

Amicalement,

Vincent

re,

Mets un fichier en ligne avec le code que tu obtiens par l'enregistreur automatique d'excel.

Cela sera plus facile de te proposer une solution.

A te relire

Dan

Fichier, voilà un fichier Bidon, la requête ne fonctionne pas particulièrement bien, mais bon tu devrais être en mesure de comprendre quelques choses.

Merci beaucoup de ton aide.

Bonne journée !

re,

Ce que je t'ai donné avant n'est pas correct.

Peux tu m'informer sur ceci :

  • Le répertoire dans lequel se trouve ton fichier c'est --> P:\comptabilite\ ?
  • Le fichier excel : Rapport exception ?
  • La base de données : Bd.mdb ?

A te relire

Dan

Répértoire : P:/comptabilité/Rapport d'exception

Fichier excel : Fichier maître se retrouve dans le répértoire

Bd accès se somme BD dans le même répértoire...

Merci encore de m'aider... Je commence à être décourager.

Merci et bonne journée !

Rechercher des sujets similaires à "dim set"