IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Utiliser la commande ThisWorkbook.Path dans mon code [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut Utiliser la commande ThisWorkbook.Path dans mon code
    Bonjour,

    J'aimerais utiliser la commande ThisWorkbook.Path dans mon code, mais je n'y arrive pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    With Sheets("Test_Access").ListObjects.Add(SourceType:=0, Source:=Array( _
            "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=C:\Users\Propriétaire\Desktop\Liste des clubs 2017-2018." _
            , _
            "accdb;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Pa" _
            , _
            "ssword="""";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Tr" _
            , _
            "ansactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLED" _
            , _
            "B:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Comple" _
            , _
            "x Data=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypass ChoiceField Validati" _
            , "on=False"), Destination:=Range("$A$1")).QueryTable
            .CommandType = xlCmdTable
            .CommandText = Array("Requête - Liste Clubs")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .SourceDataFile = _
            ThisWorkbook.Path & "Liste des clubs 2017-2018" & ".accdb"
            .ListObject.DisplayName = "Tableau_Liste_des_clubs_2017_2018.accdb"
            .Refresh BackgroundQuery:=False
        End With
    Et pourtant, cela fonctionne à cet endroit ?...

    Merci d'avance pour votre aide :-)

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut,
    Et pourtant, cela fonctionne à cet endroit ?...
    Cela m'étonnerait
    mais plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            ThisWorkbook.Path & "\" & "Liste des clubs 2017-2018" & ".accdb"
    sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Dim sChemin as String
    ...
    sChemin  = ThisWorkbook.Path & "\" & "Liste des clubs 2017-2018" & ".accdb"
    ...

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut
    Bonjour,

    Merci pour la réponse, mais cela ne fonctionne pas, le code devient rouge...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    With Sheets("Test_Access").ListObjects.Add(SourceType:=0, Source:=Array( _
            "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=ThisWorkbook.Path & "\" & "Liste des clubs 2017-2018" & "." _
            , _
            "accdb;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Pa" _
            , _
            "ssword="""";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Tr" _
            , _
            "ansactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLED" _
            , _
            "B:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Comple" _
            , _
            "x Data=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypass ChoiceField Validati" _
            , "on=False"), Destination:=Range("$A$1")).QueryTable
            .CommandType = xlCmdTable
            .CommandText = Array("Requête - Liste Clubs")
            .RowNumbers = False
    ...
    Le problème est à mon avis au niveau de la syntaxe... mais ou... J'ai l'impression qu'il prend la commande "ThisWorkbook.Path" pour du texte... :-/

  4. #4
    Invité
    Invité(e)
    Par défaut
    rebonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & ThisWorkbook.Path & "\Liste des clubs 2017-2018" 

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut
    Super, merci :-)

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut
    Bonjour,

    Cela fonctionne très bien, maintenant j'aimerais au lieu de mettre : ThisWorkbook.Path + nom du fichier, mettre une variable qui contient la valeur de ThisWorkbook.Path + non du fichier...

    Exemple : remplacer dans mon exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Sheets("Test_Access").ListObjects.Add(SourceType:=0, Source:=Array( _
            "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=ThisWorkbook.Path & "\" & "Liste des clubs 2017-2018" & "." _
            , _
            "accdb;Mo
    par :

    monfichier = ThisWorkbook.Path + nom du fichier.accdb

    et ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With Sheets("Test_Access").ListObjects.Add(SourceType:=0, Source:=Array( _
            "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=monfichier;Mo...
    Mais je n'y arrive pas...

    Grand merci d'avance pour votre aide

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim monfichier AS  String
    monfichier = ThisWorkbook.Path & "\Liste des clubs 2017-2018.accdb"
    
    With Sheets("Test_Access").ListObjects.Add(SourceType:=0, Source:=Array( _
    "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & monfichier & ";Mo...

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut
    Merci...

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut
    La suite...

    J'utilise la commande : Application.GetOpenFilename pour aller chercher mon fichier (*.accdb)...

    J'attribue la valeur à une variable : monfichier (exemple de valeur : C:\Temp\Liste des clubs et joueurs 2017 2018.accdb)

    Ensuite j'aimerais que ce code fonctionne mais j'ai toujours un problème au niveau (rouge)

    Pourriez-vous m'aider

    Ps : Je ne comprends pas vraiment cette commande (elle a été enregistrée via l'option Excel)...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    With Sheets("Test_Access_Clubs").ListObjects.Add(SourceType:=0, Source:=Array( _
            "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & monfichier & ";Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Pa" _
            , _
            "ssword="""";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Tr" _
            , _
            "ansactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLED" _
            , _
            "B:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Comple" _
            , _
            "x Data=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypass ChoiceField Validati" _
            , "on=False"), Destination:=Range("$A$1")).QueryTable
            .CommandType = xlCmdTable
            .CommandText = Array("Requête - Liste Clubs")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .SourceDataFile = monfichier
            .ListObject.DisplayName = "Tableau_Liste_des_clubs_et_joueurs_2017_2018.accdb"
            .Refresh BackgroundQuery:=False
        End With
    NB : Pourriez-vous m'expliquer pourquoi de temps en temps lorsque j'enregistre en VBA, il arrive qu'il ajoute un chiffre à la fin ?
    Exemple : .ListObject.DisplayName = "Tableau_Liste_des_clubs_et_joueurs_2017_2018.accdb2"

    Encore merci pour votre aide :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser ThisWorkbook.Path dans mon code
    Par CrasherSEP dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/06/2017, 12h18
  2. Réponses: 4
    Dernier message: 14/12/2015, 20h11
  3. utiliser le langage latex dans mon code java
    Par guim2708 dans le forum Général Java
    Réponses: 0
    Dernier message: 27/05/2009, 22h08
  4. Probleme ADO adapter une requete sql pour l'utiliser dans mon code vb6
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/04/2009, 15h53
  5. Projet VB v6 : utilisation de requête SQL dans mon code
    Par MITCH31 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/10/2005, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo