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 :

Problème d'import de donnée Excel dans table Access


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 163
    Points : 89
    Points
    89
    Par défaut Problème d'import de donnée Excel dans table Access
    Bonjour,

    J'utilise ce code VBA pour rentrer des valeurs d'un fichier excel dans une table.

    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
    66
    67
    68
    69
    70
    71
    Option Compare Database
     
    Private Sub Commande0_Click()
     
        'Déclaration des variables pour ouvrir Excel en VBA
        Dim xlApp As Variant, xlBook As Variant, xlSheet As Variant, xlPath As String, wsName As String, startRow As Integer, pkeycol As String, acTable As String, pkey As String
        Dim i As Integer, cSQL As String
     
        'On desactive les messages d'erreurs
        DoCmd.SetWarnings False
     
        'Préciser que l'on souhaite ouvrir un seul fichier
        Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = False
        'Ouvre une boite de dialogue pour ouvrir ton fichier Excel
        Application.FileDialog(msoFileDialogFilePicker).Show
        'Récpère le chemin du fichier Excel dans la variable : chemin
        chemin = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
     
     
        'XlApp t'ouvre un objet EXCEL
        'XlBook t'ouvre le classeur ( chemin ), ton fichier excel
        'Xlsheet te positionne sur la feuil ou l'on va procéder à l'extraction
        'XlApp.visible t'affiche le fichier excel ouvert. Tu peux le mettre sur false si tu veux pas le voir s'ouvrir
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Open("" & chemin & "")
        Set xlSheet = xlBook.Worksheets("Feuil5")
        xlApp.Visible = True
     
        'On se positione sur la feuil5
        xlBook.Worksheets("Feuil5").Activate
     
        'On définie les différents paramètres pour intégrer les données dans la table
        wsName = "Feuil5"
        'Définie le numéros de ligne ou doit commencer l'exportation. Si tu as des en-tête, tu positionnes sur la ligne 2
        startRow = 1
        'pkeycol permet de définir la colonne sur lasquel on va boucler plus tard pour tester si il y a encore des données à insérer dans la table
        pkeycol = "A"
        'Définie la table access ou tu vas importer tes données
        acTable = "Préparation"
     
        i = startRow
     
        With xlSheet
            'arrêter l'importation lorsque l'on rencontre une case vide
            While .Range(pkeycol & i).Value <> "" '(où pKeyCol représente la colonne et i la ligne)
     
                        'Requete SQL, pour exporter tes données
                        cSQL = "INSERT INTO " & acTable & " ([Date],[Code GE],[Activité],[Zone],[HeureD],[HeureF],[Pause],[Colis]) VALUES (" & Chr(34) & .Range("A" & i) & Chr(34) & ", " & Chr(34) & .Range("B" & i) & Chr(34) & ", " & Chr(34) & .Range("C" & i) & Chr(34) & ", " & Chr(34) & .Range("D" & i) & Chr(34) & ", " & Chr(34) & .Range("E" & i) & Chr(34) & ", " & Chr(34) & .Range("F" & i) & Chr(34) & ", " & Chr(34) & .Range("G" & i) & Chr(34) & ", " & Chr(34) & .Range("H" & i) & Chr(34) & ");"
                        'exécute la requète
                        DoCmd.RunSQL cSQL
                        'on incrémente la variable i pour passer à la ligne suivante
                        i = i + 1
            Wend
     
        End With
     
        'On ferme le fichier excel, et on ne sauvegarde pas. Si tu veus sauvegarder tu mets sur true
        xlBook.Close savechanges:=False
        'On ferme l'objet excel
        xlApp.Quit
     
        'On libère les variables
        Set xlBook = Nothing
        Set xlApp = Nothing
        Set xlSheet = Nothing
     
        'on réactive les messages d'erreurs
        DoCmd.SetWarnings True
     
     
    End Sub
    Tout fonctionne bien, le seul problème c'est que sur mes 24 lignes de mon fichier Excel, uniquement la 4 ème ligne s'ajoute à la table. De plus quand je lance deux fois la macro sa me rajoute toujours la ligne 4 mais un decallage du numéros auto de 24. Donc je suppose que les données s'intègre quand même dans la table mais s'enregistre pas.

    Toutes les cellules du fichier Excel sont aux mêmes format et je ne comprend pas pourquoi une seul de ces lignes s'ajoutent.

    Caractéristique de ma table préparation :

    http://imageshack.us/photo/my-images/17/tableaccess.jpg


    Le format pour la date est en date abrégé , et HeureDe t HeureF sont aux format heure complet.

    Voila si quelqu’un à une idée pourquoi une seule ligne s'intègre dans la table.

    Cordialement

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    essaye en enlevant DoCmd.SetWarnings False cela te donnera peut-être une indication sur la source du problème.

    Personnellement je pencherai pour des clefs primaires en double.

    Regarde aussi si tu n'as pas une table Erreur d'imporation, ou quelque chose du genre, qui se serait créée.

    A+

Discussions similaires

  1. Importer des données excel dans mes tables Postgres
    Par Thomas77380 dans le forum Débuter
    Réponses: 10
    Dernier message: 19/07/2012, 00h20
  2. Problème d'importation des données excel dans Mysql
    Par Contact2012 dans le forum Débuter
    Réponses: 4
    Dernier message: 06/06/2010, 18h59
  3. Importer des données Excel dans une table Access
    Par Flaguette dans le forum Modélisation
    Réponses: 3
    Dernier message: 25/09/2008, 21h50
  4. Problème Import de données Excel dans Access
    Par francoisd dans le forum Access
    Réponses: 1
    Dernier message: 08/09/2006, 17h46
  5. Import de Données Excel dans une Table Access
    Par YLF dans le forum Access
    Réponses: 2
    Dernier message: 20/02/2006, 19h02

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