IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

[xlswrite1] Comment utiliser cette fonction


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 54
    Points : 18
    Points
    18
    Par défaut [xlswrite1] Comment utiliser cette fonction
    Bonjour,

    J'ai le même problème que Clairette ici
    Je ne sais pas quels morceaux de code mettre où...

    En gros, j'ai un programme qui utilise une centaine de fois la fonction xlswrite et qui écrit des choses dans 2 fichiers excel différents ('Fe_Mn1cut' et 'Synthèse_Fau_El.xls'. Les deux fichiers excel sont préalablement dans le répertoire du programme en question et présentent une ligne de titre.

    Voici mon programme (un peu long... la fonction xlswrite1 est utilisée en fin de programme):

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    552
    553
    554
    555
    556
    557
    558
    559
    560
    561
    562
    563
    564
    565
    566
    567
    568
    569
    570
    571
    572
    573
    574
    575
    576
    577
    578
    579
    580
    581
    582
    583
    584
    585
    586
    587
    588
    589
    590
    591
    592
    593
    594
    595
    596
    597
    598
    599
    600
    601
    602
    603
    604
    605
    606
    607
    608
    609
    610
    611
    612
    613
    614
    615
    616
    617
    618
    619
    620
    621
    622
    623
    624
    625
    626
    627
    628
    629
    630
    631
    632
    633
    634
    635
    636
    637
    638
    639
    640
    641
    642
    643
    644
    645
    646
    647
    648
    649
    650
    651
    652
    653
    654
    655
    656
    657
    % CHOIX Prog:
    % ==> Prog 23 = Initiation Pied G donc +0 pour Pas D
    %               Garder 1er et dernier DA
    %               Pas de 1ère OD mais garder 1ère OG
    %               -1 à G et rien à D car StepOnD(end)<StepOnG(end)
     
    clear all;close all;
     
    display '_________________________ Prog 23 _________________________'
     
    load('Fe_Mn1cut.dat');
    load('calibration.dat');
     
    t=Fe_Mn1cut(:,1);
    ChevilleD=Fe_Mn1cut(:,10);
    ChevilleG=Fe_Mn1cut(:,11);
    GenouD=Fe_Mn1cut(:,12);
    GenouG=Fe_Mn1cut(:,13);
    semelleD=Fe_Mn1cut(:,14);
    semelleG=Fe_Mn1cut(:,15);
    GenouD_calib=calibration(:,12);
    GenouG_calib=calibration(:,13);
    S=size(t);
    nb_obs=S(1,1);
    Freq_ech=t(end)/nb_obs;
     
    semelleD(1);
    semelleG(1);
    semelleD(nb_obs);
    semelleG(nb_obs);
     
     
    % Procédure de filtrage des données par rapport aux données théoriques
    %__________________________________________________________________________
     
    figure('color','w')
     
    % Tracé du signal non filtré
    subplot(2,1,1)
    plot(t,semelleD,'r-','linewidth',2)
    set(gca,'ylim',[min(semelleD(:)) max(semelleD(:))],'xlim',[min(t(:)) max(t(:))])
    title('Signal non filtré')
     
    % Vecteur des valeurs théoriques possibles
    appuis=[0;0.267;0.533;0.8;1.067;1.334;1.6;1.867;2.133;2.4;2.666;2.933;3.2;3.467;3.73;4];
     
    % Création d'un vecteur NaN correspondant à y filtré
    semelleDfiltr=nan(size(semelleD));
     
    % ALGORITHME A AMELIORER (CERTAINEMENT)
    % Arrondis des valeurs de y pour simplifier le test qui suit
    semelleD=round(100*semelleD)/100;
     
    % Comparaison de chaque valeur de y à chaque valeur théorique de appuis
    % Si y est presque égal à appuis(n) alors yfiltr=appuis(n);
    for n=1:numel(appuis)
     
        idx=abs(appuis(n)-semelleD)<0.05;
        semelleDfiltr(idx)=appuis(n);
     
    end
     
    % Interpolation des valeurs manquantes ("bruit") du signal filtré 
    idx=isnan(semelleDfiltr);
    semelleDfiltr(idx) = interp1(find(~idx), semelleDfiltr(~idx), find(idx), 'nearest');
     
    % Tracé du signal filtré
    subplot(2,1,2)
    plot(t,semelleDfiltr,'r-','linewidth',2)
    set(gca,'ylim',[min(semelleD(:)) max(semelleD(:))],'xlim',[min(t(:)) max(t(:))])
    title('Signal filtré')
     
     
    %__________________________________________________________________________
     
     
     
    % Cycle de marche _ Pied Droit ____________________________________________
     
    'Pied Droit'
     
    y=(semelleDfiltr~=0);
    y=diff([y; y(end)]);
    z=t(abs(y)>0);
     
    d=[inf abs(diff(z'))];
    idx=d>0.03;
     
    z(idx);
     
    T=z(idx);
     
    % Durée enjambée __________________________________________________________
     
    StepOnD=(T(2:2:end));
    StepOnD
     
    % Durée des différents cycles de marche ___________________________________
     
    n=1:(numel(StepOnD)-1);                          % A verifier à chaque fois
    StrideD=StepOnD(n+1)-StepOnD(n);
     
     
    % Durées des différentes phases de l'enjambée
    diff(T);
    Phases=diff(T)
     
    % Phase d'oscillation O
    'Phase d oscillation'
    OD=Phases(1:2:end)
    OD_analyse=OD(2:end);
     
    % Phase d'appui global AD
    'Phase d appui'
    AD=Phases(2:2:end)
     
     
    % Traitement Data Gonios _ Genou D ________________________________________
     
    for n=1:length(StrideD);                  % Temps en secondes correspondant
        for k=1:100;                          % à de 1 à 100 % de la durée
            res(k,n)=((k*StrideD(n))/100);    % totale de chacun des cycles.
        end
    end
     
    for m=1:length(StrideD);                  % Temps tenant compte du début de
        for k=1:100                           % chaque cycle de marche ajouté
        res2(k,m)=StepOnD(m)+res(k,m);        % au résultat précédant.
        end
    end
     
    R=res2/Freq_ech;                          % Position de chaque valeur clé
     
    R2=round(R);                              % Arrondi de la position
     
    Valeur_GenouD=GenouD(R2);                 % Valeur du genou à chaque position
     
     
    mark_D=find(calibration(:,16)~=0);         % Calibration
    mark_base=mark_D(1,1);
    mark1=mark_D(2,1);                         % 1er markeur = markeur GenouD    %%%%%%%%%%%%%%%%%%%%%%%%%% A vérifier à chaque fois %%%%%%%%%%%%%%%%%%%%%%%%%%%
    M1=GenouD_calib(mark1);
    M_base_D=GenouD_calib(mark_base);
    dif_mark1=abs(M_base_D-M1);                % Valeur du genou au marker D
     
    diffff1=abs((M_base_D-(Valeur_GenouD)));
     
    for n=1:100
    Moy_cyclesD(n,1)=mean(diffff1(n,:));       % Moyenne de tous les cycles
    end
     
    Valeur_GenouD_calib=(diffff1*90)/dif_mark1        % Valeur calibrée du genou à chaque position      %%%%%%%%% A reporter dans excel %%%%%%%%%%%
     
    Res_def_D=(Moy_cyclesD*90)/dif_mark1                % Moyenne calibrée des cycles
     
    plot(Res_def_D)                              % Figure
     
    for n=1:100
    Std_cyclesD(n,1)=std(diffff1(n,:));   % Ecart type de tous les cycles
    end
     
    Res_def_D_std=((Std_cyclesD*90)/dif_mark1);
     
    %______________________________________________________________________Pied Gauche ___________________________________________________________________________
     
    % Procédure de filtrage des données par rapport aux données théoriques
    %__________________________________________________________________________
     
     
    figure('color','w')
     
    % Tracé du signal non filtré
    subplot(2,1,1)
    plot(t,semelleG,'r-','linewidth',2)
    set(gca,'ylim',[min(semelleG(:)) max(semelleG(:))],'xlim',[min(t(:)) max(t(:))])
    title('Signal non filtré')
     
    % Vecteur des valeurs théoriques possibles
    appuis=[0;0.267;0.533;0.8;1.067;1.334;1.6;1.867;2.133;2.4;2.666;2.933;3.2;3.467;3.73;4];
     
    % Création d'un vecteur NaN correspondant à y filtré
    semelleGfiltr=nan(size(semelleG));
     
    % ALGORITHME A AMELIORER (CERTAINEMENT)
    % Arrondis des valeurs de y pour simplifier le test qui suit
    semelleG=round(100*semelleG)/100;
     
    % Comparaison de chaque valeur de y à chaque valeur théorique de appuis
    % Si y est presque égal à appuis(n) alors yfiltr=appuis(n);
    for n=1:numel(appuis)
     
        idx=abs(appuis(n)-semelleG)<0.05;
        semelleGfiltr(idx)=appuis(n);
     
    end
     
    % Interpolation des valeurs manquantes ("bruit") du signal filtré 
    idx=isnan(semelleGfiltr);
    semelleGfiltr(idx) = interp1(find(~idx), semelleGfiltr(~idx), find(idx), 'nearest');
     
    % Tracé du signal filtré
    subplot(2,1,2)
    plot(t,semelleGfiltr,'r-','linewidth',2)
    set(gca,'ylim',[min(semelleG(:)) max(semelleG(:))],'xlim',[min(t(:)) max(t(:))])
    title('Signal filtré')
     
     
    % _________________________________________________________________________
     
     
    % Recueil des données G ___________________________________________________
     
    'Pied Gauche'
     
    y2=(semelleGfiltr~=0);
    y2=diff([y2; y2(end)]);
    z2=t(abs(y2)>0);
     
    d2=[inf abs(diff(z2'))];
    idx=d2>0.03;
     
    z2(idx);
     
    T2=z2(idx);
     
    % Durée enjambée
    StepOnG=(T2(1:2:end));
    StepOnG
     
    n=1:(numel(StepOnG)-1);                         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% A verifier à chaque fois
    StrideG=StepOnG(n+1)-StepOnG(n);
     
     
    % Durées des différentes phases de l'enjambée
    diff(T2);
    Phases2=diff(T2);
    Phases2
     
    % Phase d'oscillation gauche OG
    'Phase d oscillation gauche'
    OG=Phases2(2:2:end)
    OG_analyse=OG(1:end);
     
    % Phase d'appui gauche AG
    'Phase d appui gauche'
    AG=Phases2(1:2:end)
     
     
     
    % Traitement Data Gonios___________________________________________________
     
    for o=1:length(StrideG);                    % Temps en secondes correspondant
        for k=1:100;                            % à de 1 à 100 % de la durée
            res_G(k,o)=((k*StrideG(o))/100);    % totale de chacun des cycles.
        end
    end
     
    for o=1:length(StrideG);                    % Temps tenant compte du début de
        for k=1:100                             % chaque cycle de marche ajouté
        res2_G(k,o)=StepOnG(o)+res_G(k,o);      % au résultat précédant.
        end
    end
     
    R_G=res2_G/Freq_ech;                        % Position de chaque valeur clé
     
    R2_G=round(R_G);                            % Arrondi de la position
     
    Valeur_GenouG=GenouG(R2_G);                 % Valeur du genou à chaque position
     
    mark_G=find(calibration(:,16)~=0);          % Calibration
    mark2=mark_G(3,1);                          % 1er markeur = markeur GenouD    %%%%%%%%%%%%%%%%%%%%%%%%%% A vérifier à chaque fois %%%%%%%%%%%%%%%%%%%%%%%%%%%
    M2=GenouG_calib(mark2);
    M_base_G=GenouG_calib(mark_base);
    dif_mark2=abs(M_base_G-M2)                  % Valeur du genou au marker D
     
    diffff=abs(M_base_G-(Valeur_GenouG));   
     
    for n=1:100
    Moy_cyclesG(n,1)=mean(diffff(n,:));   % Moyenne de tous les cycles
    end
     
    Valeur_GenouG_calib=(diffff*90)/dif_mark2   % Valeur calibrée du genou à chaque position      %%%%%%%%% A reporter dans excel %%%%%%%%%%%
     
    Res_def_G=((Moy_cyclesG*90)/dif_mark2)               % Moyenne calibrée des cycles
     
    plot(Res_def_G)                             % Figure
     
    for n=1:100
    Std_cyclesG(n,1)=std(diffff(n,:));   % Ecart type de tous les cycles
    end
     
    Res_def_G_std=((Std_cyclesG*90)/dif_mark2);
     
    % Détermination des phases de double appui ________________________________
    idx=semelleDfiltr>0;
    idx=semelleGfiltr>0;
    idx=(semelleDfiltr&semelleGfiltr>0);
    idx=t(semelleDfiltr&semelleGfiltr>0);
    z3=t(semelleDfiltr&semelleGfiltr>0);
     
    [nbl,nbc]=size(z3);
    T3=z3(1,1);
    for x=1:nbl-1;
        difference=z3(x+1,1)-z3(x,1);
        if difference >0.0008;
            T3(2,end)=z3(x,1);
            T3(1,end+1)=z3(x+1,1);
        else
        end
    end
    T3(2,end)=z3(end,1);
     
    T3(3,:)=T3(2,:)-T3(1,:)
    T4=T3';
    T5=T4(1:end,3);
     
     
     
    % ______________________________ Cycle Droit ______________________________
     
    % Pourcentage de durée de chaque phase du cycle
     
    % Pourcentage de durée de chaque phase du cycle
     
    % Durée de simple appui
     
    n=1:numel(T5)-1              % Le "-1" est fonction du pied qui initie la marche
    Result=T5(n)+T5(n+1)
     
    Result1=Result(2:2:end);
    AD_simple=AD(1:numel(Result1))-Result1;
     
    Debut_DA_D=T5(2:2:end);
    Fin_DA_D=T5(3:2:end);
    Debut_DA_D_analyse=Debut_DA_D(1:numel(StrideD));
    Fin_DA_D_analyse=Fin_DA_D(1:numel(StrideD));
     
    for n=1:numel(StrideD)
    Debut_DA_D_analyse2(n,1)=(Debut_DA_D_analyse(n)*100)/StrideD(n)
    end
    Debut_DA_D_analyse2=Debut_DA_D_analyse2(:,1);
     
    for n=1:numel(StrideD)
    AD_simple_analyse2(n,1)=(AD_simple(n)*100)/StrideD(n)
    end
    AD_simple_analyse2=AD_simple_analyse2(:,1);
     
    for n=1:numel(StrideD)
    Fin_DA_D_analyse2(n,1)=(Fin_DA_D_analyse(n)*100)/StrideD(n)
    end
    Fin_DA_D_analyse2=Fin_DA_D_analyse2(:,1);
     
    for n=1:numel(StrideD)
    OD_analyse2(n,1)=(OD_analyse(n)*100)/StrideD(n)
    end
    OD_analyse2=OD_analyse2(:,1);
     
    % Pourcentage de début de chaque phase du cycle
     
    Debut_AD_simple=Debut_DA_D_analyse2;
    Debut_2nd_DA_D=Debut_DA_D_analyse2+AD_simple_analyse2;
    Debut_OD=Debut_DA_D_analyse2+AD_simple_analyse2+Fin_DA_D_analyse2;
    Total_D=Debut_DA_D_analyse2+AD_simple_analyse2+Fin_DA_D_analyse2+OD_analyse2;
     
    Mean(Debut_AD_simple);
    Mean(Debut_2nd_DA_D);
    Mean(Debut_OD);
     
    % _________________________________________________________________________
     
     
    % ______________________________ Cycle Gauche ______________________________
     
    % Durée de simple appui
     
    Result2=Result(1:2:end);
    AG_simple=AG(1:numel(Result2))-Result2;
     
    Debut_DA_G=T5(1:2:end);
    Fin_DA_G=T5(2:2:end);
    Debut_DA_G_analyse=Debut_DA_G(1:numel(StrideG));
    Fin_DA_G_analyse=Fin_DA_G(1:numel(StrideG));
     
    for n=1:numel(StrideG)
    Debut_DA_G_analyse2(n,1)=(Debut_DA_G_analyse(n)*100)/StrideG(n)
    end
    Debut_DA_G_analyse2=Debut_DA_G_analyse2(:,1);
     
    for n=1:numel(StrideG)
    AG_simple_analyse2(n,1)=(AG_simple(n)*100)/StrideG(n)
    end
    AG_simple_analyse2=AG_simple_analyse2(:,1);
     
    for n=1:numel(StrideG)
    Fin_DA_G_analyse2(n,1)=(Fin_DA_G_analyse(n)*100)/StrideG(n)
    end
    Fin_DA_G_analyse2=Fin_DA_G_analyse2(:,1);
     
    for n=1:numel(StrideG)
    OG_analyse2(n,1)=(OG_analyse(n)*100)/StrideG(n)
    end
    OG_analyse2=OG_analyse2(:,1);
     
    % Pourcentage de début de chaque phase du cycle
     
    Debut_AG_simple=Debut_DA_G_analyse2;
    Debut_2nd_DA_G=Debut_DA_G_analyse2+AG_simple_analyse2;
    Debut_OG=Debut_DA_G_analyse2+AG_simple_analyse2+Fin_DA_G_analyse2;
    Total_G=Debut_DA_G_analyse2+AG_simple_analyse2+Fin_DA_G_analyse2+OG_analyse2;
     
    Mean(Debut_AG_simple);
    Mean(Debut_2nd_DA_G);
    Mean(Debut_OG);
     
    % _________________________________________________________________________
     
     
     
    % Autres données __________________________________________________________
     
    % Durée Pas Gauche
    StepOnG2=[StepOnG(1:end-1,1)];
    DureePasG=StepOnD-StepOnG2;
     
     
    % Durée Pas Droit
    StepOnD2=[0;StepOnD(1:end,1)];
    DureePasD=StepOnG-StepOnD2;
     
    Pas=[DureePasD;DureePasG];
     
    % Temps de parcours (en s)
    t(end);
     
    % Vitesse de marche (en m.s-1)
    Vitesse=8/(t(end));
     
    % Cadence
    Cadence_moy=(60*(numel(Pas)))/(t(end));
    Cadence_instant_D=60./DureePasD;
    Cadence_instant_G=60./DureePasG;
    Cadence_instant=[Cadence_instant_D;Cadence_instant_G];
     
    % Longueur de pas
    Lg_pas=8/(numel(Pas));
     
    % Combinaison D + G pour report data feuille 2
    Cadence_instant=[Cadence_instant_D;Cadence_instant_G];
    Stride=[StrideD;StrideG];
    Debut_DA_analyse=[Debut_DA_D_analyse;Debut_DA_G_analyse];
    A_simple=[AD_simple;AG_simple];
    Fin_DA_analyse=[Fin_DA_D_analyse;Fin_DA_G_analyse];
    O_analyse=[OD_analyse;OG_analyse];
    Debut_DA_analyse2=[Debut_DA_D_analyse2;Debut_DA_G_analyse2];
    A_simple_analyse2=[AD_simple_analyse2;AG_simple_analyse2];
    Fin_DA_analyse2=[Fin_DA_D_analyse2;Fin_DA_G_analyse2];
    O_analyse2=[OD_analyse2;OG_analyse2];
    Debut_A_simple=[Debut_AD_simple;Debut_AG_simple];
    Debut_2nd_DA=[Debut_2nd_DA_D;Debut_2nd_DA_G];
    Debut_O=[Debut_OD;Debut_OG];
    Total=[Total_D;Total_G];
    Res_def=[Res_def_D;Res_def_G];
    Valeur_Genou_calib=[Valeur_GenouD_calib Valeur_GenouG_calib];
    for n=1:100
    Moy_cycles(n,1)=mean(Valeur_Genou_calib(n,:));   % Moyenne de tous les cycles
    end
    for n=1:100
        Std_cycles(n,1)=std(Valeur_Genou_calib(n,:));   % Ecarts types de tous les cycles (D + G)
    end
     
    % Max gonios
    [maxi_G,index_G]=max(Valeur_GenouG_calib);
    [maxi_D,index_D]=max(Valeur_GenouD_calib);
    [maxi,index]=max(Valeur_Genou_calib);
     
    % _________________________________________________________________________
     
    % Reporter les données dans un la feuille 1 d'excel ______________________________
    xlswrite1('Fe_Mn1cut.xls', t(end), 'Feuil1', 'A2')
    xlswrite1('Fe_Mn1cut.xls', Vitesse, 'Feuil1', 'B2')
    xlswrite1('Fe_Mn1cut.xls', Cadence_moy, 'Feuil1', 'C2')
    xlswrite1('Fe_Mn1cut.xls', Cadence_instant_D, 'Feuil1', 'D2')
    xlswrite1('Fe_Mn1cut.xls', Cadence_instant_G, 'Feuil1', 'E2')
    xlswrite1('Fe_Mn1cut.xls', Lg_pas, 'Feuil1', 'F2')
    xlswrite1('Fe_Mn1cut.xls', StrideD, 'Feuil1', 'G2')
    xlswrite1('Fe_Mn1cut.xls', StrideG, 'Feuil1', 'H2')
    xlswrite1('Fe_Mn1cut.xls', DureePasD, 'Feuil1', 'I2')
    xlswrite1('Fe_Mn1cut.xls', DureePasG, 'Feuil1', 'J2')
    xlswrite1('Fe_Mn1cut.xls', Debut_DA_D_analyse, 'Feuil1', 'K2')
    xlswrite1('Fe_Mn1cut.xls', AD_simple, 'Feuil1', 'L2')
    xlswrite1('Fe_Mn1cut.xls', Fin_DA_D_analyse, 'Feuil1', 'M2')
    xlswrite1('Fe_Mn1cut.xls', OD_analyse, 'Feuil1', 'N2')
    xlswrite1('Fe_Mn1cut.xls', Debut_DA_G_analyse, 'Feuil1', 'O2')
    xlswrite1('Fe_Mn1cut.xls', AG_simple, 'Feuil1', 'P2')
    xlswrite1('Fe_Mn1cut.xls', Fin_DA_G_analyse, 'Feuil1', 'Q2')
    xlswrite1('Fe_Mn1cut.xls', OG_analyse, 'Feuil1', 'R2')
    xlswrite1('Fe_Mn1cut.xls', Debut_DA_D_analyse2, 'Feuil1', 'S2')
    xlswrite1('Fe_Mn1cut.xls', AD_simple_analyse2, 'Feuil1', 'T2')
    xlswrite1('Fe_Mn1cut.xls', Fin_DA_D_analyse2, 'Feuil1', 'U2')
    xlswrite1('Fe_Mn1cut.xls', OD_analyse2, 'Feuil1', 'V2')
    xlswrite1('Fe_Mn1cut.xls', Debut_DA_G_analyse2, 'Feuil1', 'W2')
    xlswrite1('Fe_Mn1cut.xls', AG_simple_analyse2, 'Feuil1', 'X2')
    xlswrite1('Fe_Mn1cut.xls', Fin_DA_G_analyse2, 'Feuil1', 'Y2')
    xlswrite1('Fe_Mn1cut.xls', OG_analyse2, 'Feuil1', 'Z2')
    xlswrite1('Fe_Mn1cut.xls', Debut_AD_simple, 'Feuil1', 'AA2')
    xlswrite1('Fe_Mn1cut.xls', Debut_2nd_DA_D, 'Feuil1', 'AB2')
    xlswrite1('Fe_Mn1cut.xls', Debut_OD, 'Feuil1', 'AC2')
    xlswrite1('Fe_Mn1cut.xls', Debut_AG_simple, 'Feuil1', 'AD2')
    xlswrite1('Fe_Mn1cut.xls', Debut_2nd_DA_G, 'Feuil1', 'AE2')
    xlswrite1('Fe_Mn1cut.xls', Debut_OG, 'Feuil1', 'AF2')
    xlswrite1('Fe_Mn1cut.xls', Total_D, 'Feuil1', 'AG2')
    xlswrite1('Fe_Mn1cut.xls', Total_G, 'Feuil1', 'AH2')
    xlswrite1('Fe_Mn1cut.xls', Res_def_D, 'Feuil1', 'AI2')
    xlswrite1('Fe_Mn1cut.xls', Res_def_G, 'Feuil1', 'AI107')
    xlswrite1('Fe_Mn1cut.xls', Res_def_D_std, 'Feuil1', 'AJ2')
    xlswrite1('Fe_Mn1cut.xls', Res_def_G_std, 'Feuil1', 'AJ107')
    xlswrite1('Fe_Mn1cut.xls', Valeur_GenouD_calib, 'Feuil1', 'AK2')
    xlswrite1('Fe_Mn1cut.xls', Valeur_GenouG_calib, 'Feuil1', 'AK107')
    xlswrite1('Fe_Mn1cut.xls', maxi_D, 'Feuil1', 'AK103')
    xlswrite1('Fe_Mn1cut.xls', index_D, 'Feuil1', 'AK104')
    xlswrite1('Fe_Mn1cut.xls', maxi_G, 'Feuil1', 'AK208')
    xlswrite1('Fe_Mn1cut.xls', index_G, 'Feuil1', 'AK209')
     
     
    % Reporter les valeurs, côtés D et G combinés dans la feuille 2 d'excel
     
    xlswrite1('Fe_Mn1cut.xls', Cadence_instant, 'Feuil2', 'A2')
    xlswrite1('Fe_Mn1cut.xls', Stride, 'Feuil2', 'B2')
    xlswrite1('Fe_Mn1cut.xls', Pas, 'Feuil2', 'C2')
    xlswrite1('Fe_Mn1cut.xls', Debut_DA_analyse, 'Feuil2', 'D2')
    xlswrite1('Fe_Mn1cut.xls', A_simple, 'Feuil2', 'E2')
    xlswrite1('Fe_Mn1cut.xls', Fin_DA_analyse, 'Feuil2', 'F2')
    xlswrite1('Fe_Mn1cut.xls', O_analyse, 'Feuil2', 'G2')
    xlswrite1('Fe_Mn1cut.xls', Debut_DA_analyse2, 'Feuil2', 'H2')
    xlswrite1('Fe_Mn1cut.xls', A_simple_analyse2, 'Feuil2', 'I2')
    xlswrite1('Fe_Mn1cut.xls', Fin_DA_analyse2, 'Feuil2', 'J2')
    xlswrite1('Fe_Mn1cut.xls', O_analyse2, 'Feuil2', 'K2')
    xlswrite1('Fe_Mn1cut.xls', Debut_A_simple, 'Feuil2', 'L2')
    xlswrite1('Fe_Mn1cut.xls', Debut_2nd_DA, 'Feuil2', 'M2')
    xlswrite1('Fe_Mn1cut.xls', Debut_O, 'Feuil2', 'N2')
    xlswrite1('Fe_Mn1cut.xls', Total, 'Feuil2', 'O2')
    xlswrite1('Fe_Mn1cut.xls', Moy_cycles, 'Feuil2', 'P2')
    xlswrite1('Fe_Mn1cut.xls', Std_cycles, 'Feuil2', 'Q2')
    xlswrite1('Fe_Mn1cut.xls', Valeur_Genou_calib, 'Feuil2', 'R2')
    xlswrite1('Fe_Mn1cut.xls', maxi, 'Feuil2', 'R103')
    xlswrite1('Fe_Mn1cut.xls', index, 'Feuil2', 'R104')
     
    % Reporter dans la feuille 1 d'excel (fichier Synthèse)
     
    % Les moyennes 
     
    xlswrite1('Synthèse_Fau_El.xls', t(end), 'Mn1', 'B2')
    xlswrite1('Synthèse_Fau_El.xls', Vitesse, 'Mn1', 'B3')
    xlswrite1('Synthèse_Fau_El.xls', Cadence_moy, 'Mn1', 'B4')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Cadence_instant_D), 'Mn1', 'B5')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Cadence_instant_G), 'Mn1', 'B6')
    xlswrite1('Synthèse_Fau_El.xls', Lg_pas, 'Mn1', 'B7')
    xlswrite1('Synthèse_Fau_El.xls', Mean(StrideD), 'Mn1', 'B8')
    xlswrite1('Synthèse_Fau_El.xls', Mean(StrideG), 'Mn1', 'B9')
    xlswrite1('Synthèse_Fau_El.xls', Mean(DureePasD), 'Mn1', 'B10')
    xlswrite1('Synthèse_Fau_El.xls', Mean(DureePasG), 'Mn1', 'B11')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_DA_D_analyse), 'Mn1', 'B12')
    xlswrite1('Synthèse_Fau_El.xls', Mean(AD_simple), 'Mn1', 'B13')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Fin_DA_D_analyse), 'Mn1', 'B14')
    xlswrite1('Synthèse_Fau_El.xls', Mean(OD_analyse), 'Mn1', 'B15')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_DA_G_analyse), 'Mn1', 'B16')
    xlswrite1('Synthèse_Fau_El.xls', Mean(AG_simple), 'Mn1', 'B17')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Fin_DA_G_analyse), 'Mn1', 'B18')
    xlswrite1('Synthèse_Fau_El.xls', Mean(OG_analyse), 'Mn1', 'B19')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_DA_D_analyse2), 'Mn1', 'B20')
    xlswrite1('Synthèse_Fau_El.xls', Mean(AD_simple_analyse2), 'Mn1', 'B21')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Fin_DA_D_analyse2), 'Mn1', 'B22')
    xlswrite1('Synthèse_Fau_El.xls', Mean(OD_analyse2), 'Mn1', 'B23')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_DA_G_analyse2), 'Mn1', 'B24')
    xlswrite1('Synthèse_Fau_El.xls', Mean(AG_simple_analyse2), 'Mn1', 'B25')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Fin_DA_G_analyse2), 'Mn1', 'B26')
    xlswrite1('Synthèse_Fau_El.xls', Mean(OG_analyse2), 'Mn1', 'B27')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_AD_simple), 'Mn1', 'B28')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_2nd_DA_D), 'Mn1', 'B29')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_OD), 'Mn1', 'B30')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_AG_simple), 'Mn1', 'B31')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_2nd_DA_G), 'Mn1', 'B32')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_OG), 'Mn1', 'B33')
     
    xlswrite1('Synthèse_Fau_El.xls', Mean(Cadence_instant), 'Mn1', 'B35')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Stride), 'Mn1', 'B36')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Pas), 'Mn1', 'B37')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_DA_analyse), 'Mn1', 'B38')
    xlswrite1('Synthèse_Fau_El.xls', Mean(A_simple), 'Mn1', 'B39')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Fin_DA_analyse), 'Mn1', 'B40')
    xlswrite1('Synthèse_Fau_El.xls', Mean(O_analyse), 'Mn1', 'B41')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_DA_analyse2), 'Mn1', 'B42')
    xlswrite1('Synthèse_Fau_El.xls', Mean(A_simple_analyse2), 'Mn1', 'B43')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Fin_DA_analyse2), 'Mn1', 'B44')
    xlswrite1('Synthèse_Fau_El.xls', Mean(O_analyse2), 'Mn1', 'B45')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_A_simple), 'Mn1', 'B46')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_2nd_DA), 'Mn1', 'B47')
    xlswrite1('Synthèse_Fau_El.xls', Mean(Debut_O), 'Mn1', 'B48')
    xlswrite1('Synthèse_Fau_El.xls', Mean(maxi_D), 'Mn1', 'B50')
    xlswrite1('Synthèse_Fau_El.xls', Mean(index_D), 'Mn1', 'B51')
    xlswrite1('Synthèse_Fau_El.xls', Mean(maxi_G), 'Mn1', 'B52')
    xlswrite1('Synthèse_Fau_El.xls', Mean(index_G), 'Mn1', 'B53')
    xlswrite1('Synthèse_Fau_El.xls', Mean(maxi), 'Mn1', 'B54')
    xlswrite1('Synthèse_Fau_El.xls', Mean(index), 'Mn1', 'B55')
     
     
    % Les écarts types
     
    xlswrite1('Synthèse_Fau_El.xls', std(Cadence_instant_D), 'Mn1', 'C5')
    xlswrite1('Synthèse_Fau_El.xls', std(Cadence_instant_G), 'Mn1', 'C6')
    xlswrite1('Synthèse_Fau_El.xls', std(StrideD), 'Mn1', 'C8')
    xlswrite1('Synthèse_Fau_El.xls', std(StrideG), 'Mn1', 'C9')
    xlswrite1('Synthèse_Fau_El.xls', std(DureePasD), 'Mn1', 'C10')
    xlswrite1('Synthèse_Fau_El.xls', std(DureePasG), 'Mn1', 'C11')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_DA_D_analyse), 'Mn1', 'C12')
    xlswrite1('Synthèse_Fau_El.xls', std(AD_simple), 'Mn1', 'C13')
    xlswrite1('Synthèse_Fau_El.xls', std(Fin_DA_D_analyse), 'Mn1', 'C14')
    xlswrite1('Synthèse_Fau_El.xls', std(OD_analyse), 'Mn1', 'C15')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_DA_G_analyse), 'Mn1', 'C16')
    xlswrite1('Synthèse_Fau_El.xls', std(AG_simple), 'Mn1', 'C17')
    xlswrite1('Synthèse_Fau_El.xls', std(Fin_DA_G_analyse), 'Mn1', 'C18')
    xlswrite1('Synthèse_Fau_El.xls', std(OG_analyse), 'Mn1', 'C19')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_DA_D_analyse2), 'Mn1', 'C20')
    xlswrite1('Synthèse_Fau_El.xls', std(AD_simple_analyse2), 'Mn1', 'C21')
    xlswrite1('Synthèse_Fau_El.xls', std(Fin_DA_D_analyse2), 'Mn1', 'C22')
    xlswrite1('Synthèse_Fau_El.xls', std(OD_analyse2), 'Mn1', 'C23')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_DA_G_analyse2), 'Mn1', 'C24')
    xlswrite1('Synthèse_Fau_El.xls', std(AG_simple_analyse2), 'Mn1', 'C25')
    xlswrite1('Synthèse_Fau_El.xls', std(Fin_DA_G_analyse2), 'Mn1', 'C26')
    xlswrite1('Synthèse_Fau_El.xls', std(OG_analyse2), 'Mn1', 'C27')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_AD_simple), 'Mn1', 'C28')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_2nd_DA_D), 'Mn1', 'C29')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_OD), 'Mn1', 'C30')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_AG_simple), 'Mn1', 'C31')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_2nd_DA_G), 'Mn1', 'C32')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_OG), 'Mn1', 'C33')
     
    xlswrite1('Synthèse_Fau_El.xls', std(Cadence_instant), 'Mn1', 'C35')
    xlswrite1('Synthèse_Fau_El.xls', std(Stride), 'Mn1', 'C36')
    xlswrite1('Synthèse_Fau_El.xls', std(Pas), 'Mn1', 'C37')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_DA_analyse), 'Mn1', 'C38')
    xlswrite1('Synthèse_Fau_El.xls', std(A_simple), 'Mn1', 'C39')
    xlswrite1('Synthèse_Fau_El.xls', std(Fin_DA_analyse), 'Mn1', 'C40')
    xlswrite1('Synthèse_Fau_El.xls', std(O_analyse), 'Mn1', 'C41')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_DA_analyse2), 'Mn1', 'C42')
    xlswrite1('Synthèse_Fau_El.xls', std(A_simple_analyse2), 'Mn1', 'C43')
    xlswrite1('Synthèse_Fau_El.xls', std(Fin_DA_analyse2), 'Mn1', 'C44')
    xlswrite1('Synthèse_Fau_El.xls', std(O_analyse2), 'Mn1', 'C45')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_A_simple), 'Mn1', 'C46')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_2nd_DA), 'Mn1', 'C47')
    xlswrite1('Synthèse_Fau_El.xls', std(Debut_O), 'Mn1', 'C48')
    xlswrite1('Synthèse_Fau_El.xls', std(maxi_D), 'Mn1', 'C50')
    xlswrite1('Synthèse_Fau_El.xls', std(index_D), 'Mn1', 'C51')
    xlswrite1('Synthèse_Fau_El.xls', std(maxi_G), 'Mn1', 'C52')
    xlswrite1('Synthèse_Fau_El.xls', std(index_G), 'Mn1', 'C53')
    xlswrite1('Synthèse_Fau_El.xls', std(maxi), 'Mn1', 'C54')
    xlswrite1('Synthèse_Fau_El.xls', std(index), 'Mn1', 'C55')
    Où est-ce que je dois intégrer les deux bouts de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Excel = actxserver ('Excel.Application');
    File='C:\YourFileFolder\FileName';
    if ~exist(File,'file')
    ExcelWorkbook = Excel.workbooks.Add;
    ExcelWorkbook.SaveAs(File,1);
    ExcelWorkbook.Close(false);
    end
    invoke(Excel.Workbooks,'Open',File);
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    invoke(Excel.ActiveWorkbook,'Save');
    Excel.Quit
    Excel.delete
    clear Excel
    Est-ce que à la place de "YourFileFolder" je dois vraiment écrire le chemin de mon fichier?
    Et de quel fichier s'agit-il quand il disent "FileName"? Est-ce le fichier excel de destination?

    Et dans le programme de la fonction xlswrite faut il également remplacer "YourFileFolder" par notre chemin?

    C'est difficile d'utiliser un programme dont on ne comprend pas le fonctionnement!

    Merci pour votre aide,

    Murielle

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Tu dois insérer les deux codes avant et après les multiples appels à XLSWRITE1 :


    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
    % _________________________________________________________________________
     
    % Reporter les données dans un la feuille 1 d'excel ______________________________
    Excel = actxserver ('Excel.Application');
    File='C:\...\'Fe_Mn1cut.xls';
    if ~exist(File,'file')
    ExcelWorkbook = Excel.workbooks.Add;
    ExcelWorkbook.SaveAs(File,1);
    ExcelWorkbook.Close(false);
    end
    invoke(Excel.Workbooks,'Open',File);
     
    xlswrite1(File, t(end), 'Feuil1', 'A2')
    xlswrite1(File, Vitesse, 'Feuil1', 'B2')
    <...>
    xlswrite1(File, Valeur_Genou_calib, 'Feuil2', 'R2')
    xlswrite1(File, maxi, 'Feuil2', 'R103')
    xlswrite1(File, index, 'Feuil2', 'R104')
     
    invoke(Excel.ActiveWorkbook,'Save');
    Excel.Quit
    Excel.delete
    clear Excel
    Et faire de même pour le second fichier.

    La variable File doit contenir le chemin d'accès complet au fichier xls (nom du répertoire + nom du fichier)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    D'accord, merci pour votre réponse.
    Mais étant donné qu'on doit aussi écrire le chemin de notre fichier dans le programme xlswrite1, comment faire puisque j'ai 2 fichiers de destination différents? Je dois créer un programme xlswrite2 par exemple??

    Merci,
    Murielle

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Euh la je ne te suis pas...

    Le "nom" du fichier xls est stokée dans la variable File.
    Et c'est cette variable qui est transmise à la fonction XLSWRITE1.

    Donc tu peux dans problème faire ceci :

    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
    Excel = actxserver ('Excel.Application');
    File='C:\...\'Fe_Mn1cut.xls';
    invoke(Excel.Workbooks,'Open',File);
     
    xlswrite1(File, t(end), 'Feuil1', 'A2')
     
    invoke(Excel.ActiveWorkbook,'Save');
    Excel.Quit
    Excel.delete
    clear Excel
     
    Excel = actxserver ('Excel.Application');
    File='C:\...\'Synthèse_Fau_El.xls';
    invoke(Excel.Workbooks,'Open',File);
     
    xlswrite1(File, t(end), 'Mn1', 'B2')
     
    invoke(Excel.ActiveWorkbook,'Save');
    Excel.Quit
    Excel.delete
    clear Excel
    Non ?

    Tu peux même éviter de fermer Excel entre les deux écritures :

    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
    Excel = actxserver ('Excel.Application');
    File='C:\...\'Fe_Mn1cut.xls';
    invoke(Excel.Workbooks,'Open',File);
    
    xlswrite1(File, t(end), 'Feuil1', 'A2')
    
    invoke(Excel.ActiveWorkbook,'Save');
    invoke(Excel.ActiveWorkbook,'Close');
    
    File='C:\...\'Synthèse_Fau_El.xls';
    invoke(Excel.Workbooks,'Open',File);
    
    xlswrite1(File, t(end), 'Mn1', 'B2')
    
    invoke(Excel.ActiveWorkbook,'Save');
    Excel.Quit
    Excel.delete
    clear Excel
    A tester
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    Ca marche supe bien, merci!!!
    C'est un sacré gain de temps!

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    Eh ben finalement, ça ne marche qu'une fois sur deux... je ne comprends pas bien pourquoi.
    Parfois, quand je lance mon programme matlab, ça me donne un message excel disant:

    Un fichier nommé 'Fe_Mn1cut.xls' existe déjà à cet emplacement. Voulez vous le remplacer?

    Si je clique sur oui, ça me remet ce même message indéfiniment.
    Si je clique sur non, j'ai un message d'erreur matlab qui s'affiche et qui dit:

    ??? Error using ==> run at 56
    Error using ==> run at 69
    Invoke Error, Dispatch Exception:
    Source: Microsoft Office Excel
    Description: 'Fe_Mn1cut.xls' est en lecture seule. Pour en enregistrer une copie, cliquez sur OK, et
    donnez au classeur un nom différent dans la boîte de dialogue Enregistrer sous.
    Help File: C:\Program Files\Microsoft Office\OFFICE11\1036\xlmain11.chm
    Help Context ID: 0
    Et quand j'essaye d'ouvrir mon fichier excel il est en lecture seule et il est vide...

    Que faire??

    Merci,
    Murielle

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    J'ai vu que plusieurs personnes semblaient avoir ce problème sur le forum. Et à chaque fois le problème n'a pas été résolu. Faut-il donc que j'abandonne l'idée d'utiliser xlswrite1??
    Il n'y a personne qui puisse m'aider? Je ne comprends pas car ça a marché une fois...

  8. #8
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Si je ne me trompe la fois où ça a marché le fichier n'existait pas ?
    As-tu besoin de rajouter des choses dans tes ficheirs ou pars-tu du principe qu'ils sont vides au départ ?

    Dans le 2ème cas tu pourrais les supprimer dès le début de ton programme pour ne pas avoir le souci.

    Dans le 1er : essayer d'abord "à la main" d'enlever la lecture seule avant de lancer le programme, puis si cela fonctionne le faire programmaticalement (avec la fonction DOS et je crois la commande dos ATTRIB)
    Règles du Forum

    Adepte de la maïeutique

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Le code suivant fonctionne parfaitememnt (même exécuté un grand nombre de fois) :

    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
    Excel = actxserver ('Excel.Application');
    
        File=fullfile(cd,'Fe_Mn1cut.xls');
        if ~exist(File,'file')
        ExcelWorkbook = Excel.workbooks.Add;
        ExcelWorkbook.SaveAs(File,1);
        ExcelWorkbook.Close(false);
        end
    
    
        invoke(Excel.Workbooks,'Open',File);
    
            xlswrite1(File, 50, 'Feuil1', 'A2')
            xlswrite1(File, 10, 'Feuil1', 'B2')
    
        invoke(Excel.ActiveWorkbook,'Save');
        invoke(Excel.ActiveWorkbook,'Close');
    
        File=fullfile(cd,'Synthèse_Fau_El.xls');
        if ~exist(File,'file')
        ExcelWorkbook = Excel.workbooks.Add;
        ExcelWorkbook.SaveAs(File,1);
        ExcelWorkbook.Close(false);
        end
    
        invoke(Excel.Workbooks,'Open',File);
    
            xlswrite1(File, 30, 'Feuil1', 'A2')
            xlswrite1(File, 50, 'Feuil1', 'B2')
    
        invoke(Excel.ActiveWorkbook,'Save');
        invoke(Excel.ActiveWorkbook,'Close');
    
    Excel.Quit
    Excel.delete
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  10. #10
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    J'ai compris pourquoi ça a marché une fois et pas les autres. C'est car j'ai plusieurs programmes matlab qui écrivent dans des fichiers excel différents. Et parmi les fichiers excel, il y en a 1 (c'est Fe_Mn1cut) pour lequel mon programme ne fonctionne pas (j'ai toujours un message me disant que ce fichier existe déjà à cet emplacement) et pour les autres, ça marche.

    Quelqu'un aurait une idée d'où pourrait venir le problème? Sinon c'est pas grave, c'est déjà bien que ça marche sur une partie des fichiers!

    Merci,
    Murielle

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Décidément, j'ai quelques difficultés à te suivre on dirait

    Tu écris dans le fichier Fe_Mn1cut.xls seulement dans le code ci-dessus ou bien dans ce code et dans une autre fonction ?
    Et si c'est le cas, avec quelle fonction XLSWRITE ou XLSWRITE1 ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  12. #12
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    En fait, j'ai une bonne dizaine de dossiers dans lesquels j'ai à chaque fois 1 fichier Fe_Mn1cut.xls, 1 fichier Fe_Mn2cut.xls et Fe_Mn3cut.xls dans lequel Matlab écrit...
    Pour Fe_Mn2cut.xls et Fe_Mn3cut.xls la fonction xlswrite1 fonctionne bien. Par contre, pour Fe_Mn1cut.xls, je dois utiliser xlswrite car xlswrite1 ne fonctionne pas (erreur comme quoi le fichier se trouve déjà à cet emplacement...).

    Une idée?

    Merci,
    Murielle

  13. #13
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Je ne vois pas pourquoi le code ne fonctionnerait pas sur un fichier en particulier.

    A moins d'avoir utilisé des caractères spéciaux ou accentués ou des espaces dans le nom du fichier ou des dossiers... mais ceci était plus vrai avec les anciens systèmes d'exploitation... me semble-t-il.

    Enfin l'utilisation de noms simples sans espaces ni caractères spéciaux reste une règle de base de la bonne programmation informatique.

    Sinon dans ton cas, le dernier bout de code que j'ai donné fonctionne-t-il ?

    Utilises-tu correctement ces deux lignes ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        invoke(Excel.ActiveWorkbook,'Save');
        invoke(Excel.ActiveWorkbook,'Close');
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  14. #14
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 54
    Points : 18
    Points
    18
    Par défaut
    Salut,

    Ca y est, tout fonctionne très bien maintenant, sans que je comprenne quel était le problème...

    L'essentiel est que ça marche..!

    Merci beaucoup Dut

  15. #15
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Quel est le gain de temps approximatif entre le code avec XLSWRITE et celui avec XLSWRITE1 ?
    Et le nombre d'appel à ces fonctions dans ton code (environ) ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] [xlswrite1] Comment utiliser cette fonction sous MATLAB 7.12.0 ?
    Par KartSeven dans le forum MATLAB
    Réponses: 4
    Dernier message: 24/04/2012, 21h38
  2. [hamming] Comment utiliser cette fonction avec Matlab 6.5
    Par vivematlab dans le forum Signal
    Réponses: 2
    Dernier message: 02/05/2007, 16h52
  3. comment utiliser cette fonction?
    Par jojo57 dans le forum Access
    Réponses: 4
    Dernier message: 01/06/2006, 08h38
  4. [débutant][JSci][Matrix]comment utiliser cette classe
    Par Clark dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 10/05/2005, 10h40
  5. Réponses: 11
    Dernier message: 22/12/2003, 21h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo