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 :

Connexion à ACCESS 2016 depuis Excel mais Pb de lenteur [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 35
    Par défaut Connexion à ACCESS 2016 depuis Excel mais Pb de lenteur
    Bonjour

    Je veux créer une table dans une base de données ACCESS 2016 depuis un fichier Excel qui pilote le programme et y insérer un fichier txt.
    Mon code fonctionne mais je trouve qu'il est très lent, car une session ACCESS s'ouvre, créee une table, referme ACCESS.
    La macro prend bien 45 secondes environ pour une table de 300 lignes.... ce qui est très lent !!

    Idéalement je souhaiterais qu'ACCESS ne s'ouvre pas du tout !!

    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
    30
    Public Const NomBD = "INTEGRATION SOCIAL.ACCDB"
    Public Const CheminBD = "C:\Conso\"
     
    Sub ImportFichierTextdansTableAccess()
    'importe le fichier texte dans une table
     
    Dim CheminFichierImport As String
    Dim SpecificationImport As String  ' nom du fichier contenant les spécifications
    Dim strTableNom As String 'nom de la table à insérer
     
    'Valeur des variables
    SpecificationImport = "ListeSocietes"
    CheminFichierImport = "C:\Conso\Liste.txt"   'chemin complet du fichier à importer
    strTableNom = "ListeSocietes"
     
    'Effectuer l'opération dans ACCESS
    Dim oAppAccess As Access.Application
    Dim oFileAccess As New Access.Application
     
    Set oFileAccess = GetObject(CheminBD & NomBD)
    Set oAppAccess = CreateObject("Access.application")
     
    oFileAccess.DoCmd.TransferText acImportDelim, SpecificationImport, strTableNom, CheminFichierImport, True
     
    oAppAccess.Quit
     
    Set oAppAccess = Nothing
    Set oFileAccess = Nothing
     
    End Sub
    Auriez vous une idée ?
    Merci pour l'aide que vous voudrez bien m'apporter !

  2. #2
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 35
    Par défaut Connexion à ACCESS 2016 depuis Excel mais Pb de lenteur
    Bonjour

    Je veux créer une table dans une base de données ACCESS 2016 depuis un fichier Excel qui pilote le programme et y insérer un fichier txt.
    Mon code fonctionne mais je trouve qu'il est très lent, car une session ACCESS s'ouvre, créee une table, referme ACCESS.
    La macro prend bien 45 secondes environ pour une table de 300 lignes.... ce qui est très lent !!

    Idéalement je souhaiterais qu'ACCESS ne s'ouvre pas du tout !!

    L'ouverture d'ACCESS est également très très lente.....

    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
    30
    Public Const NomBD = "INTEGRATION SOCIAL.ACCDB"
    Public Const CheminBD = "C:\Conso\"
     
    Sub ImportFichierTextdansTableAccess()
    'importe le fichier texte dans une table
     
    Dim CheminFichierImport As String
    Dim SpecificationImport As String  ' nom du fichier contenant les spécifications
    Dim strTableNom As String 'nom de la table à insérer
     
    'Valeur des variables
    SpecificationImport = "ListeSocietes"
    CheminFichierImport = "C:\Conso\Liste.txt"   'chemin complet du fichier à importer
    strTableNom = "ListeSocietes"
     
    'Effectuer l'opération dans ACCESS
    Dim oAppAccess As Access.Application
    Dim oFileAccess As New Access.Application
     
    Set oFileAccess = GetObject(CheminBD & NomBD)
    Set oAppAccess = CreateObject("Access.application")
     
    oFileAccess.DoCmd.TransferText acImportDelim, SpecificationImport, strTableNom, CheminFichierImport, True
     
    oAppAccess.Quit
     
    Set oAppAccess = Nothing
    Set oFileAccess = Nothing
     
    End Sub
    Auriez vous une idée ?
    Merci pour l'aide que vous voudrez bien m'apporter !

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Comme tu utilises une instruction d'Access tu es obligé d'ouvrir Access.
    Pour le temps que cela prend, aucune idée. Cela devrait te prendre le même temps que si tu ouvrais Access par toi-même.

    Tu peux regarder du côté de Excel et de ses mécanismes d'importation qui vont aller lire les données directement dans la BD sans ouvrir Access.
    Attention certaines requêtes ne sont pas visible de Excel, notement mais pas seulement, celles qui contiennent un appel à une fonction VBA définie par l'utilisteur.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 35
    Par défaut
    Oui il est vrai que l'ouverture de mon ACCESS est très lente...que cela soit pour un nouveau fichier ou non
    J'ai essayé en mode sans echec mais le résultat est le même.

  6. #6
    Invité
    Invité(e)
    Par défaut
    inutile de publier plusieurs postes sur le même sujet !

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 35
    Par défaut
    Bonjour
    J'ai mis en place le fichier schema.ini et tout marche à merveille !!
    Merci beaucoup, c'est super !!
    Bien cordialement

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Tu perds énormément de temps à charger Access utilise Ado!

    https://www.developpez.net/forums/d1...v/#post5862937

    https://mon-partage.fr/f/LoCWKVjq/

    Code schema.ini : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [newfile.txt]
    ColNameHeader = False
    CharacterSet = ANSI
    Format=FixedLength
    Col1=LEVEL_MNEMONIC Text Width 14
    Col2=LEVEL_DESC Text Width 60
    Col3=LEVEL_DEPARTMENT Text Width 18
    Col4=LEVEL_DEP_NAME Text Width 30
    Code Sql Création de table : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T.* INTO eee
    FROM [newfile#txt] AS T IN '' [Text;Database=C:\MyRepertoire2\Nouveau dossier];
    Fichiers attachés Fichiers attachés
    Dernière modification par Invité ; 09/01/2018 à 09h18.

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 35
    Par défaut
    Bonjour

    Oui j'avais dans un premier temps fait comme cela et vous avez raison la macro est quasi-immédiate.

    Mais j'ai eu des problèmes lors de la remontée du fichier txt: ACCESS voulait absolument q'un champs soit en numérique, alors que certains enregistrements comprenaient des lettres (=> Par exemple 460A00). Pour info, ce champs peut également comprendre uniquement des nombres (=> par exemple 205000).

    C'est pourquoi je voulais définir le type de cette colonne sur "Texte court" et ainsi remonter toutes ces données, comprenant ou non des lettres, comme du "texte court".
    Malheureusement les données comprenant des lettres n'étaient pas remontées (erreur d'importation) et le champs de l'enregistrement restait vide.

    A la lecture de certaines questions sur le forum, j'ai essayé de placer les enregistrements concernant les chiffres & lettres en entête de fichier mais sans succès.

    Voila pourquoi je suis revenue à ma solution qui me permettait, à travers le fichier de spécifications, de bien remonter ce champs comme du texte court....

    Je vais lire dans la journée les liens que vous m'avez indiqués, merci !

  10. #10

  11. #11
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 35
    Par défaut
    Merci infiniment je vais lire tout ca !

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

Discussions similaires

  1. [XL-2010] Accés Bdd access chiffrée depuis Excel
    Par bobby5169 dans le forum Excel
    Réponses: 9
    Dernier message: 05/04/2018, 14h24
  2. [XL-2016] Connexion à ACCESS 2016 avec mot de passe depuis Excel, en utilisant un QueryTABLES
    Par FannyGir dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/01/2018, 13h16
  3. Réponses: 1
    Dernier message: 09/01/2018, 12h28
  4. [XL-2010] Récupérer dans Excel une donnée d'une procédure Access lancée depuis Excel
    Par stargates01 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/07/2013, 10h27
  5. [XL-2007] Recherche dans Access 2007 depuis Excel 2007
    Par klash384 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/01/2011, 22h56

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