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

Access Discussion :

importation d'un fichier excel dans access


Sujet :

Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut importation d'un fichier excel dans access
    bonjour,

    Je tente d'importer un fichier Excel dans access et cela fonctionne pas tout a fait comme je veux.

    J'ai un probleme concernant des valeurs sous cette forme la "150.00", c'est le "." qu me pose problème.
    Lors de l'importation, Access ne reconnait pas ce genre de valeur comme un numérique.
    Je précise que Access a créé la table avec l'assistant, lors de l'importation du fichier.

    Une idée?
    Merci d'avance
    Nath

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    ça m'arrive régulièrement.

    Dans Excel, je sélectionne la colonne entière et je fais :
    - Remplacer , par <rien> (virgule par rien; <rien> signifie : remplacer par est vide)
    - Remplacer . par , (point par virgule)
    - Sauvegarder

    A+

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut
    merci pour ton aide, mais j'aurais bien voulu automatisé la manip...
    Faire en sorte que cela se fasse automatiquement ou savoir si il y'avait qq chose a paramétrer pour que access reconnaisse le "." + chiffres comme numerique..

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Points : 59
    Points
    59
    Par défaut
    BOnjour,


    La solution radicale est pour le . (point) ou , (virgule) Séparateur décimal. Les séparateurs sont définis dans la section Paramètres régionaux du Panneau de configuration Windows.

    Ou plus simplement important le champ en texte et faire un replace du Point puis changer la propriété du champ importer en vb.

    Replace(ChaîneARemplacer,ChaîneQuiRemplace).

    et

    Alter Table [TABLE] Alter Column [NOMCHAMP] [Type];

    @+Zeste
    CarpeDiem,CarpeNoctem
    L'information est souvent disponible dans l'aide Access en appuyant sur F1.
    cherches emploi assistant Chef projet CRM Datawarehouse (SI/MKT/Gestion)
    :Help:

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Points : 260
    Points
    260
    Par défaut
    excuse moi.. je comprends pas tres bien ta deuxieme solution..
    j'ai pas touche a Access depuis mes étude et cel date un peu

    J'utilise une commande d'acces qui m'importe le fichier tout seul :
    Fichier>Données externe>importer

    Ta solution se fait a partir de cette commande?
    Car avec cette commande, je vois pas a quel moment on peut changer la valeur d'un champs??

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Points : 59
    Points
    59
    Par défaut importation d'un fichier excel dans access
    Citation Envoyé par nath-0-0
    excuse moi.. je comprends pas tres bien ta deuxieme solution..
    j'ai pas touche a Access depuis mes étude et cel date un peu

    J'utilise une commande d'acces qui m'importe le fichier tout seul :
    Fichier>Données externe>importer

    Ta solution se fait a partir de cette commande?
    Car avec cette commande, je vois pas a quel moment on peut changer la valeur d'un champs??
    Ta commande equivaut a une instruction VB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Feuil1", "C:\Test2\Classeur.xls", True
    Que tu peux associé a un évenement par exemple cliquer sur le bouton d'un formulaire.
    Alt+F11
    Cliques sur Outil puis référence
    actives la référence Microsoft Excel9 library.

    Est ce que tu utilises des macros enregistrées sous Excel?
    Si tel est le cas :

    Enregistres une macro qui modifie ton champ comme tu le souhaites puis
    ton code peut etre interprété dans le VB sous access

    dans le cas ou cela n'est pas ton truc.
    Voici un code, qui n'est pas aussi court que ceux des tutos,
    celui ci fonctionne aussi il faut l'ajouter dans une sub ou une fonction

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    'Ajouter Microsoft Excel9 library dans les références Visual Basic
     
    Dim VbleTxtErreur As String
    On Error GoTo erreur:
     
    Dim MonExcel As Excel.Application, ExlWb As Excel.Workbook
    Dim Db As Database
    DoCmd.SetWarnings False
     
    Set Db = CurrentDb
    'Pour l'exemple j'importe un classeur avec 4 champs
    ' le premier contenant une date
    ' le deuxième un nombre avec un séparateur "."
    ' le troisième avec un séparateur ","
    ' le quatrième du texte
     
    'Ouvre excel
    Set MonExcel = New Excel.Application
    'Désactive les message d'alerte Excel
        MonExcel.DisplayAlerts = False
    'Ouvre le fichier source qui contient les caractères "." a modifier
    Set ExlWb = MonExcel.Workbooks.Open(Filename:="C:\Test2\Classeur2.xls")
     
    'Ouvre le répertoire ou se trouve le fichier
        ChDir "C:\Test2"
    'enregistre le classeur source sous un autre nom avant les modifications
            ActiveWorkbook.SaveAs Filename:="C:\Test2\Classeur.xls", FileFormat:= _
            xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
            , CreateBackup:=False
    'commence les modifications
    'selectionne un onglet
        Sheets("Feuil1").Select
    'positionne le pointeur sur la premiere cellule
        Range("A1").Select
    'selectionne la seconde colonne elle se nomme (C2) ou "B:B"
        Columns("B:B").Select
    'effectue le remplacement de la valeur point par virgule dans la colonne "B" 
        Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False
    ' positionne a nouveau sur la premiere cellule de la feuille de calcul
        Range("A1").Select
    'enregistre le travail effectué
        ActiveWorkbook.Save
    'referme les classeurs ouverts
        ActiveWorkbooks.Close
    'réactive les message d'allerte Excel
        MonExcel.DisplayAlerts = True
    'Quitter Excel
    'Vide le cache mémoire
    Set MonExcel = Nothing
    'importe le fichier Excel contenant les valeurs . changer en virgule
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Feuil1", "C:\Test2\Classeur.xls", True
    'réactive les message d'allerte Windows
     
     
    Set Db = Nothing
    Exit Function
    'Message d'information sur les erreurs
    erreur:
        VbleTxtErreur = Err.Number & Err.Description & Err.Source
        MsgBox (VbleTxtErreur)
     
    Exit Function
    End Function
    @+ Zeste
    Cherche emploi assistant chef projet CRM MKT/Gestion/SI en IDF
    [ACCESS, EXCEL],[VBA],[MY SQL]
    Carpediem, CarpeNoctem

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Salut,

    Juste une remarque concernant ton code Zeste.
    Quand depuis Access tu manipule Excel, il n'est pas nécessaire de faire Machin.select puis selection.truc = bidule. Tu peux faire directement Mchin.truc = bidule.

    Ca change pas grand chose en soit (peut-être peroformance ?) mais ça peut éviter des problème si l'utilisateur click dans une cellule et vient changer la sélection en cours d'execution de ton programme. Je sais que c'est la méthode employée par l'enregistreur de macro, mais il est possible de réécrire ça :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    'Ajouter Microsoft Excel9 library dans les références Visual Basic
    
    Dim VbleTxtErreur As String
    On Error GoTo erreur:
    
    Dim MonExcel As Excel.Application, ExlWb As Excel.Workbook
    Dim Db As Database
    DoCmd.SetWarnings False
    
    Set Db = CurrentDb
    'Pour l'exemple j'importe un classeur avec 4 champs
    ' le premier contenant une date
    ' le deuxième un nombre avec un séparateur "."
    ' le troisième avec un séparateur ","
    ' le quatrième du texte
    
    'Ouvre excel
    Set MonExcel = New Excel.Application
    'Désactive les message d'alerte Excel
        MonExcel.DisplayAlerts = False
    'Ouvre le fichier source qui contient les caractères "." a modifier
    Set ExlWb = MonExcel.Workbooks.Open(Filename:="C:\Test2\Classeur2.xls")
        
    'Ouvre le répertoire ou se trouve le fichier
        ChDir "C:\Test2"
    'enregistre le classeur source sous un autre nom avant les modifications
            ActiveWorkbook.SaveAs Filename:="C:\Test2\Classeur.xls", FileFormat:= _
            xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
            , CreateBackup:=False
    'commence les modifications
            'effectue le remplacement de la valeur point par virgule dans la colonne "B" de la feuil1
                Sheets("Feuil1").Columns("B:B").Replace What:=".", Replacement:=",", LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False
            ' positionne a nouveau sur la premiere cellule de la feuille de calcul
                Sheets("Feuil1").Range("A1").Select
        
       
    'enregistre le travail effectué
        MonExcel.ActiveWorkbook.Save
    
    'réactive les message d'allerte Excel
        MonExcel.DisplayAlerts = True
    'Quitter Excel
        MonExcel.Quit
    'Vide le cache mémoire
    Set MonExcel = Nothing
    
    'importe le fichier Excel contenant les valeurs . changer en virgule
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Feuil1", "C:\Test2\Classeur.xls", True
    'réactive les message d'allerte Windows
    
    
    Set Db = Nothing
    Exit Function
    'Message d'information sur les erreurs
    erreur:
        VbleTxtErreur = Err.Number & Err.Description & Err.Source
        MsgBox (VbleTxtErreur)
    
    Exit Function
    End Function
    A+

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Points : 59
    Points
    59
    Par défaut importation d'un fichier excel dans access
    Merci Bcp Muhad'hib.
    J'applique ton conseil des que possible.

    @+Zeste,Cherche un emploi assistant Chef projet CRM MKT/Gestion/SI en IDF,
    CarpeDiem,CarpeNoctem

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/07/2013, 13h58
  2. [AC-2003] Importation d'un fichier excel dans Access avec traitement
    Par Mishe dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/03/2013, 16h23
  3. importation de plusieurs fichiers excel dans Access
    Par esisa1 dans le forum VBA Access
    Réponses: 8
    Dernier message: 26/07/2010, 14h03
  4. Réponses: 7
    Dernier message: 23/11/2005, 18h20
  5. Réponses: 7
    Dernier message: 04/10/2005, 18h21

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