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 :

Import/export Excel et gestion des noms [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre émérite Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Par défaut Import/export Excel et gestion des noms
    Bonjour tout le monde
    Un problème isolé je pense. En espérant que ça parle à quelqu'un...

    Voilà ce qui se passe :
    J'exporte des tables d'Access vers Excel avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, nomTable, cheminFic, True, Right(nomTable, 5)
    J'ai plusieurs tables qui vont aboutir à UN fichier avec PLUSIEURS onglets (un par table).
    Ensuite je travaille sur mon fichier Excel. Je peux être amené à ajouter un onglet lors de ce traitement.
    Une fois que j'ai terminé, j'importe mes modifs dans Access avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, nomTable, cheminFic, True, wks.Name
    Or, lors de l'import des onglets, j'avais une erreur provoquée par le dernier paramètre lors-qu'arrivait l'import des onglets crées à la main.
    Après enquête, je me suis rendu compte que ce que j'utilisais pour prendre ma feuille dans sa globalité était en fait un nom dans Excel.

    Après examen de ma feuille Excel je me suis rendu compte que les onglets crées lors de l'export Access->Excel avaient tous trois noms référencés.
    Voici la liste complète (je l'ai générée avec ASAP Utilities) :


    Comme on peut le voir, les onglets crées à la main (00704, 00705 et 01003) n'ont pas de nom.
    J'en ai donc déduit qu'Access les avait crées automatiquement lors de l'export. Et ça m'arrange bien pour mon import ensuite !
    Mon souci : lorsque j'essaye de créer un nom équivalent pour les onglets crées à la main avec pour nom '00704', par exemple, il me dit que le nom n'est pas valide.
    Parce que si cela avait été possible, j'aurais intercepté l'erreur puis créé en VBA le nom comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    erreur:        ' Routine de gestion d'erreur.
        If err.Number = 3011 Then
            Dim maPlage As String
            maPlage = "='" & wks.Name & "!$A$1:$" & dernCol & "$" & dernLig
            wks.Names.Add wks.Name, maPlage
            Resume
        Else
    Or je rencontre la même erreur ("Nom invalide") que lorsque j'avais essayé à la main.

    Mes questions :
    - Est-ce que je peux demander l'import d'une feuille complète sans avoir à passer par une plage et sans avoir de nom correspondant dans Excel ?
    - Pourquoi et comment Access a-t'il créé trois noms pour chaque feuille lors de l'export et à quoi correspondent-ils ?
    - Pourquoi Excel ne crée-t'il pas aussi ces trois noms lorsqu'on ajoute une feuille à la main ?
    - Quelles options s'offrent à moi pour pouvoir importer tous les onglets dans Access et créer les tables correspondantes si nécessaire ?

    Désolé, c'est long parce que détaillé.
    En espérant avoir été clair...

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonjour,
    1) Pour l'importation si le nom de la feuille n'est pas donné, c'est la première qui est importé sinon la syntaxe est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Réalisateurs", "C:\cinema.xls", True, "Réalisateurs!"
    Réalisateurs est le nom de la feuille suivi d'un ! sans préciser la zône
    2) Ces noms ne sont pas visibles en dehors d'ASAP Utilities, à ignorer. On peut neanmoins comprendre que le premier correspond à un fichier filtré, le nom du fichier et le nom du fichier imprimable
    3) pas de réponse
    4) il suffit de boucler sur toutes les feuilles et d'utiliser le code ci-dessus en utilisant une variable pour la feuille à importer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, feuille, "C:\cinema.xls", True, feuille & "!"

  3. #3
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    un ajout
    permet d'importer toutes les feuilles d'un fichier Excel
    Une erreur peut se produire si une table existe déjà avec des clés primaires identiques à celles du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim xla As Object, xlw As workbook, sh As worksheet
     
      fichier = "c:\export.xls"
      Set xla = GetObject("", "Excel.application")
      Workbooks.Open fichier
      Set xlw = ActiveWorkbook
      For Each sh In xlw.worksheets
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, sh.Name, fichier, True, sh.Name & "!"
      Next sh
      Set xlw = Nothing
      Set xla = Nothing

  4. #4
    Membre émérite Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 961
    Par défaut
    Questions résolues. Merci à vous !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/05/2007, 16h32
  2. Réponses: 1
    Dernier message: 23/03/2007, 11h43
  3. Import / Export Excel
    Par nat54 dans le forum Access
    Réponses: 7
    Dernier message: 24/06/2006, 12h35
  4. [SQL Server 2005 Express][import-export Excel]
    Par Marco_SAP dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 31/12/2005, 14h57
  5. RegExp : gestion des noms accentués
    Par lord_paco dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/06/2005, 09h42

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