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

VBA Access Discussion :

Importation fichier excel dans Access


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Importation fichier excel dans Access
    Bonjour,
    Je voudrais importer plusieurs fichier Excel (1 onglet par fichier) en table access. A chaque importation l'import Ajoute les données à la table existante. Comment écraser la table à chaque import ?
    J'utilise docmd.transferspreadsheet.

    En essayant de supprimer les tables avant import c'est pareil.
    J'ai essayé le drop table sans success. puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
          For i = 0 To db.TableDefs.Count - 1
          Set tbl = db.TableDefs(i)
          If tbl.Name Like "COEF *" Then
         db.TableDefs.Delete tbl.Name
          End If
          Next i

    Les tables sont bien supprimées mais l'importation les recrée en ajoutant les données. Elles doivent sans doute rester physiquement dans la base. comment faire?

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    salut,

    essaie de rafraichir les tables :
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    salut,

    essaie de rafraichir les tables :
    ça ne marche pas

    voici le code que j'ai écrit :
    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
     
    Dim db As Database
    Dim tbl As TableDef
     
    Dim rep As String
     
    Set db = DBEngine(0)(0)
     
         For i = 0 To db.TableDefs.Count - 1
         Set tbl = db.TableDefs(i)
         If tbl.Name Like "COEF *" Then
         db.TableDefs.Delete tbl.Name
     
         db.TableDefs.Refresh
     
         End If
         Next i
     
         db.Close
     
     
         ChDir ("G:\ETUDES\DS")
     
         rep = Dir("G:\ETUDES\DS\coef *.xls")
     
          Do While (rep <> "")
          DoCmd.TransferSpreadsheet acImport, , Left(rep, 8), rep, True
          rep = Dir
          Loop
    objectif : supprimer les tables COEF * de la base et les importer (format Excel).

    merci!

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    ok,
    et utiliser à la place un
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    DROP TABLE Nomtable;
    à la place du delete résoudrait-il ton problème ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    non ça ne marche pas.

    En fait les fichiers se nomment COEF 160.xls, COEF 200.xls etc...
    à la 1ere importation dans la base vide, sans modification du nom d'origine, Access les renomme en
    COEF 160_xls etc..
    avant toute autre importation, je voudrais supprimer ces fichiers car si on importe à nouveau Access créé des fichiers COEF 160_.xls1 etc..

    Si on force le nom à la 1er importation dans la base vide, on a bien des tables nommées "COEF 160", "COEF 200" etc.. mais ensuite je n'arrive pas à les supprimer ou plus simplement à les remplacer lors d'un nouvel import.

    Comment faire, je suis bloqué!
    merci

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    et en remplacant ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If tbl.Name Like "COEF *" Then
    par cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(tbl.Name,4) = "COEF" Then
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    et en remplacant ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If tbl.Name Like "COEF *" Then
    par cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Left(tbl.Name,4) = "COEF" Then
    je ne comprends pas ce qui se passe :
    je veux dans un 1er temps supprimer toutes les tables COEF*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim db As Database
    Dim tbl As TableDef
    Set db = CurrentDb
     
         For i = 1 To (db.TableDefs.Count - 1)
     
         If Left(db.TableDefs(i).Name, 4) = "COEF" Then
         db.TableDefs.Delete db.TableDefs(i).Name
         End If
         Next i
         db.Close
    (tabledefs.count-1) vaut 36 par exemple et à 36 j'ai une erreur "element non trouvé dans la collection". Pourquoi ? je crois que c'est apres le test des table MySys*

    merci

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    le comptage va de 0 à 35 si tu as 36 tables
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    le comptage va de 0 à 35 si tu as 36 tables
    ok mais quelle est l'erreur dans le "for" ?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    il me semble que si tu delete les tables petit à petit, tu n'as plus 36 mais 35 tables, puis 34, etc.

    aussi je te recommande de passer par une boucle For Each à la place de For i
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  11. #11
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    il me semble que si tu delete les tables petit à petit, tu n'as plus 36 mais 35 tables, puis 34, etc.

    aussi je te recommande de passer par une boucle For Each à la place de For i

    non c'est pas possible la réf n'est pas dynamique (et pas de refresh). même si je fais un delete le pointeur passe au suivant.
    D'ailleurs au demarrage, tabledefs.count est dejà à 46 au lieu de 21.
    pour le for each, je ne sais pas l'écrire . c'est comment ?

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim tmptbl as TableDef
    For each tmptbl In CurrentDb.Tabledefs
    if tmptbl.Name = "pioupiou" Then Msgbox "Pioupi \o/"
    Next
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

Discussions similaires

  1. [AC-2010] Importation fichier excel dans access
    Par benoaa dans le forum VBA Access
    Réponses: 10
    Dernier message: 03/07/2014, 14h39
  2. Réponses: 5
    Dernier message: 23/11/2010, 12h36
  3. Import fichier Excel dans Access
    Par MYNOTAURE dans le forum Access
    Réponses: 1
    Dernier message: 11/03/2007, 13h43
  4. Pb Importation de fichiers Excel dans Access
    Par elkhy dans le forum Access
    Réponses: 8
    Dernier message: 22/05/2006, 17h33
  5. Réponses: 7
    Dernier message: 23/11/2005, 18h20

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