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 :

Importation automatique de données excel


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 120
    Points : 63
    Points
    63
    Par défaut Importation automatique de données excel
    Bonjour le forum,

    J'espère être au bon endroit.

    Je voudrais importer automatiquement à partir d'un fichier excel qui a toujours la même structure (5 colonnes) les données et les intégrer dans une table.

    J'ai lu sur le forum une solution qui est de vider la table et ensuite d'importer les données dans la table vide.

    Je n'ai pas trouvé de tuto la dessus. Je pensais faire un delete de la table en cliquant sur un bouton mais je ne connais pas la syntaxe pour faire l'import de données dans cette même table.

    A moins qu'il existe une autre solution !!!

    Merci de votre aide et bonne journée à tous

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 801
    Points : 14 869
    Points
    14 869
    Par défaut
    Bonsoir,
    la solution est simple et peut être exécutée effectivement sur clic d'un bouton. Voici, brut de fonderie comment faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Docm.RunSql "DELETE * FROM TableaAlimenter"
     
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "TableaAlimenter", "FichierExcelAvecCheminComplet", True
    acSpreadsheetTypeExcel9 : paramètre indiquant la version d'Excel du classeur.
    True : si la première ligne contient les noms des colonnes, sinon False.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 120
    Points : 63
    Points
    63
    Par défaut
    Bonjour le forum et merci tee_grandbois pour ton aide.

    J'ai essayé le code que tu m'as donné mais j'ai une "erreur d'execution 424 objet requis".

    C'est peut être un problème avec la version d'excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    acSpreadsheetTypeExcel9
    Moi, c'est excel 2002. Comment faut il le libeller dans le code?

    Bonne journée

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 120
    Points : 63
    Points
    63
    Par défaut
    Re,

    J'ai trouvé la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Commande1_Click()
     
    DoCmd.SetWarnings False
    DoCmd.RunSQL "DELETE * FROM [Table agents]", 0
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Table agents", "D:\modifs.xls", True
    End Sub
    Par contre, comment afficher un message d'alerte avant la mise à jour du genre "Attention vous allez mettre à jour la table"

    Merci de votre aide et bonne journée

  5. #5
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2006
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2006
    Messages : 239
    Points : 105
    Points
    105
    Par défaut
    Voila:

    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
    Private Sub Commande1_Click()
     
    Select Case MsgBox("Nous sommes, le " & Format(Date, "dddd dd mmmm yyyy") & vbNewLine & "Voulez vous recharger la table agents ?", vbOKCancel
    
    Case vbOK
    
    DoCmd.SetWarnings False
    DoCmd.RunSQL "DELETE * FROM [Table agents]", 0
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Table agents", "D:\modifs.xls", True
    
    DoCmd.SetWarnings True
    
    MsgBox "La mise à jour dela table agents est terminée"
    
    Case vbCancel
    End Select
    
    End Sub

  6. #6
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2006
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2006
    Messages : 239
    Points : 105
    Points
    105
    Par défaut
    Il manque une ) à la fin de la ligne 2 après vbokcancel

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 120
    Points : 63
    Points
    63
    Par défaut
    Bonjour Bernard67 et merci de ton aide.

    C'est exactement ce que je voulais

    Par contre, j'ai vu que tu mettais aussi la date.

    Comment puis je faire pour récupérer la date de la mise à jour afin de l'afficher à côté de mon bouton.

    Je pensais mettre une zone de texte qui serait mise à jour lors de l'import.

    Mais j'ai aucune idée de la syntaxe ou de la façon de procéder.

    Bonne journée

  8. #8
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2006
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2006
    Messages : 239
    Points : 105
    Points
    105
    Par défaut
    Re :
    Dans les fichiers que j'importe, il y a une colonne avec les dates. Tu peux peut etre proceder ainsi en ajoutant une colonne.
    La date du jour figure dans le message.
    Tu peux aussi faire une requete Mise à Jour pour la date.
    Il y a certainement d'autres solutions

Discussions similaires

  1. [AC-2000] Importer base de données Excel
    Par 30avril1989 dans le forum VBA Access
    Réponses: 1
    Dernier message: 28/04/2010, 13h37
  2. alimenter une base de données en important automatiquement un fichier excel
    Par ApprentiDeveloppeur dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/04/2010, 07h58
  3. Importer sous MapInfo données Excel avec valeur manquantes
    Par dashblade dans le forum SIG : Système d'information Géographique
    Réponses: 1
    Dernier message: 12/06/2009, 15h17
  4. [XL-2003] Import automatique de données XLS
    Par denisw95 dans le forum Excel
    Réponses: 6
    Dernier message: 14/05/2009, 11h14
  5. importer automatiquement un fichier excel
    Par polianita dans le forum Access
    Réponses: 2
    Dernier message: 11/07/2006, 17h20

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