Bonjour à tous,

Je poste rarement sur les forums car je trouve quasiment tout le temps mes réponses en recherchant un peu. Mais cette fois, je ne trouve aucun pouvant réellement m'aider.

Je vous soumet donc mon soucis :

Je travaille sur Access 2002 et je développe donc une fonction qui me permet de récupérer des infos à partir d'un fichier Excel et les insère dans ma base. Jusque là aucun soucis ^^

A la première exécution tout se passe bien, mais si je relance une deuxième fois sans fermer ma base access j'obtiens la fameuse "erreur 91 : Variable objet ou variable de bloc With non définie".

Voici un bout de code pour illustrer :

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
 
    Dim xls As Excel.Application
    Dim xlClass As Excel.Workbook
    Dim db As DAO.Database
    Dim Res As DAO.Recordset
 
    path = "D:\"
    Set db = CurrentDb
    Set xls = CreateObject("Excel.application")
    xls.Visible = True
    Set xlClass = xls.Workbooks.Open(path & "burgos.xls")
    xlClass.Sheets(1).Activate
    With ActiveSheet
         lib = .Cells(2, 2) ' c'est ici que ça plante la 2ème fois
         ' Divers traitements
         ' ...
    End With
    xlClass.Close
    xls.Quit
    Set xls = Nothing
Arrivé à la ligne en gras lors de la deuxième exécution, j'ai une erreur 91. Cette erreur est normal étant donné qu'à ce moment là en debug je vois qu' ActiveSheet est à Nothing.

Ma question est donc la suivante : Pourquoi à ce moment, ActiveSheet est à Nothing ? Est-ce une erreur de désallocation mémoire ? Je ferme peut-être mal mon fichier Excel à la fin de la première exécution ?

Je vous remercie beaucoup par avance, j'ai 2 ou 3 applications dans le même cas ça serait très pratique de comprendre ceci !

Bonne journée à tous.