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 :

Passer une variable dans QueryTables.Add [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut Passer une variable dans QueryTables.Add
    Bonjour

    Je voudrais utiliser QueryTables.Add pour importer des données dans mon fichier excel.
    L'import s'effectue correctement si la database source correspond à un fichier excel dont le chemin est en dur.
    Par contre si le nom du fichier excel est une variable que j'ai alimentée préalablement : cela ne fonctionne pas. Qu'est ce qui ne va pas ?
    voici mon code
    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
        With ActiveSheet.QueryTables.Add(Connection:=Array( _
            "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\Temp\WinCnUK.xls;Mode=Share Deny Write;Extended Proper" _
            , _
            "ties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=35;" _
            , _
            "Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Databas" _
            , _
            "e Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=Fal" _
            , "se;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"), _
            Destination:=Range("M28"))
            .CommandType = xlCmdTable
            .CommandText = Array("'Carnet Gamme$'")
            .Name = "WinCnUK"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .SourceDataFile = "C:\Temp\WinCnUK.xls"
            .Refresh BackgroundQuery:=False
        End With
    mais si je remplace le chemin d'accès par une variable comme cela
    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
     Dim monFic As String
    monFic = "c:\temp\WinCnUK.xls"
     With ActiveSheet.QueryTables.Add(Connection:=Array( _
            "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=monFic;Mode=Share Deny Write;Extended Proper" _
            , _
            "ties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=35;" _
            , _
            "Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Databas" _
            , _
            "e Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=Fal" _
            , "se;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"), _
            Destination:=Range("M28"))
            .CommandType = xlCmdTable
            .CommandText = Array("'Carnet Gamme$'")
            .Name = "WinCnUK"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .SourceDataFile = monFic
            .Refresh BackgroundQuery:=False
        End With
    Merci d'avance pour votre aide

    ValCou

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 395
    Par défaut
    Bonsoir,

    ton problème est uniquement un problème de gestion du string de paramètre.

    Dans ton instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=monFic;Mode=Share Deny Write;Extended Proper" _
    Source=Monfic n'est pas interprété car il fait partie du string.

    Il faut donc plutot écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" & monFic & ";Mode=Share Deny Write;Extended Proper" _
    Je suppose que tu auras compris.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut
    Voilà le détail qui me manquait !

    merci bien

    ValCou

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

Discussions similaires

  1. Passer une variable dans une image via un script
    Par Lomig dans le forum Langage
    Réponses: 2
    Dernier message: 16/10/2006, 17h10
  2. Passer une variable dans une requête SQL
    Par Remedy dans le forum C++
    Réponses: 2
    Dernier message: 11/05/2006, 16h48
  3. [VBA]Passer une variable dans une formule Excel
    Par David1974 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/01/2006, 16h52
  4. [Struts] Passer une variable dans l'url
    Par pilz dans le forum Struts 1
    Réponses: 2
    Dernier message: 30/03/2005, 15h23

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