ouassou81
Messages postés8Date d'inscriptionlundi 21 juillet 2008StatutMembreDernière intervention11 janvier 2011
-
14 avril 2010 à 00:07
ouassou81
Messages postés8Date d'inscriptionlundi 21 juillet 2008StatutMembreDernière intervention11 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 ?
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 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
ouassou81
Messages postés8Date d'inscriptionlundi 21 juillet 2008StatutMembreDernière intervention11 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