IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Problème de communication entre interfaces VB6


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingé
    Inscrit en
    Août 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingé
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 11
    Points : 8
    Points
    8
    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.

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 175
    Points
    17 175
    Par défaut
    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.
    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
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingé
    Inscrit en
    Août 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingé
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RMI] Problème de communication entre deux machines distantes
    Par georges_jung dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 10/04/2007, 18h03
  2. [c#] probléme de communication entre classe
    Par OpenGG dans le forum C#
    Réponses: 1
    Dernier message: 24/09/2006, 21h54
  3. Problème de communication entre php et Laszlo(Tomcat)
    Par YUN59 dans le forum Autres langages pour le Web
    Réponses: 1
    Dernier message: 21/07/2006, 13h45
  4. Problème de communication entre C# et ASP
    Par Prowlx dans le forum ASP
    Réponses: 1
    Dernier message: 19/07/2006, 17h37
  5. Problème de communications entre threads
    Par maya09 dans le forum Windows
    Réponses: 1
    Dernier message: 22/02/2006, 22h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo