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 :

signaler qu'une importation Excel est deja presente dans access [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Par défaut signaler qu'une importation Excel est deja presente dans access
    Bonjour à tous,
    Je n'ai pas réussi à trouver la solution à mon problème après plusieurs recherches infructueuse. J'importe donc un fichier excel dans une table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport, 8, "<Nom de la table>", "C:\<Chemin explicite>\<fichier Excel>.xls", True, "feuil2!"
    et je voudrais que une foix que j'execute ma macro un msgbox me précise si j'ai deja importée ce fichier et si je veux bien le réimporter.
    Je sais qu'il y a une histoire comme quoi si les données dans access = données dans feuille excel alors importer quand meme oui non sinon oui.
    Merci à vous ...

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 133
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Il y a plusieurs solutions et tout dépend comment est structurée ta base et ton classeur... Tout dépend du contenu de ta feuille aussi... Est-ce qu'il y a une date dans la feuille ou bien sur la date du fichier lui-même.

    Par exemple, tu peux jouer sur le nom de la feuille et localisant la dite table et ses attributs ; Si feuil2 est présente et si date création = aujourd'hui alors déjà importée...
    Après tu peux jouer sur le contenu ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ..... FROM TableCible WHERE IDxxxxx NOT IN (SELECT IDxxxxx FROM Feuil2);
    etc...
    Ca ne ce réalise pas en claquant des doigts mais c'est un enjeu intéressant.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Par défaut
    En faite c'est une feuille qui récapitule mon chiffre d'affaires du mois. Et le mois suivant je réutilise la meme feuille mais avec des données financière différentes et je les distingue avec l'année et le mois.
    Si j'ai bien compris je peux dire que si le champs mois de ma table est égal a la colone mois de ma feuille excel alors ne pas importer ?

    Je suis débutante en vb c'est pour cela. Je vais encore t'embeter... Cette condition je l'a met juste avant le code d'importation ?

  4. #4
    Membre éclairé
    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
    Par défaut
    Bonjour le forum,

    Voici ce que j'utilise pour la même raison, par un MSGBOX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MsgBox("Le dernier fichier ABCxxxx chargé est celui de : " & DMax("ANNEE", "Nom de la table") & " - " & DMax("MOIS", "Nom de la table") & vbNewLine & "" _
    & "Nous sommes, le " & Format(Date, "dddd dd mmmm yyyy") 
    & "Voulez vous importer le fichier ABCxxxx.csv ?", vbOKCancel)
    En espérant que cela puisse t'aider.
    Cordialement

  5. #5
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 133
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Malika
    Cette condition je l'a met juste avant le code d'importation ?
    Bien en fait, il te faut écrire le script d'import.
    Voici un exemple :
    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
     
    Sub ImportCAExcel()
    Const CHEMIN_FICHIER As String = "C:\User\Argyronet\DVP\data\CA.xlsx"
    Const TABLE_EXCEL As String = "Feuille CA"
    Const TABLE_CIBLE As String = "TableCA"
     
    Dim strRequetSQL As String
    Dim lngLignesCA As Long
     
        On Error Resume Next
        'On supprime la table avant
        DoCmd.DeleteObject acTable, TABLE_EXCEL
        If Err <> 0 Then
            Err.Clear
        End If
        On Error GoTo Err_ImportCAExcel
        'On importe la feuille en son entier (Mettre la feuille de ce classeur en position 1)
        DoCmd.TransferSpreadsheet acImport, 8, TABLE_EXCEL, CHEMIN_FICHIER, True
        'On construit la chaîne SQL de la requête (par concaténation des mois et années)
        strRequetSQL = "INSERT INTO " & TABLE_CIBLE & " ( Mois, Année, CA ) "
        strRequetSQL = strRequetSQL & "SELECT Mois, Année, CA "
        strRequetSQL = strRequetSQL & "FROM [" & TABLE_EXCEL & "] "
        strRequetSQL = strRequetSQL & "WHERE ((([Mois] & '-' & [Année]) Not In (SELECT [Mois] & '-' & [Année] FROM [" & TABLE_CIBLE & "];)));"
     
        With CurrentDb
            .Execute strRequetSQL, dbConsistent
            lngLignesCA = .RecordsAffected
        End With
        If RecordsAffected Then
            MsgBox "C'est fini : " & lngLignesCA & " lignes importée(s) dans la table", vbInformation
        Else
            MsgBox "C'est fini : aucune ligne importée car toute les lignes sont communes...", vbExclamation
        End If
     
    Ex_Err_ImportCAExcel:
        Exit Sub
    Err_ImportCAExcel:
        MsgBox Err.Description, vbExclamation, Err.Number
        Resume Ex_Err_ImportCAExcel
    End Sub
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 92
    Par défaut
    Bonsoir,

    Merci a tous pour vos réponse je pense que Argyronet est plus proche de ma solution. J'ai juste une petite question en faite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     'On supprime la table avant
        DoCmd.DeleteObject acTable, TABLE_EXCEL
    En faite à chaque fois on supprime la table ?
    Mais j'arrive pas à voir a quel moment on la recrée ?
    Merci pour ton ade

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2000] Execution d'une macro Access lors d'une importation Excel
    Par Nicolas Plan dans le forum Access
    Réponses: 7
    Dernier message: 23/04/2009, 14h52
  2. [AC-2000] Execution d'une macro Access lors d'une importation Excel
    Par Nicolas Plan dans le forum Modélisation
    Réponses: 2
    Dernier message: 22/04/2009, 10h54
  3. comment savoir si une feuille excel est ouverte?
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/12/2008, 10h54
  4. Test si une ligne excel est vide avant d'importer le ficher
    Par skillipo dans le forum VBA Access
    Réponses: 3
    Dernier message: 30/11/2007, 11h25
  5. [NEWBIE][FORMULAIRE]creer une importation excel
    Par clao260 dans le forum IHM
    Réponses: 1
    Dernier message: 07/05/2007, 11h30

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