Projet vb6

ouassou81 Messages postés 8 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 11 janvier 2011 - 14 avril 2010 à 00:07
ouassou81 Messages postés 8 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 11 janvier 2011 - 15 avril 2010 à 16:35
Bonjour,

J'ai créé une macro Excel avec différents modules et 2 userform (1 et 2 !)
Mon module (referencedocu) s'execute et si on ne veut pas enregistrer sous le folder proposé, Userform1 s'affiche pour proposer d'autre folder.

Maintenant je veux transposer tout ça en VB6. Sans avoir besoin de la macro excel. J'ai donc crée un Formjcm avec différents boutons (commandbutton) dont un "referencer document". J'ai inclus dans le commandbutton_click le code de mon module excel. J'ai bien sur adapté le code pour encapsuler les commande excel (set xl=..., set wb= xl.workbook...)
J'ai ensuite crée Userform1( add form) , tel qu'il existait dans Excel.

Mon problème : Lorsque je passe la commande userform1.show (depuis formjcm), mon programme se plante.La userform1 commence à s'afficher mais se bloque.
voila le intialize de Userform1

Private Sub Form_Initialize()
Dim i, longueurFichier As Integer
Dim sComputername, nomdefichier, mavariable As String
Dim tablo
Dim fs As Object
Userform1.Combobox1.Clear
Userform1.Combobox1.Text = "Sélectionnez le sous-répertoire"
'récupération du nom de l'appelant
sComputername = VBA.Environ("USERNAME")

'---------lecture du fichier projectlist.txt contenant la liste des projets à gérer
Set fs = CreateObject("Scripting.FileSystemObject")
nomdefichier = "C:\program files\GPrCAO\defaultfolders.txt"
Open nomdefichier For Input As #1
While Not EOF(1)
longueurFichier = FileLen(nomdefichier)
mavariable = VBA.Input(longueurFichier, 1)
'séparation en tableau
tablo = Split(mavariable, ",")
Wend
Close 1
For i = 0 To UBound(tablo)
Userform1.Combobox1.AddItem (tablo(i))
Next i
end sub

voila l'appel depuis formjcm

If rep = vbNo Then
Msg = "Sélectionnez le répertoire de sauvegarde"
'Répertoire = GetDirectory(Msg) & ""
'UserForm1.Label1.Caption = repinit

Userform1.Show
Userform1.Label1.Caption = repinit

While Userform1.Visible = True

Wend
If Userform1.Combobox1.Text = ".." Then
Unload Userform1
Msg = "Sélectionnez le projet de sauvegarde"
repinit = GetDirectory(Msg) & ""
wb.Range("M2").Value = repinit
Userform1.Show
Userform1.Label1.Caption = repinit
While Userform1.Visible = True
Wend
End If

Le combobox n'est pas crée à l'initialize ?
Vous me comprenez ?

merci en tout cas

2 réponses

Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
14 avril 2010 à 08:49
Bonjour,

1) Peux-tu reposter ton code en respectant la coloration syntaxique (3ème icone en partant de la droite), pour prendre pitié de mes yeaux vieillissants.

2) Sur quelle ligne le plantage se produit-il ? Il est possible qu'une scorie spécifique à VBA ait résistée au nettoyage lors de la transition vers VB6.

3) Enfin en VB6 (comme en VBA), une telle écriture (Dim i, longueurFichier As Integer) est incorrecte, i sera initialisé en Variant et non en entier et le variant est à bannir tant que faire se peut.
Calade
0
ouassou81 Messages postés 8 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 11 janvier 2011
15 avril 2010 à 16:35
merci pour le conseil sur le DIM.
J'ai trouvé le problème. Il fallait utiliser la syntaxe userform1.show vbmodal pour permettre l'attente de la fermeture du userform et continuer le traitement principal
0
Rejoignez-nous