Bonjour à tous,

J'ai développé un script Matlab qui fait appel à un fichier Excel qui lui même fait appel à une macro qui utilise un OLE object. Le but est d'extraire des images automatiquement dans un tableau .MAT. Et j'ai besoin de faire cet appel de macro au moins 1000fois. Le problème c'est que ca marche par exemple pour les 6 premiers cas et après ca plante donc je suis obligée de recommencer à partir du 7eme cas etc jusqu'a 1000, c'est un peu pénible. Quand ca plante j'ai ce message d'erreur: "Run-time error '1004' Activate method of OLEObject class failed".
Auriez-vous une idée du problème? Est-ce qu'il faut remettre à jour la sheet ou les cellules ou quelque chose comme ca?
Je vais tenter de vous montrer un peu mon code:

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
 
Excel = actxserver('Excel.Application');
file = 'ImagesExtraction.xls';
Workbook = invoke(Excel.Workbooks,'Open',file);
Application = Workbook.Application;
ActiveSheet =Excel.Activesheet;
 
for i =1:1000
 
        ActiveSheetRange = get(ActiveSheet,'Range','C20','C20');
        set(ActiveSheetRange,'Value','New.irs'); 
 
        % 1st path
        p = mon path;
        ActiveSheetRange = get(ActiveSheet,'Range','C32','C32');
        set(ActiveSheetRange,'Value',p);    
 
        % second path
        ActiveSheetRange = get(ActiveSheet,'Range','C33','C33');
        set(ActiveSheetRange,'Value',p2);
 
        %Name 
        ActiveSheetRange = get(ActiveSheet,'Range','C21','C21');
        set(ActiveSheetRange,'Value',name);
 
        %first image
        ActiveSheetRange = get(ActiveSheet,'Range','C23','C23');
        set(ActiveSheetRange,'Value',1);
 
        %last image
        ActiveSheetRange = get(ActiveSheet,'Range','C24','C24');
        set(ActiveSheetRange,'Value',100);
 
        %seqName
        ActiveSheetRange = get(ActiveSheet,'Range','C25','C25');
        set(ActiveSheetRange,'Value',seqName);
 
        %format .MAT
        ActiveSheetRange = get(ActiveSheet,'Range','C26','C26');
        set(ActiveSheetRange,'Value',2);
 
        % Call excel macro 
        invoke(Application,'Run','ImagesExtraction.xls!extraction');
 
end
Merci