Objet vide entre deux fonctions d'import !! Grrr comprends po
cs_darkbol
Messages postés61Date d'inscriptionlundi 7 juin 2004StatutMembreDernière intervention 6 décembre 2004
-
29 juil. 2004 à 10:40
cs_darkbol
Messages postés61Date d'inscriptionlundi 7 juin 2004StatutMembreDernière intervention 6 décembre 2004
-
29 juil. 2004 à 14:37
Bonjour!
J'ai créé une appli permettant d'utiliser qq fonctions d'un logiciel extérieur (SURFER, logiciel de carte)... Elle contient 2 forms avec sur chacune une commande import et une filelist (principalement). En fait, après avoir sélectionné le fichier dans la filelist, je clique sur mon bouton import et roule l'affaire.
Mon (gros) problème est le suivant. Mon premier import marche mais pas le deuxième... voici le script:
'dans un module
Public SurferApp As Object
Public docs As Object
Public plot As Object
Public mapframe As Object
Public shapes As Object
Public basemap As Object
Public Sub decla()
Set SurferApp = GetObject(, "Surfer.Application")
Set docs = SurferApp.documents
End Sub
'dans ma form1
Private Sub Form_Load()
Call decla
End Sub
Public Sub btnOkimportfile_Click(index As Integer)
Set plot = SurferApp.activedocument
Set shapes = plot.shapes
Set mapframe = shapes.Addbasemap(ImportFileName:=filList.List(filList.ListIndex))
End Sub
'dans ma form2
Public Sub Form_Load()
Call decla
End Sub
Private Sub btnAdd_Click()
Set plot = SurferApp.documents(1)
Set shapes = plot.shapes
Set mapframe = shapes.Addbasemap(ImportFileName:=File1.List(File1.ListIndex))
End Sub
En gros, j'importe le fichier sélectionné mais après dans le 2e import, il plante et me dit que l'objet Mapframe est vide...
Quand je Debug,
-"plot" renvoie bien la feuille actuelle sous le logiciel externe (celle ou jai deja importe une premiere carte)
-"File1.list" retourne bien le fichier que j'ai selectionné
mais ca plante et il me dit pas possible douvrir le fichier, ce ki est normal puisque lobjet mapframe n'existe pas.
Pourtant, et c là que je comprends po, si je vais sous le logiciel et fait l'importation avec le menu-importer-carte machin pour faire comme mon 2e import, ok ca marche (bon rien d'étonnant) MAIS si je reviens sous mon appli et reclique sur mon bouton -2e import-, là ca marche. ???? Comme si il fallait lui montrer l'exemple...
Après si je retente mon premier import, là c lui qui plante de la même manière (son Mapframe est vide)!? Alors pas compris du tt, ya eu un switch qq part et je comprends pas pourquoi c l'un ou l'autre...
Apparemment, c lié à la filelist. Est ce qu'il y a une quelconque subtilité dans son initialisation ou même dans son utilisation?? Parce que si je change la filelist par un fichier quelconque nominatif eh ben no problem....
Comment faire marcher mes 2 imports en même temps?!
Bon cété un peu long (et ptet même très vague) mais c le point clé de mon appli et si ca marche mon travail y sert à rien...
MERCI DE M'AIDER !! Help !
"j'aime po ne pas comprendre... :-|
A voir également:
Objet vide entre deux fonctions d'import !! Grrr comprends po
cs_thephil
Messages postés189Date d'inscriptionmercredi 21 août 2002StatutMembreDernière intervention19 janvier 2011 29 juil. 2004 à 11:33
moi j'essaierai après le 1er import de faire
set TonObjet = Nothing
si ça ne fonctionne pas, essaie alors de déclarer tes objets directement dans tes procédures d'import et non en public dans le début du module; comme ça, ça réinitialisera les objets en gros ...
cs_darkbol
Messages postés61Date d'inscriptionlundi 7 juin 2004StatutMembreDernière intervention 6 décembre 2004 29 juil. 2004 à 13:16
:sad)
Bon ben j'ai essayé le set nothing
puis le dim dans mes procédures mais c le même résultat...
Ce ki "m'estomaque", c kan je fais l'opération avec le logiciel et que je repasse a mon appli et ben là
mapframe = "map" ki est l'objet sur lequel on travaille et du coup là je peux importer à volonté... mais pas avec mon [b[btnbuttonImportfile/b... snif
quelle est la logique là ?
Merci pour tes idées en tt cas...
Bon j'essaye de batailler mais n'hésitez pas pr les propositions!!
cs_PhilippeE
Messages postés437Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention10 août 20102 29 juil. 2004 à 13:50
1/
Ce qui me gêne le plus, c'est que tu fais systématiquement un GetObject ... alors que si ta fonction decla était ainsi, tu serais sûr de bosser sur le même objet
Public Sub decla()
If SurferApp Is Nothing Then
Set SurferApp = GetObject(, "Surfer.Application")
End If
Set docs = SurferApp.documents
End Sub
2/
Ton application c'est la fameuse Surfer.Application ?
Parce que tu ne fais qu'un GetObject, donc il faut qu'il soit en cours d'exécution pour fonctionner.
cs_darkbol
Messages postés61Date d'inscriptionlundi 7 juin 2004StatutMembreDernière intervention 6 décembre 2004 29 juil. 2004 à 14:37
En fait j'ai une premiere form d'accueil qui inclut la première instance de SURFER :
Public Sub Form_Load()
On Error Resume Next
Set SurferApp = GetObject(, "Surfer.Application")
Set docs = SurferApp.documents
If Err.Number <> 0 And docs.Count = 0 Then
Set SurferApp = CreateObject("Surfer.Application")
End If
End Sub