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 :

Lire cellules d'un fichier Excel


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 60
    Par défaut Lire cellules d'un fichier Excel
    Bonjour à tous,

    Je souhaiterais créer une fonction dans laquelle j'appelle des données d'une partie d'un fichier Excel. Maintenant, mon problème est que ce fichier Excel contient plusieurs feuilles. Ensuite, dans chacune de ces feuilles, le nombre de données varie mais elles commencent toutes à la cellule R7. J'ignore comment faire pour prendre le reste de la colonne sachant que la taille de cette colonne peut varier d'un fichier à l'autre... Faudrait-il créer genre une boucle qui vérifie que la cellule suivante contient quelque chose et dès qu'il n'y a plus rien, cela détermine la fin de la colonne?

    Voici le début de mon code qui est faux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function [structure]=optim[file_temp, file_hardness, tab_hardness]
     
    load file_temp
     
    % Looking for the number of data, [line columns]
    nb_data=size(file_temp);
     
    ydata=xlsread('file_hardness', tab_hardness, 'R7:end');
    xdata=file_temp(:,2:nb_data(2)-2);
    Merci beaucoup pour votre aide

  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 317
    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 317
    Par défaut
    Tu trouveras la solution dans ce tutoriel : Contrôle d'Excel par MATLAB via Automation

    Plus précisément dans ce chapitre Les plages de cellules - La propriété End

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 60
    Par défaut
    Hello,

    Merci beaucoup pour cette info!
    Par contre j'ai un autre problème... je n'ai pas pu voir si cela fonctionnait car j'ai un problème avec mon code. En fait, je n'arrive pas créer ma fonction. Je veux comme argument des noms de fichiers ou un nom de feuille d'un classeur Excel. Mais du coup, cela ne fonctionne pas. J'ai essayé avec ou sans apostrophes pour les argments, mais ça ne marche quand même pas.

    Voici ce que je rentre avec l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >> optim2('.\Results\rechauffe_bs_274','Durete', 'Feuil1')
    Undefined function 'optim2' for input arguments of type 'char'.
    Voici 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
    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
     
    function [structure]=optim2('file_temp', 'file_hardness', 'tab_hardness')
     
     
    % Looking for the number of data, [line columns]
    nb_data=size(file_temp);
     
    % Get values of the hardness
    Excel = actxserver('Excel.Application');
    set(Excel, 'Visible', false);
    xlspath = '.\' ;
    xlsfile = 'file_hardness' ;
     
    Workbook = Excel.Workbooks.Open(fullfile(xlspath,xlsfile));
    ActiveSheet = Excel.Worksheets.Item('tab_hardness');
     
    r(1) = ActiveSheet.Range('R7');
    r(2) = ActiveSheet.Range('R7').End('xlDown');
    ydata = ActiveSheet.get('Range',r(1),r(2)).Value;
     
    Workbook.Close(false);
    Quit(Excel);
     
    % Get values of temperature, etc...
    fichier=dlmread('file_temp');
    xdata=fichier(:,3:nb_data(2));
     
    %% OPTIM
     
    % script to optimise ki values in classical QFA (eq. 3 and not 4 in Shuhui
    % Ma et al.) with Sigma_min=0 and Avrami exponent n = 1
     
    % upper bound
    ku = [30.0 10.0 10.0 20.00];
    % lower bound
    kl = [1 1 1 1];
    % initial guess
    k0 = [7.0000    7.9800    7.7800   13.0056];
     
    [k,RESNORM,RESIDUAL,EXITFLAG,OUTPUT]= lsqcurvefit('fun', k0, xdata, ydata, kl, ku); 
     
    %% Creation of the structure
     
    structure.HV = HV_pred;
    structure.k = k;
    structure.Q = Q;
     
     
    %% Graphics
     
     
    figure(2)
    for i=1:30
    x(i) =i;
    end
    % Superposition points expérimentaux et fittés. 
    plot (x, ydata, '*r', x, fun(k, xdata), '+b')
    xlabel('Position');
    ylabel('HV');
    title('Strength in function of the position');
     
    figure(3)
    plot(x, fun(k,xdata))
     
    figure(4)
    plot(fun(k,xdata),ydata)
    xlabel('HV predicted');
    ylabel('HV measured');
    title('HV predicted VS HV measured');
     
    end
    Merci d'avance!

  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 317
    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 317
    Par défaut
    Dans la fonction optim2, il ne faut pas mettre de guillemet autour du nom des variables définies en entête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function structure = optim2(file_temp, file_hardness, tab_hardness)
    De même dans le reste du code...

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 60
    Par défaut
    Merci pour ton aide!

    J'avais déjà essayé sans les guillemets dans l'entête, et j'ai corrigé les guillemets dans le code. Merci.

    Par contre ça ne marche toujours pas. Voici les erreurs que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    >> optim2(.\Results\rechauffe_bs_274,Durete, Feuil1)
     optim2(.\Results\rechauffe_bs_274,Durete, Feuil1)
           |
    Error: Unexpected MATLAB operator.
     
    >> optim2('.\Results\rechauffe_bs_274','Durete', 'Feuil1')
    Undefined function 'optim2' for input arguments of type 'char'.
    Une idée du problème?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Voir la FAQ : Undefined function or method *** for input arguments of type ***.

    Le dossier courant de MATLAB est-il bien celui qui contient le fichier optim2.m ?

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

Discussions similaires

  1. [Débutant] Lire une cellule dans un fichier excel
    Par Annihil dans le forum C#
    Réponses: 1
    Dernier message: 15/11/2011, 07h32
  2. Comment lire d'un un fichier excel
    Par orj30754 dans le forum C++
    Réponses: 3
    Dernier message: 09/10/2006, 15h06
  3. [EXCEL]Comment lire à partir d'un fichier Excel en java?
    Par BOUSHIH dans le forum Documents
    Réponses: 3
    Dernier message: 20/04/2006, 11h04
  4. lire / écrire dans un fichier excel au format xml
    Par crisflo dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 28/01/2006, 10h50

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