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 :

Exporter données MATLAB vers Excel


Sujet :

MATLAB

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 24
    Par défaut Exporter données MATLAB vers Excel
    Bonjour à tous,

    Actuellement en stage dans le domaine de la simulation, je dois exporter des résultats de plusieurs simulations dans un même fichier excel.
    Je ne suis pas très bon avec Matlab mais je découvre au jour le jour sur internet.
    J'ai une petite difficulté.. J'arrive à exporter mes données mais à chaque fois dans la même cellule. Est-il possible de faire une boucle if en indiquant que si la cellule est occupée, je mets ma figure à un autre endroit ?
    J'espére que ma question est assez claire.. Merci !

    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
    print -dmeta;   %.................Copying to clipboard
     
       FILE  = 'C:\...\essai.xls';
       Range ='J20';
     
       %.............excel COM object............................................................................
             Excel = actxserver ('Excel.Application');
     Excel.Visible = 1;
     
     
     invoke(Excel.Workbooks,'Open',FILE); %Open the file
     
     ActiveSheet  = Excel.ActiveSheet;
     ActiveSheetRange  = get(ActiveSheet,'Range',Range);
     ActiveSheetRange.Select;
     ActiveSheetRange.PasteSpecial; %.................Pasting the figure to the selected location
     
    %-----------------------------------end of function

  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 316
    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 316
    Par défaut
    Tu peux tester le contenu de la cellule courante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if isempty(ActiveSheetRange.Value)
     
    end
    Et utiliser la propriété Cells de l'objet Range pour décaler la cellule :

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 24
    Par défaut
    Super, merci beaucoup je vais essayer pour la prochaine simulation !
    J'ai une autre question mais ce n'est pas le sujet, je vais re créer une discussion..

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 24
    Par défaut
    Petit up car je me suis penché de nouveau sur cette histoire d'excel...
    En fait j'ai une donnée "a" qui regroupe plusieurs valeurs d'une expérince.
    Je la mets sur excel dans une cellule mais je veux que si cette cellule est occupée (une fois que je passe à l'expérience suivante), cela décale d'une cellule.
    Du coup de N44 à O44 etc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlswrite('C:\Dropbox\.....\......\patate.xlsx',a,1,'N44');

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    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 316
    Par défaut
    Pourquoi ne pas faire comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    nXp = 0;
     
    for n = 1:...
     
        a = ...;
     
        range = sprintf('%s44', 'N'+nXp);
        xlswrite('C:\Dropbox\.....\......\patate.xlsx', a, 1, range );
     
        nXp = nXp + size(a,1);
     
    end
    Tu pourras gérer les indices de colonnes supérieurs à Z avec l'une de ces deux contributions :

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 24
    Par défaut
    Je ne peux pas faire comme cela car pour chaque expérience je relance le même programme.
    Les 5 expériences ne sont pas effectuées en un seul programme.. C'est bien pour cela que je cherche à détecter les cellules pleines pour décaler..
    J'ai bien essayé de faire 5 programmes différents pour chacune des expériences mais c'est pas recevable..

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    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 316
    Par défaut
    Essaie 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Excel = actxserver('Excel.Application');
     
    Excel.Visible = true;
     
    Workbook = Excel.Workbooks.Add;
     
    xlToRight = -4161;
     
    for n = 2:5
     
        range = 'A1';
     
        M = ones(n)*n;
     
        range = Excel.ActiveSheet.Range(range);
     
        if ~isnan(range.Value)
            range = range.End(xlToRight);
            range = range.get('Offset',0,1);        
        end
     
        range = range.get('Resize',size(M,1), size(M,2));
        range.Value = M;
     
    end
     
    Workbook.SaveAs(fullfile(pwd, 'test.xlsx'));
     
    Workbook.Close;
     
    Excel.Quit;
     
    delete(Excel)
     
    clear Excel

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 24
    Par défaut
    Je ne comprends pas bien...
    J'ai essayé de le rentrer pour voir ce que cela faisait, ça me retourne des 2 3 4 et 5 dans ma feuille excel..
    Je ne peux pas me servir du xlswrite ?

  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 316
    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 316
    Par défaut
    Remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlswrite('C:\Dropbox\.....\......\patate.xlsx',a,1,'N44');
    Par :

    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
    Excel = actxserver('Excel.Application');
     
    Excel.Visible = false;
     
    Workbook = Excel.Workbooks.Open('C:\Dropbox\.....\......\patate.xlsx');
     
    ActiveSheet = Excel.Worksheets.Item(1);
     
    range = 'N44';
     
    range = ActiveSheet.Range(range);
     
    if ~isnan(range.Value)
        xlToRight = -4161;
        range = range.End(xlToRight);
        range = range.get('Offset',0,1);
    end
     
    range = range.get('Resize',size(a,1), size(a,2));
    range.Value = a;
     
    Workbook.Save;
     
    Workbook.Close;
     
    Excel.Quit;
     
    delete(Excel)
     
    clear Excel

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 24
    Par défaut
    J'ai essayé de modifier un peu ce que vous m'avez envoyé sans succès...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error using Interface.00020846_0000_0000_C000_000000000046/get
    Error: Object returned error code: 0x800A03EC
     
    Error in test (line 1079)
        range = range.get('Offset',0,1);

  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 316
    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 316
    Par défaut
    Citation Envoyé par Clem44120 Voir le message
    J'ai essayé de modifier un peu ce que vous m'avez envoyé sans succès...
    C'est à dire ?

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 24
    Par défaut
    Des bidouilles plus qu'autre chose...

  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 316
    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 316
    Par défaut
    Le code n'est pas parfait…

    Voici une version plus simple :

    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
    Excel = actxserver('Excel.Application');
     
    Excel.Visible = false;
     
    Workbook = Excel.Workbooks.Open('C:\Dropbox\.....\......\patate.xlsx');
     
    ActiveSheet = Excel.Worksheets.Item(1);
     
    range = 'N44';
     
    range = ActiveSheet.Range(range);
     
    while ~isnan(range.Value)
        range = range.get('Offset',0,1);
    end
     
    range = range.get('Resize',size(a,1), size(a,2));
    range.Value = a;
     
    Workbook.Save;
     
    Workbook.Close;
     
    Excel.Quit;
     
    delete(Excel)
     
    clear Excel

  14. #14
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 24
    Par défaut
    Merci beaucoup je vais essayer.
    Sinon j'ai surement trouver un autre moyen si cela ne fonctionne pas...
    Dernière question....
    Si j'ai un mobile qui accélère jusqu'a un max et qu'ensuite il décélère. Ai je un moyen de récupérer les valeurs seulement après le max ? C'est à dire sur la phase de décélération ?
    Jusqu'à présent j'utilisais un find de Vx<max(Vx) mais je n'avais pas la phase d'accélération donc ça marche moins bien...

Discussions similaires

  1. Réponses: 11
    Dernier message: 03/09/2015, 12h09
  2. [E-03] Erreur 3265 dans script Export données Access ver Excel
    Par Ashram2 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/09/2008, 16h23
  3. exporter données acces vers excel
    Par Cheorches dans le forum Access
    Réponses: 2
    Dernier message: 08/08/2007, 11h48
  4. pb export données sql vers excel
    Par nicoladele dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/05/2007, 18h05
  5. Export données MsFlexGrid vers Excel VB6.0
    Par elabbassi dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/09/2005, 15h18

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