Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > VB 6 et antérieur
VB 6 et antérieur Visual basic 6 et versions antérieures. Avant de poster -> La FAQ VB6, Les tutoriels VB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/12/2012, 16h12   #1
VBAG38
Invité de passage
 
Homme
Ingé
Inscription : août 2012
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingé
Secteur : Industrie

Informations forums :
Inscription : août 2012
Messages : 9
Points : 1
Points : 1
Par défaut Problème de communication entre interfaces VB6

Bonjour,

Je connais assez mal VB6. Je pratique plutôt le VBA d'ordinaire. N'étant pas informaticien, je développe simplement de petits outils pour automatiser certains traitement ou simuler des étapes de process de façon itérative. Aujourd'hui, on me demande de développer une application un peu plus vaste et un peu mieux protéger afin que le code ne soit pas visible/modifiable par l'utilisateur. C'est pourquoi, je me dis que la solution VB6 avec la génération d'un exécutable peut être une bonne solution.

J'ai donc importer la version VBA sous VB6, j'ai refait mes "Form" puisque je n'arrivais pas à les utiliser sous VB6. Elles apparaissaient en tant que "Concepteur" et non de "Feuilles". Y a-t-il d'ailleurs une solution pour pouvoir utiliser directement des forms réalisées sous VBA en VB6 ?

Mon problème majeur et pour lequel je vous sollicite vient du fait que j'ai plusieurs interfaces :
  • Une interface principale qui me sert à configurer ma simulation
  • 2 autres interfaces secondaires qui doivent apparaître si et seulement si l'option correspondant à celle-ci est sélectionnée dans la première interface. L'utilisateur doit alors préciser un paramètre de sa configuration sur l'interface secondaire qui apparaît
Sous VBA, cela fonctionne parfaitement. C'est à dire, je choisis mes 1ères options, le code se déroule. J'ai une ligne de code qui est :

InterfaceX.Show

L'interface idoine apparaît et le code se stoppe en attendant que l'utilisateur sélectionne son option puis clique sur OK ou Cancel.

Sous VB6, l'interface apparaît mais le code ne se stoppe pas. C'est à dire qu'il affiche l'interface mais passe directement à la ligne suivante et enchaîne.

Est-ce que j'ai raté une commande à ajouter avant ou après le .Show ou bien y a-t-il quelque chose à faire au niveau de la conception de mes formes ?

Si je déroule le code en pas à pas et que je le bloque sur l'instruction .Show, l'interface apparaît mais je n'ai pas le contrôle dessus. Je ne peux par exemple pas cocher mes check box ou inscrire des valeurs dans les Textbox.

Je ne suis pas sûr d'avoir été très clair. N'hésitez pas à me demander des renseignements si besoin.

Merci d'avance.
VBAG38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 11h39   #2
l_autodidacte
Modérateur
 
Avatar de l_autodidacte
 
Homme Moncef
Directeur de lycée
Inscription : juillet 2009
Messages : 1 212
Détails du profil
Informations personnelles :
Nom : Homme Moncef
Âge : 57
Localisation : Tunisie

Informations professionnelles :
Activité : Directeur de lycée
Secteur : Enseignement

Informations forums :
Inscription : juillet 2009
Messages : 1 212
Points : 2 224
Points : 2 224
Envoyer un message via Skype™ à l_autodidacte
Citation:
Sous VB6, l'interface apparaît mais le code ne se stoppe pas. C'est à dire qu'il affiche l'interface mais passe directement à la ligne suivante et enchaîne.
Est-ce que j'ai raté une commande à ajouter avant ou après le .Show ou bien y a-t-il quelque chose à faire au niveau de la conception de mes formes ?
Dans le code de l'interface principale, il devrait y avoir une condition sur l'option à choisir dans l'événement "Click" des boutons d'option (OptionButton) ou des cases à cocher(CheckBox). Cette condition doit faire attendre l'exécution du code jusqu'à ce qu'on choisisse un traitement à faire.
Un exemple :
Code :
1
2
3
4
5
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) ' Public s'il s'agit d'un module de base .bas ou Private s'il s'agit d'un objet Form
' Quelque part dans le code, on peut utiliser :
Do
 Sleep 100
Loop Until Option1.Value = True Or Option2.Value = True
__________________
A cœur vaillant rien d'impossible
l_autodidacte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 12h43   #3
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 198
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 198
Points : 5 110
Points : 5 110
Envoyer un message via MSN à ProgElecT
Salut l_autodidacte et VBAG38

Citation:
Envoyé par VBAG38
....
InterfaceX.Show
L'interface idoine apparaît et le code se stoppe en attendant que l'utilisateur sélectionne son option puis clique sur OK ou Cancel.
....
Si c'est dans InterfaceX que doit se faire un choix et ne pouvoir quitter cette InterfaceX que par OK ou Cancel, il faut paramétrer l'ouverture de InterfaceX au monument de son ouverture.
Citation:
Show, méthode
object.Show style, ownerform
....
style Facultatif. Nombre entier qui détermine si la feuille est modale ou non modale. Si l'argument style a pour valeur 0, la feuille est non modale ; s'il a pour valeur 1, elle est modale.

ownerform Facultatif.Expression de chaîne qui spécifie quel composant "possède" la feuille affichée. Pour les feuilles standard Visual Basic, utilisez le mot clé Me.
Donc pour toi InterfaceX.Show 1, Me le code suivant le Show du Form qui l'a lancé ne reprend qu'après la fermeture du Form lancé.

La bible du programmeur Visual Basic 6 et VBScript - MSDN
ProgElecT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 14h27   #4
VBAG38
Invité de passage
 
Homme
Ingé
Inscription : août 2012
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingé
Secteur : Industrie

Informations forums :
Inscription : août 2012
Messages : 9
Points : 1
Points : 1
Citation:
Envoyé par ProgElecT Voir le message
Donc pour toi InterfaceX.Show 1, Me le code suivant le Show du Form qui l'a lancé ne reprend qu'après la fermeture du Form lancé.

La bible du programmeur Visual Basic 6 et VBScript - MSDN
Merci beaucoup ProElegT pour ton conseil. Cela fonctionne. Je ne connaissais par. Merci également pour le lien, je vais essayer de trouver les réponses à mes futures questions dedans avant de revenir demander de l'aide au forum.

A tout hasard, dans mon appli VBA, j'utilise la méthode Find qui ne semble pas exister en VB6. Vous ne connaîtriez pas l'équivalent par hasard ?

Merci encore.
VBAG38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h48.


 
 
 
 
Partenaires

Hébergement Web