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 16/08/2011, 11h57   #1
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : août 2007
Messages : 2 255
Points : 2 979
Points : 2 979
Par défaut Import Classeur Excel : problème avec Champ d'abord numériques puis Alpha.

Bonjour,

j'utilise le code suivant pour importer une table Excel dans Access.

Code :
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, From_Table, Document, True, From_Range
Cela fonctionne presque, mais donne des erreurs d'importation pour les champs qui sont dans le fichier excel d'abord numériques puis parfois un contenu Alphanumérique.

Exemple :

Le département 613 est importé, mais quand on arrive à '613/8', il y a une erreur loggée et le champ est ignoré, ce que je ne veux pas.

Est-il possible de forcer l'import en Alpha pour certains champs ?
En insérant une première de données fictives avec des champs Alpha où je veux le forcer où bien il existe un moyen propre ?


(NB : En triant je n'arriverai pas car il y a plusieurs colonnes concernées et pas toujours en même temps).
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 14h09   #2
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : août 2007
Messages : 2 255
Points : 2 979
Points : 2 979
Voilà,

pour ceux que cela intéresse, j'ai fait comme suit (accrochez-vous).

1) dans Access, je stocke pour cet import un string contenant les noms des colonnes qu'il faut forcer en alphanumérique avant l'import, variable Importing_File_Force_Fields, le format est col/col/col etc.

2) Avant import, j'effectue via excel un reformattage des données en passant entre autres comme paramètre, mon string Importing_File_Force_Fields contenant les noms de colonens à forcer.

Un court extrait de ce script
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub Gmain_Import_Plan_Formation_Before(Document As String, Excel_Workbook As String, Excel_Script_File As String, specific As Variant)

'...
Dim Xls_Importing_File_Force_Fields  As String
Dim Tforce()    As String       'Rows to force to type Alpha
'..
    Xls_Importing_File_Force_Fields = specific(13)
        Tforce = Split(Xls_Importing_File_Force_Fields, "/")

'....
'12) Insert Dummy line at the beginning for Alphanumeric convertion issue in Import_excel
    Mysh.Rows("2:2").Copy
    Mysh.Rows("2:2").Insert Shift:=xlDown
    Mysh.Range("A2") = "$$$dummy"
'13) Flag
        For off = 0 To UBound(Tforce)
            Mysh.Range(Tforce(off) & "2") = "$$$dummy"
        Next off
   End With
Ensuite, après import, il n'y a plus qu'a supprimer l'enregistrement $$$dummy dans la table.

Marche nickeL.
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 15h01   #3
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
Par défaut Import Excel ?

Bonjour,
Je n'ai peut-être pas tout compris, mais voici le test que j'ai fait :

J'ai créé un excel (2003) nommé test.xls avec 2 colonnes :

A...........................................B
00123...................................123
00124..................................125/08
12.......................................012-15

La col1 (A) est définie format Texte, la col2 (B) est au format "standart" (donc je n'y ai pas touché), je n'ai pas mis de titre de colonnes.

J'importe avec :
Code :
DoCmd.TransferSpreadsheet acImport, 8, "Table1", "test.xls", False, ""
J'obtiens une table Access avec les deux rubriques au format texte, sans erreur d'importation (sous Access 2003), reproduisant exactement le contenu initial de l'excel.

Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 15h06   #4
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : août 2007
Messages : 2 255
Points : 2 979
Points : 2 979
Bonjour Michel,

Si tu as très bien compris, mais je crois me souvenir d'avoir un jour vu dans un post sur même site que le test de numéricité se fait sur les quelques premiers enregistrements, mais je ne sais plus combien

Mes données alpha sont très loin, au delà de 100 lignes pour les plus proches et au delà de 700 pour certaines colonnes.

Le fichier d'erreur d'importation disait "Conversion Error", puis le nom du champ, puis l'occurence de la ligne.
J'avais une centaine d'erreurs sur 3 champs au total.
Je n'ai plus aucune erreur.
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla 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 09h19.


 
 
 
 
Partenaires

Hébergement Web