IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Visio Discussion :

Folder Startup & AutoRun VBA


Sujet :

Visio

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 18
    Points : 16
    Points
    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.

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 130
    Points : 161
    Points
    161
    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
    J'oublie dans Visio j'ai initialiser le folder de démarrage ainsi que celui pour les Add-ons.
    tu peux expliquer tes manipes

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 18
    Points : 16
    Points
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    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à.........

  4. #4
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 130
    Points : 161
    Points
    161
    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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 18
    Points : 16
    Points
    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.

  6. #6
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 130
    Points : 161
    Points
    161
    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)

  7. #7
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 130
    Points : 161
    Points
    161
    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 : 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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    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

Discussions similaires

  1. VBA Excel pour backup/restore de folders avec Robocopy ou FastCopyPortable
    Par Acadien75 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/12/2014, 08h45
  2. [VBA-E] [Excel] Filtrer le donnees d'une sheet
    Par donia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/09/2002, 10h55
  3. problème avec VBA
    Par Delph dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2002, 13h15

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