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

Macros et VBA Excel Discussion :

conversion MatLab vers VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 1
    Par défaut conversion MatLab vers VBA
    Bonjour tout le monde,

    j'ai fais un programme matlab mais je voudrais le "convertir" en VBA pour pouvoir l'utiliser sous excel (car il n'y a pas matlab à mon stage).
    Je ne connais pas du tout VBA et je voudrais savoir si il est possible que vous me donnier les fonctions equivalentes à celles que j'ai écris ci dessous en langage matlab.

    Le principale probleme est je pense le lancement du solveur d'excel... :euh:

    Merci d'avance

    Voici mon main:

    Code matlab : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    beta1=5; %on definit les paramètres initiaux à tester
    beta2=4;
    vecteurDeBeta=[beta1 beta2];
    %%%%%%%%%%%%%%%%%%%%%%%%%
    %je lance ma fonction qui me permet d'avoir l'erreur à minimiser
    MonErreurAminimiser=erreur(vecteurDeBeta);
    %%%%%%%%%%%%%%%%%%%%%%%%%
    %on lance une optimisation pour avoir les paramètres optimisés, c'est à dire ceux
    %qui minimisent l'erreur
    vecteurDeParametreOptimises=solveur(vecteurDeBeta,@erreur(vecteurDeBeta),1e-6);
    %je donne au solveur les parametres initiaux, un pointeur vers la fonction qui
    %calcul l'erreur, et enfin la limite en dessous de laquelle je veux que l'erreur se trouve
    Voici la fonction erreur:

    Code matlab : 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
    function MonErreurAminimiser=erreur(vecteurDeBeta)
     
    delete('1990.csv'); % on efface le fichier 1990.csv du repertoire
    %on va remplacer les paramères du fichier beta.inp par ceux ci
    delete('beta.inp'); %on supprime le fichier beta existant
    %on réécrit un nouveau inp où il y aura nos paramètres à tester
    fichierBeta = fopen('beta.inp','wt');
    %on écrit trois ligne avec beta=valeur de notre parametre à écrire
    fprintf(fichierBeta,'beta=%g\n'), vecteurDeBeta(1));
    fprintf(fichierBeta,'beta=%g\n'), vecteurDeBeta(2));
    fclose(fichierBeta);%on a fini on ferme le fichier
    %on lance notre calcul
    dos('ansys=dynamique.inp');
    %on attend l'écriture du fichier résultat
    f=which('1990.csv'); %cherche le fichier .csv ds le repertoire
    while isempty(f) %temps que variable f est vide on continue à attendre
        f=which('1990.csv'); %regarder si le fichier est apparu
    end; %si le fichier est apparu on sort de la boucle
    %-------------
    %on recupére les données expérimentales qui se trouve dans excel
    ToutesColonnesExp = load('experimental.xls');
    %je choisie la 2eme colonne et toute ses lignes
    donneesExp = ToutesColonnesExp(:,2);
    %je recupére les données du calcul
    ToutesColonnesNum = load('1990.csv');
    %je concerve que la onzieme colonne de la ligne 2 à la dernière
    donneesNum = ToutesColonnesExp(2:end,11);
    %-------------
    %je calcul l'erreur entre les 2 colonnes, pour cela je fais une boucle sur
    %toutes les lignes et je soustrais les résultats expérimentaux aux Num
    erreur=0;
    for i=1:1:length(donneesExp)
    erreur=erreur+(donneesExp(i)-donneesNum(i))*(donneesExp(i)-donneesNum(i));
    end
    %------------
     
    MonErreurAminimise=erreur;
    end

    j'espere que vous pourrez m'aidez...

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    moi aussi ça pourrait m'intéresser,

    apparemment il est possible de faire des manipulations à la main et VBA enregistre les fonctions que l'on a fait manuellement...

    ca risque d'etre un peu long de retouver tout cela mais c'est faisable je pense...

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2010
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 75
    Par défaut
    Bonjour,
    je suis sur le même problème y a t'il quelqu'un qui a réussi cette manipulation ?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    personnellement je ne me suis pas penché sur le problème, d'autant plus que je n'utilise pratiquement jamais excel...

    bon courage

  5. #5
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Il faudrait que tu détailles un peu plus:
    - type des variables
    - dimensions des tableaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vecteurDeParametreOptimises=solveur(vecteurDeBeta,@erreur(vecteurDeBeta),1e-6);
    Que fait la fonction solveur en Matlab, elle appelle le solveur d'Excel?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    Citation Envoyé par issoram Voir le message
    Que fait la fonction solveur en Matlab, elle appelle le solveur d'Excel?
    ça je peux y répondre :

    => la fonction qui a été appelée "solveur" n'existe pas dans matlab

    => en fait, l'auteur du sujet à mis "solveur" car il y a différents solver possible comme par exemple "fminsearch"

    "fminsearch" est une fonction qui prend en parametre d'entrée X (qui est un vecteur de taille n) et ensuite cherche à minimiser le residu donnée par la fonction "erreur"

    voici le fichier d'aide de matlab qui explique fminsearch:
    http://www.mathworks.fr/help/techdoc...minsearch.html

    sous matlab il existe aussi le solveur lsqnonlin :
    http://www.mathworks.fr/help/toolbox...lsqnonlin.html

    bon courage

    ps: je ne vois pas du tout comment faire sous excel mais ça m'intéresse si quelqu'un sait faire

    ==> par contre, excel peut il lancer des logiciels extérieurs comme il est avec matlab dans le premier message ?

Discussions similaires

  1. Conversion code MATLAB vers VBA
    Par viejo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/07/2012, 18h06
  2. Conversion MATLAB vers Scilab
    Par mainak29 dans le forum Scilab
    Réponses: 3
    Dernier message: 24/02/2011, 05h06
  3. Conversion MATLAB vers Visual C++
    Par dey84 dans le forum MATLAB
    Réponses: 4
    Dernier message: 23/12/2010, 22h21
  4. [COMPILER] Conversion MATLAB vers C++
    Par milach dans le forum MATLAB
    Réponses: 5
    Dernier message: 07/05/2008, 11h47
  5. Conversion Vb6 Vers Vba
    Par thunderpat dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 29/03/2007, 11h49

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