Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Visio

Visio Forum d'entraide sur Microsoft Office Visio (schémas et diagrammes)

Réponse
 
Outils de la discussion
Vieux 04/08/2008, 14h26   #1 (permalink)
Invité régulier
 
Date d'inscription: juin 2008
Messages: 16
Par défaut Folder Startup & AutoRun VBA

Bonjour à tous,

Je cheche une possibilité de créer un document Visio contenant du code qui s'exécuterais au démarrage de Visio.

J'ai déjà utiliser cette technique dans word.
Je créer dans le folder Startup de Word un document .dot qui contient du code VBA.

Dans ce document le code VBA à pour but de créer un menu (à gauche du help -> ? ) ainsi que des sous-menu.

Au démarrage word ouvre le document .dot qui se trouve dans Startup et le document contient une SUB AutoOpen().....

En visio j'ai déjà trouver le truc pour démarrer automatiquement une macro (DocumentOpened). En plus j'ai le code pour créer un menu.

Il ne me reste plus qu'à trouver comment démarrer un document dans le folder startup. --- J'oublie dans Visio j'ai initialiser le folder de démarrage ainsi que celui pour les Add-ons.

Le problème c'est que ça démarre pas.
J'ai fait un test avec une macro qui démarre automatiquement par un MsgBox, mais rien à faire, ce visio ne veut rien savoir.

Si vous avez une idée, je serai preneur

Merci d'avance.
pirlouis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/08/2008, 14h46   #2 (permalink)
Membre régulier
 
Date d'inscription: mai 2008
Âge: 23
Messages: 136
Par défaut

Salut pirlouis

tu as poussé un point sur Visio que je n'ai pas atteint donc si tu arrive donne la soluce. merci d'avance,

mais ca ne m'empêchera pas de cherché.

précision

DocumentOpened pour les dessin
DocumentCreated pour le lancement des modèles

après se que je sais tu ne peut créer de macro complémentaire sans un compilateur car les macro complémentaire son en point exe
Citation:
J'oublie dans Visio j'ai initialiser le folder de démarrage ainsi que celui pour les Add-ons.
tu peux expliquer tes manipes
nicolas_151 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/08/2008, 11h29   #3 (permalink)
Invité régulier
 
Date d'inscription: juin 2008
Messages: 16
Par défaut

Bonjour Nicolas_151,

Afin de mieux me faire comprendre, je ferai des analogie avec Word.

Tout d'abord, depuis la version Word 97 jusqu'à Word 2003, il y a un répertoire qui s'apelle STARUP. C'est un folder particulier, au démarrage de Word, word lui-même va dans ce folder et "Exécute" ou "Ouvre" tout ce qui se trouve dedans.

Exemple : j'ai créé une application écrite en VBA embarquée dans un fichier doc. Dans ce fichier doc, il y a une procédure AutoOpen(). Lors de l'ouverture de ce document par Word, Word exécute lui-même le code et mon menu est installé.

En Visio 2003, j'aimerais faire la même chose.
Le problème c'est qu'il n'est pas aussi doué que Word. Du coup on bricole !

1. Il n'y a pas de Folder Startup mais il y a une solution. Dans le Menu faire
Outils -> Options -> Options avancées -> bouton Chemins d'accès -> dernière ligne Démarrage j'ai C:\Program Files\Microsoft Office\Visio11\Startup
De là je créer mon Statup comme dans Word

2. Problème de la procédure VBA "AutoOpen ()" dans le document Visio.
Cette instruction est inexistente dans VISIO
La solution de contournement de ce problème.
Aller dans l'éditeur VBA -> dans la fenêtre de gauche sélectionner "ThisDocument" cliquer bouton droit -> sélectionner Code et dans la fenêtre de droit (là où on tape le code) mettre le code suivant

Code :
Sub Document_DocumentOpened(ByVal doc As IVDocument)
' This procedure runs when a Visio document is opened.
Call MsgBox("Le document est Ouvert")
End Sub
On sauvegarde le tout AutoOpen.vsd -> je copie le document dans Startup
et là, au démarrage rien
Visio n'a pas ouvert le document !

Donc je sèche un peut

Voilà.........

Dernière modification par Lou Pitchoun ; 08/08/2008 à 14h26 Motif: Ajout balises code. Bouton # de l'éditeur. Merci
pirlouis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/08/2008, 13h38   #4 (permalink)
Membre régulier
 
Date d'inscription: mai 2008
Âge: 23
Messages: 136
Par défaut

C'est intelligent mais dans chemin d'accès tu as:

dessin , pour définir l'emplacement de la sauvegarde par défaut

Modèle , affiche les modèle du répertoire dans fichier nouveau

