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

Macros et VBA Excel Discussion :

Macro excel pour exportation données vers Access


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut Macro excel pour exportation données vers Access
    Bonjour à tous,
    il a été construit une macro servant à extraire des informations précises provenant d'image Tif. Elle est opérationnelle et fonctionne bien.
    Cependant, j'aimerai intégrer ces informationsdans des champs spécifique (3) d'un table access par l'intermédiaire d'excell et une macro.

    J'ai lu sur le sujet qu'il était possible avec Query, ADO, DAO, SQL mais je trouve relative complexe. J'aimerai votre aide.

    Comment dois je proceder, le plus simplement possible car étant débutant..expliquer moi étapes par étapes.

    voici la macro en question:
    http://www.cijoint.fr/cij81785804834507.zip

    Le fichier zip est à désipper dans C:\ et contient
    -la macro "macro4" avec deux 3 feuilles
    -deux images tif
    -une base access

    J'ai récupérer cet exemple, qu'en pensez vous ..?


    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
    Private Sub Commande1_Click()
    'Ici l'importation se déclenche en cliquant sur le bouton "Commande1"
    'mais on peut aussi mettre ce code à l'ouverture d'un formulaire
    Dim oApp As Excel.Application
    Dim oWkb As Excel.Workbook
    Dim oWSht As Excel.Worksheet
     
    Set oApp = CreateObject("excel.application")
     
    ‘ (1)
    Set oWkb = oApp.Workbooks.Open("chemin_du_fichier_xls") 'mettez ici le chemin vers votre fichier Excel
    Set oWSht = oWkb.Worksheets("nom_de_la_feuille_concernée_par_limportation") 'mettez ici le nom de la feuille qui contient les données à importer
     
    ‘(2) 
    'première ligne ou commence l'import
    i = 11
     
    'pour éviter les messages lors de l'ajout des enregistrements
    DoCmd.SetWarnings False
     
    'tant qu'on n'est pas arrivés à la ligne 600 du tableur
    While i < 600
    'on peut aussi arrêter l'importation lorsque le programme rencontre une case
    'vide en remplaçant la ligne du While par :
     
    ‘(3)
    'While oWSht.Range("I" & i).Value <> ""
     
    'condition de remplissage de la table => eviter les doublons
    'si l'enregistrement existe déjà dans la table destination,
    'on passe à la ligne suivante sans l'importer(4)
    If DCount("*", "[nom_da_la_table_destination]", "[nom_du_champ_destination_qui_ne_doit_pas_avoir_de_doublons] LIKE '" & oWSht.Cells(i, 9) & "*'") = 0 Then
    'le numéro 9 correspond au numéro de la colonne source, tel que : A=1, B=2, C=3 ...(5) 
     
    'requète SQL (avec en paramètre la ligne i et le numéro de la colonne comme précisé au-dessus)(6)
    cSQL = "insert into [table_destination] ( [champ1], [champ2] ) values (" & Chr(34) & oWSht.Cells(i, 13) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 11) & Chr(34) & ")"
    'ici, on ne prend que les colonnes M (=13) et K (=11).
     
    'exécute la requète
    DoCmd.RunSQL cSQL
     
    End If
     
    'on incrémente la variable i pour passer à la ligne suivante
    i = i + 1
     
    Wend


    Merci pour l'ensemble de vos réponses.

    Ji

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    Le code que tu présentes en exemple est conçu pour s'exécuter à partir d'Access et non à partir d'Excel.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Bonjour,
    Merci à vous de me répondre.. d'autres solutions se présentent elles à moi ??

    Cordialement,

    Ji

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    ReBonjour,
    Merci pour vos réponses rapides et claires.

    J'ai trouvé de code qui j'ai adapté à ce que je souhaitais... mais il semblerait que je ne sache pas le faire fonctionner.. J'ai l'erreur
    "Erreur de compilation : Type défini par l'utilisateur non défini".

    Voici le code en question:

    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
    Dim ObjAcc As Access.Application
    Set ObjAcc = CreateObject("Access.Application")
    ObjAcc.OpenCurrentDatabase "S:\Cochlée nov 2007\bdd01_meb_01122007.mdb"
    ObjAcc.UserControl = True
    AppActivate "Microsoft Access"
    CurrentDb.Execute "delete from [Images]"
    Workbooks("ClasseurN").Activate
    Do While Sheets("Feuil1").Range("C2").Offset(i, 0) <> ""
    CurrentDb.Execute "Insert into [Images](Paramètres)Values('" &
    Sheets("Feuil1").Range("C2").Offset(i, 0).Value & "');"
    i = i + 1
    Loop
    ObjAcc.CloseCurrentDatabase
    ObjAcc.UserControl = False
    ObjAcc.Application.Quit
    Merci par avance de vos aides,

    Ji

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    Es-tu sur un Mac? Sinon, ton AppActivate n'est pas utilisable.

Discussions similaires

  1. Exportation données vers Excel et Macro
    Par arnaudbu dans le forum SAP
    Réponses: 19
    Dernier message: 02/03/2015, 18h15
  2. Methode pour exporter données vers excel
    Par ALEA001 dans le forum Débutez
    Réponses: 2
    Dernier message: 11/08/2011, 17h34
  3. [SQL SERVER 2005/ACCESS]Possibilité export données vers ACCESS ?
    Par mathieu44800 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/08/2007, 17h06
  4. Macro Excel pour un import vers access
    Par Nicola dans le forum Access
    Réponses: 6
    Dernier message: 21/02/2007, 15h50
  5. Problème pour exporter une table Access vers Excel
    Par PAULOM dans le forum Access
    Réponses: 22
    Dernier message: 02/05/2006, 13h42

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