OVH Cloud OVH Cloud

MAPPOINT LA SUITE

1 réponse
Avatar
Manu
Bonjour,

Je m'excuse pour mon absence de quelque jour suite à votre réponse.
Je vous rappel brièvement le sujet:

Ouverture de Mappoint à partir d'Access en vb et voici le texte que vous
m'aviez proposé:
'Général
1 Private Sub Form_Load()
2 Private m_mpApp As MapPoint.Application
3 Private m_mpMap As MapPoint.Map
End Sub

4 Private Sub Command1_Click()
' initialise l'application
5 Set m_mpApp = New MapPoint.Application

' nous permet de garder le contrôle sur l'application
6 m_mpApp.UserControl = True
' affiche l'application
7 m_mpApp.Visible = True

' ouvre la map.. si une autre map était déjà ouverte,
' la fenêtre de sauvegarde de modif apparait automatiquement
8 Set m_mpMap = m_mpApp.OpenMap("c:\" & "Map.ptm", False)

End Sub

' libère les ressources
9 Private Sub Form_Unload(Cancel As Integer)

10 If (Not m_mpApp Is Nothing) Then
11 Call m_mpApp.Quit
12 Set m_mpApp = Nothing
14 Set m_mpMap = Nothing
End If

End Sub

COMMENTAIRES:
Ligne 1 > Private ne fonctionne pas mais remplacé par Dim
Ligne 2 > Private ne fonctionne pas mais remplacé par Dim
Ligne 6 > n'est pas comprise sous vb6 (Runtime error 438 Objet non supporté
par cette propriété ou méthode) et ne semble pas nécessaire sous vba
Jusque là, sous vba la carte s'ouvre et le code fonctionne mais se bloque
sur la ligne 10 ( Erreur 424 'objet requis'
) .Sous vb6 la carte s'ouvre mais se referme tout de suite en bloquant sur
la ligne 10

1 réponse

Avatar
Vincent Guichard
Manu a écrit :
Bonjour,

Je m'excuse pour mon absence de quelque jour suite à votre réponse.
Je vous rappel brièvement le sujet:

Ouverture de Mappoint à partir d'Access en vb et voici le texte que vous
m'aviez proposé:
'Général
1 Private Sub Form_Load()
2 Private m_mpApp As MapPoint.Application
3 Private m_mpMap As MapPoint.Map
End Sub

4 Private Sub Command1_Click()
' initialise l'application
5 Set m_mpApp = New MapPoint.Application

' nous permet de garder le contrôle sur l'application
6 m_mpApp.UserControl = True
' affiche l'application
7 m_mpApp.Visible = True

' ouvre la map.. si une autre map était déjà ouverte,
' la fenêtre de sauvegarde de modif apparait automatiquement
8 Set m_mpMap = m_mpApp.OpenMap("c:" & "Map.ptm", False)

End Sub

' libère les ressources
9 Private Sub Form_Unload(Cancel As Integer)

10 If (Not m_mpApp Is Nothing) Then
11 Call m_mpApp.Quit
12 Set m_mpApp = Nothing
14 Set m_mpMap = Nothing
End If

End Sub

COMMENTAIRES:
Ligne 1 > Private ne fonctionne pas mais remplacé par Dim


Je ne connais pas bien VBA, mais pour VB6 il faut que sorte la
déclaration de m_mpApp et m_mpMap de la procédure Form_Load.
Passe les en variables de module, sinon elle seron détruite à la sortie
de la fonction. As-tu activé l'Option Explicit? Ton code ne devrait pas
compiler avec.

Ligne 2 > Private ne fonctionne pas mais remplacé par Dim


voir ci-dessus

Ligne 6 > n'est pas comprise sous vb6 (Runtime error 438 Objet non supporté
par cette propriété ou méthode) et ne semble pas nécessaire sous vba
Jusque là, sous vba la carte s'ouvre et le code fonctionne mais se bloque
sur la ligne 10 ( Erreur 424 'objet requis'


Ta variable m_mpApp est de type variant

) .Sous vb6 la carte s'ouvre mais se referme tout de suite en bloquant sur
la ligne 10


Tu n'as que des déclarations locales de variables. Donc quand tu arrive
à la Form_Unload, les objets n'existent pas

code corrigé:

'Général
Private m_mpApp As MapPoint.Application
Private m_mpMap As MapPoint.Map


Private Sub Form_Load()
End Sub

Private Sub Command1_Click()
' initialise l'application
Set m_mpApp = New MapPoint.Application
' nous permet de garder le contrôle sur l'application
m_mpApp.UserControl = True
' affiche l'application
m_mpApp.Visible = True
' ouvre la map.. si une autre map était déjà ouverte,
' la fenêtre de sauvegarde de modif apparait automatiquement
Set m_mpMap = m_mpApp.OpenMap("c:" & "Map.ptm", False)
End Sub

' libère les ressources
Private Sub Form_Unload(Cancel As Integer)
If (Not m_mpApp Is Nothing) Then
Call m_mpApp.Quit
Set m_mpMap = Nothing
Set m_mpApp = Nothing
' J'aurai tendance à liberer les objets
' dans l'ordre inverse de leur création
End If
End Sub