Appel d'une sub d'un projet visual studio

Fermé
justin14 Messages postés 107 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 9 juin 2017 - 21 avril 2016 à 18:12
 Utilisateur anonyme - 26 avril 2016 à 18:20
Bonjour à tous,

Cela fait quelque semaine que je travaille sur un projet de création d'api pour un logiciel de dessin (REVIT).
Je code en vb et je travail sous visual studio.

Mon problème est je pense vraiment bête mais je n'arrive pas à trouver de solution sur internet.

Je dispose de plusieur solutions .vb dans mon explorateur de solution de mon projet et chacune réalise quelquechose de spécifique.
Comment faire pour appeler l'une de ces solutions (appeler un Namespace) depuis le corps d'une autre solution qui s'exécutera ?



Merci d'avance pour votre aide.

Cordialement,
Justin
A voir également:

8 réponses

Bonsoir

Je dispose de plusieur solutions .vb dans mon explorateur de solution de mon projet et chacune réalise quelquechose de spécifique.
Comment faire pour appeler l'une de ces solutions (appeler un Namespace) depuis le corps d'une autre solution qui s'exécutera ?


Tu mélanges tout.
  • Un fichier .vb est un fichier de code qui peut contenir plein de choses
  • Un espaces de nom est un environnement qui contient du code (en général des classes) qui ont le même thème. System.IO par exemple contient des outils de gestion du disque (fichiers, répertoires, etc.....), ces codes sont répartis dans plusieurs fichiers .vb, voire plusieurs projets
  • Un projet regroupe des fichiers de code pour en faire une dll, un programme, un site, etc...
  • Une solution regroupe des solutions pour faire une application utilisant plusieurs projets.


Maintenant, peux tu décrire de façon compréhensible ta demande?

Quand j'étais petit, la mer Morte n'était que malade.
George Burns
0
justin14 Messages postés 107 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 9 juin 2017 1
Modifié par justin14 le 22/04/2016 à 08:53
Bonjour,

C'est vrai que ce n'est pas très clair, tes explications m'éclaire beaucoup.

Je joins ci-dessous un screen schématisant mon problème :


Je travaille sur un projet "RevitAddinRY". Je souhaite lancer la public class contenue dans ''Class2.vb'' depuis une sub dans ''AdskApplication.vb''.

J'espère être plus clair comme ça, mais c'est vrai que cette gymnastique reste encore assez confuse pour moi.

Merci pour votre aide
0
Utilisateur anonyme
22 avril 2016 à 09:01
En supposant que la classe contenue dans Class2 s'appelle Class2:

Dim maClass2 As New Class2()

ensuite avec la variable maClass2 tu as accès aux méthodes et au propriétés.

Je te conseille vivement la lecture (en entier) de ce cours
https://plasserre.developpez.com/cours/vb-net/
0
justin14 Messages postés 107 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 9 juin 2017 1
26 avril 2016 à 11:37
Merci pour le cours. J'ai des erreur mais je pense compliqué de les résoudres sans connaitre les paramètres du projet.

Je vais approndir mes bases.

Sincèrement,
Justin
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
justin14 Messages postés 107 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 9 juin 2017 1
26 avril 2016 à 16:35
Bonjour,

Après de nombreuses recherches je n'arrive pas à me débloquer.
Ci dessous un imprime écran résumant mon problème.


A l'encadré 1 on voit la class que je voudrais appeler 'Public Class UserForm' dans l'onglet Class2.vb.

A l'encadré 2 on voit l'endroit où je souhaite appeler la class avec mon essai :
Dim CallUserForm As New UserForm

CallUserForm.Execute()


A l'encadré 3 l'erreur que j'ai quand je renseinge les arguments et à l'encadré 4 quand je ne les renseigne pas.


Je n'arrive vraiment pas à avancer. J'espère vous avoir donner assez d'éléments pour que vous puissiez m'éclairer.

Merci d'avance pour votre aide,

Cordialement,
Justin
0
Utilisateur anonyme
26 avril 2016 à 16:51
Tu peux poster le code plutôt que des impressions d'écran.
0
justin14 Messages postés 107 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 9 juin 2017 1
26 avril 2016 à 17:03
Encadré 1
<Transaction(TransactionMode.Manual)>
Public Class UserForm
Implements IExternalCommand

Public Function Execute(
ByVal commandData As ExternalCommandData,
ByRef message As String,
ByVal elements As Autodesk.Revit.DB.ElementSet) _
As Result Implements IExternalCommand.Execute
''.....Suite du code


Encadreé 2
Sub ComponentManager_UIElementActivated(sender As Object, e As adWin.UIElementActivatedEventArgs)
If e IsNot Nothing AndAlso e.Item IsNot Nothing AndAlso e.Item.Id IsNot Nothing AndAlso e.Item.Id = "ID_SD_BUTTON" Then

Dim CallUserForm As New UserForm

CallUserForm.Execute(
ByVal commandData As ExternalCommandData,
ByRef message As String,
ByVal elements As Autodesk.Revit.DB.ElementSet)

End If
End Sub
0
Utilisateur anonyme
26 avril 2016 à 18:20
Je vois que tu n'as pas fait l'effort de lire correctement le cours.....

Il y a un endroit ou on déclare une méthode, dans à cet endroit, on lui donne un nom, on dit si elle retourne un résultat (Function) ou pas (Sub) et on définit les éventuels paramètres, la façon dont il sont passés (par défaut selon le type ou forcé par valeur ou par référence), le nom qu'aura le paramètre dans la méthode et son type.

C'est ce que tu as fait dans le premier encadré.

Ensuite ailleurs on ce sert de cette méthode,
  • on l'appelle par son nom, OK
  • on lui donne ses éventuels paramètres, par le biais de valeurs ou de variables dont le type sera compatible (et qui ont un nom propre par forcement le même) , pas OK.


Par exemple, pour le calcul du cosinus
        cos = Math.Cos(1)

je ne me soucis pas de savoir le mode de transmission, ni de préciser que 1 est un entier.

Et je ne répondrais plus à rien qui se trouve assez clairement expliqué dans le cours.
0