Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/11/2010, 12h03   #1
Membre émérite
 
Avatar de azertix
 
Homme Lanza Bertucci-Domergue
Développeur informatique
Inscription : juin 2007
Messages : 937
Détails du profil
Informations personnelles :
Nom : Homme Lanza Bertucci-Domergue
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 937
Points : 995
Points : 995
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 :
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 :
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 :
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...
__________________
Si ma réponse vous a été utile pensez à voter Pour

Avant de poster sur le forum Access :
FAQ > SOURCES > COURS > FORUM > GOOGLE
Pas de question par MP ou je mords

azertix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2010, 08h03   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
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 :
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 :
1
2
 
   DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, feuille, "C:\cinema.xls", True, feuille & "!"
helas est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/11/2010, 08h18   #3
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
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 :
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
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 16h51   #4
Membre émérite
 
Avatar de azertix
 
Homme Lanza Bertucci-Domergue
Développeur informatique
Inscription : juin 2007
Messages : 937
Détails du profil
Informations personnelles :
Nom : Homme Lanza Bertucci-Domergue
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 937
Points : 995
Points : 995
Questions résolues. Merci à vous !
__________________
Si ma réponse vous a été utile pensez à voter Pour

Avant de poster sur le forum Access :
FAQ > SOURCES > COURS > FORUM > GOOGLE
Pas de question par MP ou je mords

azertix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h36.


 
 
 
 
Partenaires

Hébergement Web