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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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