Objet vide entre deux fonctions d'import !! Grrr comprends po

cs_darkbol Messages postés 61 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 6 décembre 2004 - 29 juil. 2004 à 10:40
cs_darkbol Messages postés 61 Date d'inscription lundi 7 juin 2004 Statut Membre Derniè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... :-|

4 réponses

cs_thephil Messages postés 189 Date d'inscription mercredi 21 août 2002 Statut Membre Dernière intervention 19 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 ...

Allez, on tient le bon bout ....
0
cs_darkbol Messages postés 61 Date d'inscription lundi 7 juin 2004 Statut Membre Derniè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!!

"j'aime bien être encouragé... ;-)"
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
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.
0
cs_darkbol Messages postés 61 Date d'inscription lundi 7 juin 2004 Statut Membre Derniè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


oui merci c plus propre comme ca..

"j'aime... :-|
0
Rejoignez-nous