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

Macros et VBA Excel Discussion :

Problème intégration classes userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Par défaut Problème intégration classes userform
    Bonjour,

    J'ai un problème concernant la fonctionnement des classes et des userforms dans VBA.

    Je vous explique, j'ai créé deux userforms permettant de rentrer des données dans un tableau excel. Jusque là tout va bien. Sauf qu'à partir des données rentrées dans les deux userforms, je veux que le logiciel me calcule une certaine valeur renvoyée dans excel lors de la validation du deuxième userform. Problème : je ne peux pas appeler des valeurs rentrées du premier userform dans le code du second car elles ne sont pas reconnues. La solution se trouverait donc dans la construction d'une classe regroupant tous les champs demandés dans les deux user forms, mais je ne sais pas comment faire cohabiter la notion de classe et userform.

    Quelqu'un peut-il m'aider ?

    Exemple :
    Un premier userform demande les caractéristiques techniques d'un avion. Le deuxième gère toutes les pannes et retourne leurs répercussions financières en fonction des données techniques rentrées dans le premier form. Comment faire ?

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    rien de bien compliqué en soit juste a savoir quand tu est sur l'USF2 le 1 est il toujours affiché ou pas ?

    dans n'importe quel cas tu a 3 solutions

    1° soit des variables public dans un modules standard que tu manipule dans tes deux userforms

    2° soit des variables public dans tons ton usf2 que tu manipule a partir de ton uf1 avant de loader ton usf2

    3° la 3 eme serait d'injecter tes valeur du 1 dans des textboxs de l'usf2 toujours avant de le loader
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Par défaut
    Bonjour,

    Merci pour votre réponse,

    Lorsque l'USF2 est affiché, il n'y a plus l'USF1. J'ai créé les variables publiques dans un module que j'ai nommé du même nom que les champs à remplir (à savoir TextBoxXxx ou ComboBoxXx). Ne dois-je pas les nommer précisément TextBoxXxx.Value ou ComboBoxXxx.Value ?
    Car ensuite quand je veux que l'USF2 me calcule une valeur à partir des deux USF, je rentre cette ligne de code dans mon Sub ButtonNewClick :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Ligne, 14) = TextBoxSpeed.Value * TextBoxHour.Value * TextBoxHour.Value
    et là VBA me renvoie une erreur. Est-ce aussi un problème de niveau de protection des différentes variables et routines ?

    Aussi, j'aimerai convertir une heure au format (hh:mm:ss) rentrée dans un USF en format décimal pour réaliser mon calcul. J'ai essayé avec la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Ligne, 13) = (TextBoxHour.Value - Int(TextBoxHour.Value)) * 24
    Mais VBA me renvoie un erreur d'incompatibilité de type..

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    En fait je comprends pas le problème! Peut importe quel UserFom est affiché tu as accès à l'autre
    si la macro exécute sur le UserForm1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.Textbox1 = UserForm2.Textbox1
    par exemple

    Si c'est le UserForm2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm1.Textbox1 = me.Textbox1
    En fait peut importe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm1.Textbox1 = UserForm2.Textbox1

Discussions similaires

  1. Problème sur classe Transformer avec les <!--
    Par tykool dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/01/2006, 10h20
  2. Problème de classe
    Par DeusXL dans le forum DirectX
    Réponses: 15
    Dernier message: 04/12/2005, 14h37
  3. Problème de classe
    Par tidou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 14/10/2005, 17h49
  4. [FLASH MX2004] Problème de classe
    Par JulPoWeR dans le forum Flash
    Réponses: 1
    Dernier message: 10/07/2005, 22h51
  5. Problèmes intégrations Crystal V10
    Par audreyb dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 15/06/2005, 17h56

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