Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité de passage
    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 : 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.

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro Moncef Ben Othman
    Directeur de lycée
    Inscrit en
    juillet 2009
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Nom : Homme Moncef Ben Othman
    Âge : 59
    Localisation : Tunisie

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

    Informations forums :
    Inscription : juillet 2009
    Messages : 1 430
    Points : 2 484
    Points
    2 484

    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 :
    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
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec
    Vous pouvez voir Mes contributions

  3. #3
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro Francis MILLET
    Inscrit en
    décembre 2004
    Messages
    3 470
    Détails du profil
    Informations personnelles :
    Nom : Homme Francis MILLET
    Âge : 58
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 470
    Points : 5 754
    Points
    5 754

    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

  4. #4
    Invité de passage
    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 : 1
    Points
    1

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •