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

VB.NET Discussion :

comment executer une macro en ligne de code ?


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Inscrit en
    décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : décembre 2007
    Messages : 43
    Points : 9
    Points
    9
    Par défaut comment executer une macro en ligne de code ?
    Bonjour,

    Ma question est un peu atypique. Je suis sur un logiciel de simulation electromagnetique appelé CST qui utilise le langage Visual Basic. Je suis sûr que vous serez en mesure de m'aider.

    Je fais ce qu'on appelle un parameter sweep (voir fichiers joints), c est à dire que je fais varier une variable et pour chaque valeur je fais un calcul. A la fin de ce calcul je souhaite tout simplement exécuter ma macro existante qui s'appelle CombineFarfields. Je sais où se trouve le fichier correspondant à la macro (voir code ci dessous et fichiers joints).

    Je sais bien que je m'écarte "un peu" de l'esprit du forum car c'est un logiciel electromagnetique mais il utilise Visual Basic alors bon...

    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
    ' userdefined watch for parameter sweep
     
    Option Explicit
     
    Sub ParameterSweepWatch(action As Integer)
     
    	'Please define actions for the parameter sweep watch here.
     
    	Select Case action
    		Case 0
    		'Please define actions before the parametersweep starts.
     
    		Case 1
    		'Please define actions after each calculation.
    Open "./dipole array combine/Model/3D/CombineFarfields.mcr" For Input As #1
                 While Not EOF(1)
    	     Wend
    Close #1
     
    		Case 2
    		'Please define actions after the parametersweep has finished.
     
    	End Select
     
    End Sub
     
    Sub Main()
     
      ParameterSweepWatch 0
      ParameterSweepWatch 1
      ParameterSweepWatch 2
     
    End Sub
    Merci d'avance de toute aide. Je suis un bleu de chez bleu (enfin j'ai lu des trucs de bases) en VB mais je suis pas un bleu en programmation.

    Merci

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2006
    Messages : 5 993
    Points : 7 896
    Points
    7 896
    Par défaut
    CodeDom constituerait une bonne base.

    Toutefois, il faudra gérer les instuctions dont la syntaxe Vb diffère de celle de Vb.net.

    Il y a un tutoriel CodeDom sur le site , mais en C# .
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Futur Membre du Club
    Inscrit en
    décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : décembre 2007
    Messages : 43
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Graffito Voir le message
    CodeDom constituerait une bonne base.

    Toutefois, il faudra gérer les instuctions dont la syntaxe Vb diffère de celle de Vb.net.

    Il y a un tutoriel CodeDom sur le site , mais en C# .
    J ai absolument rien compris. CodeDom est un truc qui peut utiliser plusieurs langage C# ou Vb ?

    Est ce que le code que j ai tapper est du VB ou VB.net ?

    Je suis sûr que ce qui manque dans mon code est quelque chose de derisoire (1 ou 2 lignes de codes pas plus). En fait au lieu de faire le "open" qui est dans mon code (et qui vient de moi) , il faudrait faire un "execute" de la macro existante. Le squelette avec le "case" et le parametersweep est donné dans le help de CSt donc c est juste.
    J'ai fait du C dans ma jeunesse, c est un peu comme si on avait ecrit une fonction (macro existante) et qu on veut l utiliser dans le programme "main".

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2006
    Messages : 5 993
    Points : 7 896
    Points
    7 896
    Par défaut
    J ai absolument rien compris. CodeDom est un truc qui peut utiliser plusieurs langage C# ou Vb ?

    CodeDom intégré à un programme vb.net (ou C#) permet lors de l'exécution du programme :
    • d'utiliser un code source (écrit dans un des langages .net)
    • de le compiler dynamiquement,
    • d'appeler une des classes/routines définies dans ce code.
    Ainsi, une "macro" pourrait être lue, compilée et exécutée dynamiquement

    Cela n'a toutefois d'intéret que si l'utilisateur peut créer ses propres macros ou modifier les macros existantes. Si les macros sont "figées", cela n'apporte rien par rapport au fait de les traduire en vb.net et de les intégrer dans le projet.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Futur Membre du Club
    Inscrit en
    décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : décembre 2007
    Messages : 43
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Cela n'a toutefois d'intéret que si l'utilisateur peut créer ses propres macros ou modifier les macros existantes. Si les macros sont "figées", cela n'apporte rien par rapport au fait de les traduire en vb.net et de les intégrer dans le projet.
    Ma macro CombineFarfields.mcr est un fichier que je peux modifer (cette macro est celle que j essaie d executer avec mon open (voir code)).

    Je peux essayer de trouver un tutoriel CodeDom en VB.net mais le VB de CST est un VB et non un VB.net d'apres le code que j ai ecrit ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2005
    Messages : 87
    Points : 105
    Points
    105
    Par défaut Comment est écrite la macro ?
    Bonjour,
    Peut-on voir ce qu'il y a d'écrit dans la macro qu'il faut exécuter ?
    Je fais du VB et du VBA depuis 15 ans mais là je n'ai pas assez d'éléments pour répondre au problème.
    A bientôt si vous le souhaitez.

  7. #7
    Futur Membre du Club
    Inscrit en
    décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : décembre 2007
    Messages : 43
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par bellande Voir le message
    Bonjour,
    Peut-on voir ce qu'il y a d'écrit dans la macro qu'il faut exécuter ?
    Je fais du VB et du VBA depuis 15 ans mais là je n'ai pas assez d'éléments pour répondre au problème.
    A bientôt si vous le souhaitez.
    Désolé d'avoir tarder à répondre, j'avais un projet à rendre avec une dead line. le programme est le suivant.

    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
    ' CombineFarfields
     
    Sub Main ()
    	' First calculate the single farfield in 5 degree steps, if not already accomplished
    	SelectTreeItem("Farfields\farfield (f=27.18) [1]")
    	With FarfieldPlot
    	     .Reset
    	     .Plottype ("3d")
    	     .Step (5)
    	     .Step2(5)
    	     .Plot
    	End With
     
    	ResultPath = GetProjectPath("Result")	' Assume that the farfield files are in the projects result folder
     
    	' Use the single result with different array element positions, rotations and phase shifts
    	' and combine them to the array farfield pattern.
    	With FarfieldArray
    		.ClearAntennaItems()
    		.SetCombineFrequency(27.18)
    													'   Rotation angles around axis:   z   x'   z"
    																'  PosX  PosY  PosZ  alph beta gamm Amp  Phase
    		.AddAntennaItem(ResultPath + "farfield (f=27.18)2D_1.ffp",  0.0,  0.0,  0.0, 180,   0,   0, 1.0, -90.0)
    		.AddAntennaItem(ResultPath + "farfield (f=27.18)2D_1.ffp",  0.0,  0.0,  0.0,  90,   0,   0, 1.0,   0.0)
    		.AddAntennaItem(ResultPath + "farfield (f=27.18)2D_1.ffp",  0.0,  0.0,  0.0, 270,   0,   0, 1.0,   0.0)
    		.AddAntennaItem(ResultPath + "farfield (f=27.18)2D_1.ffp",  0.0,  0.0,  0.0,   0,   0,   0, 1.0,  90.0)
     
    		.SetNormalizeAntennas False
    		.ExecuteCombine(ResultPath + "combined_ff.ffp", 5.0)  ' Store the combined antenna in 5 degree steps
    '		MsgBox "Actual Power / Power Sum = " & .GetCombinePowerRatio()
    	End With
     
    	' Put the new result into the navigation tree...
    	With Resulttree
    		.Name "Farfields\Array"   ' Entry name and destination folder
    		.File ResultPath + "combined_ff.ffp"      ' Result file name
    		.Type "Farfield"
    		.Add
    	End With
     
    	' ...and select it for beeing plotted.
    	SelectTreeItem("Farfields\Array")
    End Sub


    Merci de votre aide.

  8. #8
    Futur Membre du Club
    Inscrit en
    décembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : décembre 2007
    Messages : 43
    Points : 9
    Points
    9
    Par défaut question liée
    Bonjour,

    JE reviens sur mon problème car j'ai encore besoin de votre aide.

    Ma question est un peu différente de la question originale: Comment utiliser ce code CombineFarfield non pas avec les fichiers issues de la simulation mais avec un fichier issue de mesure. Je veux dire que l'organisation de mon fichier issue de la mesure sera differente de celle du fichier issu de la simulation.

    Si je ne suis pas clair, dites le moi.

    Merci beaucoup d'avance.

Discussions similaires

  1. Réponses: 15
    Dernier message: 23/11/2011, 12h35
  2. [AC-2003] Comment executer une macro Excel sous Access
    Par Deustalos dans le forum VBA Access
    Réponses: 6
    Dernier message: 04/11/2009, 13h30
  3. comment executer une macro excel depuis page asp ?
    Par auboulot909 dans le forum ASP
    Réponses: 12
    Dernier message: 10/01/2008, 20h26
  4. Réponses: 12
    Dernier message: 01/03/2007, 12h07
  5. comment executer une macro?$
    Par khaliloum dans le forum IHM
    Réponses: 1
    Dernier message: 11/06/2006, 17h41

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