Bonjour à tous !

Je souhaite vous solliciter pour un petit soucis.

En résumé, j'ai un tableur excel que je remplis par Matlab. Après une multitude de calcul je souhaite avoir un seul résultat R dans cette boucle if :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
   if K==1
    elseif K==2
    elseif K==3
    elseif K==4
        FFLFacoH=readfis('FFLFacoH');
        R=evalfis([x1,x2],FFLFacoH);
    end
Ce résultat R je le transmet sur mon fichier excel avec cette boucle if :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
    if R>6
        range61=sprintf('%c%d:%c%d','A'+0,1+n,'A'+0,1+n);
        Excel.Worksheets.Item(3).Range(range61).Value=name;
    elseif 4.11<=R<=6
        range62=sprintf('%c%d:%c%d','A'+1,1+n,'A'+1,1+n);
        Excel.Worksheets.Item(3).Range(range62).Value=name;
    elseif R<4.11
        range63=sprintf('%c%d:%c%d','A'+2,1+n,'A'+2,1+n);
        Excel.Worksheets.Item(3).Range(range63).Value=name;
    end
Ces deux bouts de code se trouve dans cette boucle n :

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
for n=1:numel(list)
    filename=list(n).name;
    fid=fopen(filename,'r');
    data = strrep(fread(fid, [1 inf], '*char'), ',', '.'); 
    fclose(fid);
    T = textscan(data,'%f%f%f%f%f%f%f', 'CollectOutput', 1);
    for i=5:1:7
        Tmp=T{1}(5:end,i);
        [A(n,i) B(n,i)]=max(Tmp);
        y(n,i)=max(max(T{1}(5:end,i))).*0.1;
        P1(n,i)=find(Tmp(B(n,i)+1:end)<y(n,i),1,'first');
        P2(n,i)=find(Tmp(1:B(n,i))<y(n,i),1,'last');
        ENERGIE(n,i)=trapz(Tmp(P2(n,i):P1(n,i)+B(n,i)));
        RMS(n,i-4)=sqrt(mean(T{1}(P2(n,i):P1(n,i)+B(n,i),i-4).^2));
        La(n,i-4)=20*log10(RMS(n,i-4)/10^-6);
        Lv(n,i-4)=20*log10(RMS(n,i-4)/10^-9);
    end
    La(n,4:7)=0;
    Lv(n,4:7)=0;
    EFFORTT(n)=max(T{1}(5:end,4));
    EFFORTT=EFFORTT';
    DONNEE(n,:)=[mean(Lv(n,1:3)),mean(La(n,1:3)),mean(A(n,5:7)),mean(ENERGIE(n,5:7)),EFFORTT(n)];

    [pathstr, name, ext]=fileparts(filename);
    range = sprintf('%c%d','A'+0,4+n);
    range2 = sprintf('%c%d:%c%d','A'+1,5,'A'+5,4+n);
    Excel.Worksheets.Item(1).Range(range).Value=name;
    Excel.Worksheets.Item(1).Range(range2).Value=DONNEE;

    x1=DONNEE(1:end,2);
    x2=DONNEE(1:end,3);
    if K==1
    elseif K==2
    elseif K==3
    elseif K==4
        FFLFacoH=readfis('FFLFacoH');
        R=evalfis([x1,x2],FFLFacoH);
    end
    if R>6
        range61=sprintf('%c%d:%c%d','A'+0,1+n,'A'+0,1+n);
        Excel.Worksheets.Item(3).Range(range61).Value=name;
    elseif 4.11<=R<=6
        range62=sprintf('%c%d:%c%d','A'+1,1+n,'A'+1,1+n);
        Excel.Worksheets.Item(3).Range(range62).Value=name;
    elseif R<4.11
        range63=sprintf('%c%d:%c%d','A'+2,1+n,'A'+2,1+n);
        Excel.Worksheets.Item(3).Range(range63).Value=name;
    end
end
Donc en gros, à chaque itération je calcul un R, et pour chaque R je place le nom du fichier dans la colonne A,B ou C de mon tableur.

Et j'obtiens ceci pour le moment :

Tissus conformes aux critères	Tissus à remesurer ou vérifier manuellement	Tissus non conformes
	                              045639 T01 02 1028710	
	                              783375 1 Bas 01
Mon problème est multiple en fait :

1) Mes 2 noms sont dans la deuxième colonne or j'ai obtenu un R=0.2606 pour le premier et un R=5 pour le deuxième. Je devrais dans ce cas avoir mon premier nom dans la dernière colonne avec R<4.11 !

2) Je souhaiterais aussi éviter d'avoir des espaces entres les noms à écrire sur le tableur mais je n'ai pas trouvé un "range" adéquate ! Auriez-vous des idées ?