![]() |
| 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é. | |||||||
|
|||||||
| Visio Forum d'entraide sur Microsoft Office Visio (schémas et diagrammes) |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Invité régulier
![]() Date d'inscription: juin 2008
Messages: 16
|
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. |
|
|
|
|
|
#2 (permalink) | |
|
Membre régulier
![]() Date d'inscription: mai 2008
Âge: 23
Messages: 136
|
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:
|
|
|
|
|
|
|
#3 (permalink) |
|
Invité régulier
![]() Date d'inscription: juin 2008
Messages: 16
|
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 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 |
|
|
|
|
|
#4 (permalink) |
|
Membre régulier
![]() Date d'inscription: mai 2008
Âge: 23
Messages: 136
|
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 |
|
|
|
|
|
#6 (permalink) |
|
Invité régulier
![]() Date d'inscription: juin 2008
Messages: 16
|
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.
|
|
|
|
|
|
#7 (permalink) |
|
Membre régulier
![]() Date d'inscription: mai 2008
Âge: 23
Messages: 136
|
![]() 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)
|
|
|
|
|
|
#8 (permalink) |
|
Membre régulier
![]() Date d'inscription: mai 2008
Âge: 23
Messages: 136
|
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 ![]()
|
|
|
|
![]() |
![]() |
||
Folder Startup & AutoRun VBA
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|