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 :

Ecrire depuis MATLAB dans fichier Excel déjà ouvert


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Ecrire depuis MATLAB dans fichier Excel déjà ouvert
    Bonjour forumeuse, forumeur,

    ça fait un moment que je me casse la tête sur ce problème en essayant de le contourner par différentes méthodes, j'ai cherché sur le forum, mais en vain..

    Voici mon problème (un peu compliqué) :

    J'ai crée une interface graphique en VBA qui lance une procédure contenant une fonction MATLAB (crée en .exe grâce à la commande mcc).
    J'ai utilisé la fonction RetVal = Shell( chemin ou se trouve la fonction en .exe, 1) pour lancer l'application MATLAB.
    Je voudrais simplement que le vecteur de résultat issu de l'application MATLAB s'écrive dans la feuille Excel actuellement ouverte (celle d’où je lance l'application).

    J'ai pu récupérer le nom de la feuille par la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomFeuille= ActiveWorkbook.ActiveSheet.Name
    et son chemin par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Adresse= Workbooks(ActiveWorkbook.Name).FullName
    J'ai ensuite récupéré ses informations dans MATLAB via xlsread puis je souhaite donc écrire le résultat par la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlswrite1(Adresse,VectVolGarchOrtho,NomFeuille,'G5');
    Actuellement je lance la procédure, referme le fichier et l'ouvre à nouveau pour voir mes résultats, pas très pratique

    J'espère que vous avez pu comprendre mon problème et que vous pourrez m'aider!
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Utiliser la fonction xlswrite1 est en effet une bonne idée. Je ne vois pas ton problème
    Pourquoi est-ce que tu
    Citation Envoyé par kornmuse Voir le message
    lance la procédure, referme le fichier et l'ouvre à nouveau pour voir mes résultats
    Tu peux très bien laisser ton fichier ouvert et travailler avec MATLAB dessus...

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour Winjerome,

    Merci pour ta réponse et pour le temps accordé .
    J'ai essayé la commande xlswrite1 sur un classeur déjà ouvert, mais une fenêtre Excel s'ouvre et me dis : "un fichier portant le même nom existe déjà sur cet emplacement. Voulez-vous le remplacer?". Et malheureusement, les valeurs ne sont pas écrites

    Je viens de découvrir la fonction xlswrite1, peut-être que je ne m'en sert pas bien

    Voila mon utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Excel = actxserver ('Excel.Application');
    invoke(Excel.Workbooks,'Open',Adresse);
     
    xlswrite1(Adresse,VectVolGarchOrtho,NomFeuille,'G5');
     
    invoke(Excel.ActiveWorkbook,'Save');
    Excel.Quit
    Excel.delete
    clear Excel
    Adresse représente la chaine de caractère contenant le chemin complet de la feuille.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par kornmuse Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    invoke(Excel.Workbooks,'Open',Adresse);
    Justement tu me dis que ton classeur est déjà ouvert.
    De plus si tu veux le laisser ouvert supprime les dernière lignes

    [EDIT] Étant déjà ouvert, tu peux remplacer la première ligne par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Excel = actxGetRunningServer('Excel.Application');
    Dernière modification par Invité ; 14/02/2012 à 23h18.

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Super ça marche du tonnerre!
    Je mets donc le code pour ceux que ça intéresse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Excel = actxGetRunningServer('Excel.Application');
    invoke(Excel.Workbooks,'Open',Adresse);
    xlswrite1(Adresse,VectVolGarchOrtho,NomFeuille,'G5');
    invoke(Excel.ActiveWorkbook,'Save');
    Adresse représente le chemin de la feuille Excel, VectVolGarchOrtho est le résultat que je souhaite écrire et NomFeuille représente le nom de la feuille dans laquelle je souhaite écrire.

    Encore Merci!

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

Discussions similaires

  1. [AC-2013] Ecrire dans un fichier Excel 2013 ouvert
    Par unlucky luke dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/06/2014, 13h23
  2. Ecrire ds un fichier excel DEJA ouvert
    Par Teddy7 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/01/2009, 12h45
  3. Rechercher une valeur dans fichier Excel depuis VBA Access
    Par tribaleur dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2008, 14h10
  4. Lire et ecrire dans fichier excel en c++
    Par FidoDido® dans le forum C++
    Réponses: 8
    Dernier message: 09/07/2007, 09h16
  5. [CSV] Ecrire et Lire un fichier Excel depuis PHP
    Par cocaetjusdorange dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2006, 11h10

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