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