Comment ajouter une Shape dans un document Vision à partir de VB

Résolu
cs_ManuD Messages postés 8 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 7 mars 2006 - 6 mars 2006 à 11:42
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 - 6 mars 2006 à 17:31
Bonjour à tous,
Je souhaite générer automatiquement un document Visio à partir de VB.

Il est très facile d'ajouter une combobox ou un label grace à la commande :
Set oNewObject = oPageActive.insertobject("forms.combobox.1", visInsertAsControl")
Set oNewObject = oPageActive.insertobject("forms.label.1", visInsertAsControl")

En revanche je n'arrive pas à créer des objets natifs de Visio dans ma page : Lien dynamique ou événement divisé.
Impossible de trouver la commande associée...

Si quelqu'un a une idée...

En vous remerciant par avance.

7 réponses

cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 1
6 mars 2006 à 16:11
Terrible erreur de ma part! Je l'ai tellement utilisée partout dans mon code que je me suis convaicue qu'il s'agissait d'une fonction VBA, en fait c'est moi qui l'ai codée, désolée! La vraie fonction VBA à utiliser c'est:

Dim stnHideObj As Visio.Document
Dim mastObj As Visio.Master
Dim shpObj as Visio.Shape

Set stencilObj = Visio.Application.Documents.Item(stencilName)
Set mastObj = stencilObj.Masters.Item(shapeName)
Set shapeObj = oPageActive.Drop(mastObj, XBegin, YBegin)

où XBegin et YBegin sont les coordonnées sur la page où tu veux positionner ta shape.

Encore désolée pour la mauvaise piste! Celle là c'est la bonne!
3
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 1
6 mars 2006 à 15:21
Si tu connais le nom de ta shape (shapeName dans l'exemple ci-dessous) et le nom du gabarit dont elle provient (stencilName) tu peux essayer un truc comme ça:


Dim stnHideObj As Visio.Document
Dim mastsObj As Visio.Masters
Dim shpObj as Visio.Shape

Set stencilObj = Visio.Application.Documents.Item(stencilName)
Set mastsObj = stencilObj.Masters
Set shpObj = DrawShape(shapeName, mastsObj , oPageActive)

Si j'ai bien compris ta question ça peut peut-être t'aider...
0
cs_ManuD Messages postés 8 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 7 mars 2006
6 mars 2006 à 15:31
Merci pour ce début de réponse, je me sens déjà moins seul
Le soucis est que je n'ai pas de méthode DrawShape...
Ni indépendante telle que tu l'as utilisée, ni associée à un objet de type Page.
Peut-être n'ai je pas associé toutes les références nécessaires à mon projet ?

Je vais aller voir sur le net si je trouve quelque chose au sujet de cette méthode DrawShape.

En tout cas merci pour ton attention.
0
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 1
6 mars 2006 à 15:39
Moi j'utilise ces lignes de code sous Excel pour créer un graphe à partir de données que je trouve dans une feuille, du coup dans mes références il a fallu que j'ajoute Visio 2000 Type Library. Mais si tu travailles directement sous Visio je ne sais pas ce qu'il te manque...
0

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

Posez votre question
cs_ManuD Messages postés 8 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 7 mars 2006
6 mars 2006 à 15:46
Je travaille directement sous Visual Basic 6.0 SP5, et j'ai intégré la référence Visio 2000 Type Library (service release 1)...
J'ai un peu de mal à comprendre pourquoi je n'ai pas accès à cette fonction DrawShape...
A moins que ma référence ne soit pas à jour et qu'il existe une nouvelle version ?
0
cs_ManuD Messages postés 8 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 7 mars 2006
6 mars 2006 à 16:46
Mais vive Microsoft !
J'ai cherché une journée entière une méthode pouvant ressembler à Insertshape, CreateShape, AddShape, NewShape ou n'importe quoi de ce genre et en fait c'est Drop ! Pour créer un objet il faut utiliser la méthode drop, je n'en reviens pas, bravo les noms intuitifs...
Merci infiniment pour cette info cissou06 car même si la méthode faisait bien partie de la documentation, je pouvais passer un moment avant de la trouver !

PS : Je vais créer un nouveau post toujours sur la manipulation des objets Visio à partir de VB, comme tu as l'air de bien maîtriser le sujet si jamais tu peux y jeter un oeil je t'en serais éternellement reconnaissant !
0
cs_cissou06 Messages postés 124 Date d'inscription mercredi 2 juillet 2003 Statut Membre Dernière intervention 16 mai 2007 1
6 mars 2006 à 17:31
Je veux bien y jeter un oeil mais je ne te promets rien. Les apparences sont parfois trompeuses
0
Rejoignez-nous