gabarit , affiche les gabarit du répertoire fichier forme

module complémentaire pour les macro complémentaire

démarrage , lance les macros complémentaire du dossier au démarrage de Visio

donc tu doit transformer ton dessin en module complémentaire

avec Visio 2003 tu ne peut pas le faire directement comme avec Excel
2007 je ne sais pas

la recherche continu
nicolas_151 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/08/2008, 09h58   #5 (permalink)
Membre régulier
 
Date d'inscription: mai 2008
Âge: 23
Messages: 136
Par défaut

Regarde dans ce lien
www.
dotnet-news.com/lien.aspx?ID=34606

le problème est qu'il faut programmer en C
nicolas_151 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/08/2008, 16h42   #6 (permalink)
Invité régulier
 
Date d'inscription: juin 2008
Messages: 16
Par défaut

Bonjour à tous,

Je reviens sur le forum pour donner une réponse qui est déjà présente.

Il faut passer par de la programmation en C ou Delphi (DAVSL Samples)

Mais là on est bien !

On ne sait toujours pas commenr faire. On déplace le problème.

Je continue à chercher.

A bientôt pour de nouvelle aventure.
pirlouis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 09h08   #7 (permalink)
Membre régulier
 
Date d'inscription: mai 2008
Âge: 23
Messages: 136
Par défaut


tu as 2 solutions :

Soit, tu trouve quelqu'un qui a un logiciel pour convertir les macros Visio en VBA

Soit, tu trouve un compilateur C.


(Ou) solution sans garantie
tu prends un logiciel "VB6" par exemple comme cela tu peux programmer en VB
Tu compile et tu obtiens un fichier exécutable. et je pense que tu peux mettre ton exécutable en module complémentaire
(A voir)
nicolas_151 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/08/2008, 10h22   #8 (permalink)
Membre régulier
 
Date d'inscription: mai 2008
Âge: 23
Messages: 136
Par défaut En attendant

A mon travail on ne peut pas réaliser de macro complémentaire.
Alors la solution que nous avons utiliser est la suivante :

on lance un dessin qui contient le code correspondant
Le dessin va ajouter sa référence à tous les autres document ouvert.
Comme ceci les dessin qui ont la référence possède les propriétés du code.

En gros il faut activer une première fois le fichier sur les document pour que celui-ci possède tous le temps des propriétés de ton fichier.

je pense que cela peut résoudre en parti ton problème mais pas celui du démarrage de Visio.

Code :
Private Sub Document_DocumentOpened(ByVal doc As IVDocument)
' Programme de rajout de référence à la macro si celle ci n'existe pas dans
' les nouveaux documents ouverts
 
    Dim RefContExist As Boolean
    Dim k As Integer
    Dim i As Integer
    Dim docObj As Visio.Document
    Dim Namedoc As String
    Dim NameRef As String
    Dim vbProj As Variant
    Dim nrefs As Integer
    
 RefContExist = False
 ' Pour tous les documents visio ouverts
 For k = 1 To Documents.Count
   ' Récupérer le prochain document ouvert
   Set docObj = Documents.Item(k)
   Namedoc = docObj.Name
   If docObj.Name = "Nom Fichier" Then
     RefContExist = True
   ElseIf Right(docObj.Name, 3) = "vss" Then
     RefContExist = True
   ElseIf Right(docObj.Name, 3) = "VSS" Then
     RefContExist = True
  End If
    
   On Error GoTo fin1
   Set vbProj = Documents.Item(k).VBProject
   ' Ajouter la référence au projet conteneur des outils personnalisés.
   ' Si le document n'est pas le document conteneur
    
   ' Regarder toutes les références des de tous les projets
   ' Si la référence du projet conteneur existe déjà on ne la rajoute pas
   nrefs = vbProj.references.Count
   If vbProj.Name = "Nom du projet" Then
     RefContExist = True
  Else
     For i = 1 To nrefs
       NameRef = vbProj.references(i).Name
       If NameRef = "Nom du projet" Then
         ' La référence existe dans le projet
         RefContExist = True
       End If
     Next i
   End If
   ' Si la référence du conteneur n'existe pas on l'ajoute
   If RefContExist <> True Then
     On Error GoTo fin2
  vbProj.references.AddFromFile "Chemin du fichier"
   End If
    
   RefContExist = False
 Next k
 Exit Sub
 
fin1:
 MsgBox " Avez-vous activé: faire confiance au projet VBA dans la securité des macros"
 ThisDocument.Close
 Exit Sub
 
fin2:
 MsgBox " Problème de chemin d'accès"
 
End Sub
nicolas_151 est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Visio

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide