Projet vb6

Signaler
Messages postés
8
Date d'inscription
lundi 21 juillet 2008
Statut
Membre
Dernière intervention
11 janvier 2011
-
Messages postés
8
Date d'inscription
lundi 21 juillet 2008
Statut
Membre
Dernière intervention
11 janvier 2011
-
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

Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
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
Messages postés
8
Date d'inscription
lundi 21 juillet 2008
Statut
Membre
Dernière intervention
11 janvier 2011

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