Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Visio
Visio Forum d'entraide sur Microsoft Office Visio (schémas et diagrammes)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2007, 10h07   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 10
Points : 4
Points : 4
Par défaut VBA Visio 2000 - Problème avec BeforeDocumentClose

Bonjour,

Je développe une appli sous Visio 2000 qui permettra de schématiser les composants réseau (Websphere, port ethernet,etc...).
Cet appli gèrera plusieurs schémas dans un seul document sous une seule page.
Je souhaitais appeler la BeforeDocumentClose pour vider la page du schéma générer, fermer les gabarits chargés et sauvegarder le document, afin qu'à la prochaine ouverture du document, la page soit vierge de tout schéma.
Mais cette fonction (BeforeDocumentClose) s'exécute pas vraiment avant la fermeture mais pendant la fermeture (d'après mes test).

Mon code :
Code :
1
2
3
4
5
Private Sub Document_BeforeDocumentClose(ByVal doc As IVDocument)
    ThisDocument.VideDocument
    ThisDocument.Raz_Gabari
    ThisDocument.Save
End Sub
Code :
1
2
3
4
5
6
7
8
9
Public Sub VideDocument()
Dim ShpObj As Visio.Shape
 
    ActiveWindow.SelectAll
    For Each ShpObj In Visio.ActiveWindow.Selection
        Call Init.Verrou(ShpObj, 0)
        ShpObj.Delete
    Next ShpObj
End Sub
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim Gabari As Collection
Public Sub Raz_Gabari()
Dim StnObj As Visio.Document
 
    If Gabari.Count <> 0 Then
        For Each Element In Gabari
            If Element <> " " Then
                Set StnObj = Documents.Open(Element)
                StnObj.Close
            End If
        Next Element
    End If
End Sub
Quelqu'un pourrait-il m'aider à trouver pourquoi cela ne fonctionne pas ou passer au delà de cette erreur ?

Merci par avance.

Christophe
ChristopheLBP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2007, 11h55   #2
Invité de passage
 
Inscription : octobre 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 10
Points : 4
Points : 4
J'ai trouvé comment faire.
Au lieu d'utiliser BeforeDocumentClose, j'utilise QueryCancelDocumentClose qui permet d'empecher la fermeture du document si nous faisons
Code :
1
2
3
Private Function Document_QueryCancelDocumentClose(ByVal doc As IVDocument) As Boolean
    Document_BeforeDocumentClose = True
End Function
mais pour executer ce que je voulais faire avec le BeforeDocumentClose, je fais :
Code :
1
2
3
4
5
6
7
Private Function Document_QueryCancelDocumentClose(ByVal doc As IVDocument) As Boolean
    ThisDocument.VideDocument
    ThisDocument.Raz_Gabari
    ThisDocument.Save
    'Code permettant de ne pas afficher la boite de message
    'Voulez-vous enregistrer ?
    Application.AlertResponse = 7
ChristopheLBP est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h33.


 
 
 
 
Partenaires

Hébergement Web