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 :

Enregistrer dans feuilles excel [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 57
    Par défaut Enregistrer dans feuilles excel
    Bonjour,
    j'ai fait un petit programme pour faire des calculs à partir de fichiers excel.
    Je charge par exemple 10fichiers et le calcul se fait pour chaque fichier (donc boucle 1 = calcul fichier 1....). A la fin de chaque boucle j'aimerais enregistrer ma matrice de résultats "Data2" dans une nouvelle feuille d'un classeur excel.

    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
    [fichXLS, pathnXLS]=uigetfiles( '*.xls', 'Charger les indices du Cycle .xls');
     
    for f=1:max(size(fichXLS));
        fileXLS=strcat(pathnXLS,fichXLS{f});
     
        D=importdata(fileXLS);
     
        DAinimax=D.data.DAini(1:((size(D.data.DAini,1)-6)/3)-4,1);
        DAinimin=D.data.DAini((((size(D.data.DAini,1)-6)/3)+4):((((size(D.data.DAini,1)-6)/3)+4)+(((size(D.data.DAini,1)-6)/3)-5)),1);
        DAini=[DAinimax;DAinimin];
        SAmax=D.data.SA(1:((size(D.data.SA,1)-6)/3)-4,1);
        SAmin=D.data.SA((((size(D.data.SA,1)-6)/3)+4):((((size(D.data.SA,1)-6)/3)+4)+(((size(D.data.SA,1)-6)/3)-5)),1);
        SA=[SAmax;SAmin];
        DAfinmax=D.data.DAfin(1:((size(D.data.DAfin,1)-6)/3)-4,1);
        DAfinmin=D.data.DAfin((((size(D.data.DAfin,1)-6)/3)+4):((((size(D.data.DAfin,1)-6)/3)+4)+(((size(D.data.DAfin,1)-6)/3)-5)),1);
        DAfin=[DAfinmax;DAfinmin];
        OSmax=D.data.OS(1:((size(D.data.OS,1)-6)/3)-4,1);
        OSmin=D.data.OS((((size(D.data.OS,1)-6)/3)+4):((((size(D.data.OS,1)-6)/3)+4)+(((size(D.data.OS,1)-6)/3)-5)),1);
        OS=[OSmax;OSmin];
        Data=[DAini,SA,DAfin,OS];
        for i=1:((size(DAini,1)-3)/2)
            for j=1:4
                Data(i+size(DAini,1)+3,j)=Data(i,j)-Data(i+(size(DAini,1)-3)/2+3);
            end
        end
        for i=1:((size(Data,1)-6)/3)
        Data(i,5)=max(Data(i,1:4));
        Data(i+((size(Data,1)-6)/3)+3,5)=min(Data(i+((size(Data,1)-6)/3)+3,1:4));
        Data(i+((size(Data,1)-6)/3*2)+6,5)=max(Data(i+((size(Data,1)-6)/3*2)+6,1:4));
        end
        Data(Data==0)=NaN;
        for i=1:size(Data,1)
            for j=1:size(Data,2)
                Data2{i+1,j+1}=Data(i,j);
            end
        end
        clear Data
     
        filename2=strcat(pathnXLS,'Hemi_Calcul_longueur.xls');
        [success,message]=xlswritespec(filename2,Data2,strcat(fichXLS{f}),'A1');
    end
    J'ai coupé des bouts de code car cela ne servira pas pour répondre à ma question.

    Je souhaite obtenir au final 1 classeur excel avec 1 feuille de calcul pour chaque fichier.
    Classeur X
    feuille1=matrice résultat calculs du fichier 1
    feuille2=matrice résultat calculs du fichier 2
    ......

    J'aimerais pouvoir donner à chaque feuille le même nom que le fichier correspondant.


    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    As-tu regardé du coté de la fonction XLSWRITE?

    Bonne soirée,
    Duf

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Par défaut
    En effet, il faut que tu lises l'aide de matlab sur la fonction "xlswrite"

    Regardes l'argument "sheet".

    Pour toi, l'exemple 3 devrait te convenir.

    A+

    Christophe

  4. #4
    Membre averti
    Inscrit en
    Février 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 57
    Par défaut
    Bonjour, merci pour vos réponses.
    J'utilise souvent xlswrite; mon problème réside dans le fait que je n'ai pas chaque fois le même nombre de fichier au départ, pas les mêmes noms de fichiers et donc pas un nombre constant de feuilles dans mon classeur excel.

    Donc je pensais que cette façon de faire fonctionnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [success,message]=xlswritespec(filename2,Data2,strcat(fichXLS{f}),'A1');
    j'aimerais que la feuille dans laquelle j'enregistre mon calcul en fin de boucle porte le même nom que le fichier de base "fichXLS", le {f} faisant référence au numéro de fichier en cours.

    En résumé, si mon fichier 1 s'appelle "fichXLS_1", j'aimerais que mon tableau de calcul soit enregistré dans la feuille "fichXLS_1", .......

    J'espère avoir été à peu près clair...

    Bonne journée.

  5. #5
    Expert confirmé
    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
    Par défaut
    Je ne vois pas pourquoi tu as utilisé STRCAT ici (il est inutile), mais sinon cela devrait fonctionner non ?
    Tu dis que tu pensais que cela devrait fonctionner donc qu'est-ce qui ne fonctionne pas ?

    Nota : je n'ai pas Excel pour vérifier mais peut-être y a-t-il des symboles qu'Excel n'accepte pas comme nom de feuille et qui seraient dans tes noms de fichiers ?

    Nota2 : Si tu veux le nom du fichier sans l'extension il faut utiliser FILEPARTS.
    De même quand tu veux recréer un nom complet de fichier (je vois que tu utilises STRCAT), il faut utiliser FULLFILE (multi-plateforme, s'arrenge tout seul s'il y a des / en double...)

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Je suis pas sur d'avoir tout compris mais ne serait-ce pas cela que tu recherches:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nom_feuille = ['fichXLS_', num2str(f)];

  7. #7
    Membre averti
    Inscrit en
    Février 2009
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 57
    Par défaut
    Effectivement le strcat ne sert à rien... je l'ai donc enlevé.
    Mais j'ai un message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Warning: See help sprintf for valid escape sequences.
    > In xlswritespec at 251
      In Calcul_Amplitude_Longueur_BIS at 81
    ce qui renvoie à cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            error('MATLAB:xlswrite:SelectDataRange',lasterr);
    Voila mon souci...

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

Discussions similaires

  1. PB d'enregistrement dans feuille excel.
    Par justin92330 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 02/10/2008, 14h03
  2. vba excel : insertion d image gif dans feuille excel
    Par chamus dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/01/2007, 13h16
  3. Recherche d'enregistrement dans table Excel
    Par SlySylvain dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/12/2006, 15h47
  4. Ecrire dans feuille excel
    Par Matmal11 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/09/2006, 08h49
  5. [VBA] problème choix de cellule dans feuille excel
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/02/2006, 10h48

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