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:
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