Bonjour

Je rencontre un problème "d'actualisation" d'enregistrement dans une table access.

Dans access (2003) j'ai un bouton qui déclenche l'ouverture d'un fichier excel (avec macro automatique à l'ouverture)
Cette macro Excel, écrit dans une table de la base access 2003 puis se ferme (autre instance)

Access 2003 lit alors cet enregistrement (Requete "R_import_temp") et fait un traitement derrière (import de fichier excel ayant pour nom le contenu de cet enregistrement)

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
  nom_fichier = "c:\macro.xlsm"
 
  Set retval = CreateObject("Excel.Application")
  Set Excel = retval.Workbooks.Open(nom_fichier)
  Set retval = Nothing
 
Set Db = CurrentDb.QueryDefs("R_import_temp")
Set lotcru = Db.OpenRecordset()
msgbox lotcru(0) & "TEST"
 
If lotcru(0) <> "annulée" Then
 
VarX = DLookup("[n° lot cru]", "cru", "[n° lot cru] = '" & lotcru(0) & "'")
If VarX <> "" Then
    Réponse = MsgBox("le lot " & lotcru(0) & " existe déjà dans la table." & vbCrLf & "Voulez vous le réimporter", vbCritical + vbYesNo + vbDefaultButton2, "ATTENTION")
    If Réponse = 7 Then
         Exit Sub
    Else
        DoCmd.RunSQL ("DELETE CRU.*, CRU.[n° lot cru] FROM CRU WHERE (((CRU.[n° lot cru])='" & lotcru(0) & "'));")
    End If
End If
  DoCmd.TransferSpreadsheet acImport, 8, "CRU", "C:\Import\" & lotcru(0) & ".XLS", True
  MsgBox "Lot " & lotcru(0) & " correctement importé"
  End If
Cela fonctionne, lors du premier lancement.

Pour le 2nd lancement : lors de la ligne msgbox lotcru(0) & "TEST" la variable est fausse (= celle du premier lancement) mais plus tard (cette même variable) dans le traitement celle-ci devient juste.
Je ne comprends pas pourquoi.

Mon but étant de lire une table temporaire access contenant un seul enregistrement alimenté par une macro excel externe.

Merci pour votre aide.