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 :

VBA- Call d'un module via un userform [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 98
    Par défaut VBA- Call d'un module via un userform
    Bonjour à tous,

    Débutante en VBA, j'ai un programme qui tourne assez bien mais je souhaietrais l'optimiser et le rentre plus "claire".

    Pour cela j'aimerais appeler des modules afin de pourvoir utiliser la même fonction plusieurs fois, mais egalement pour ne pas exécuter mes fonctions les unes après les autres

    Plus d'info sur le contexte :

    J'ai mon userform qui s'ouvre lorsque je clique sur un bouton. J'ai des combobox, textbox et checkbox dedans et deux boutons validé, annulé.
    Lorsque l'on clique sur validé, je récupère les infos dans des variables et lances plusieurs fonctions.
    Aucun problème si mes fonctions sont écrites dans mon userform mais si j'ai testé de les écrire dans des modules et impossible de les appeler avec "call".

    Version code USERFORM
    Fonction Opdaily (WorkCat)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub CommandButton1_Click()
    ' Get values from the userform
        'CmboxBox1 : Work category
        Dim WorkCat As String
        WorkCat = ComboBox1.Value
     
    'Run OpDaily
        OpDaily WorkCat
    End Sub

    version code module
    Nom du module MacroDaily, nom de la fonction Daily()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Sub CommandButton1_Click()
    ' Get values from the userform
        'CmboxBox1 : Work category
        Dim WorkCat As String
        WorkCat = ComboBox1.Value
     
    'Run Daily
        Call Daily 
        ''Compile error : Sub or Function not defined
        Call MacroDaily
        ''Compile error : Expected variable or procedure, not module
        Call MacroDaily WorkCat
        ''Compile error : Expected : end of state
     
    End Sub
    Des idées pour m'aider à résoudre ce problème ?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    2 choses a faire :

    1 - adopter une portee public pour les fonctions et procedures dans le module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public MaSuperFonction() As Integer
    2 - t'affranchir du Call en appelant directement la fonction/procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a= MaSuperFonction()
    'ou
    MaSuperProc
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    personnellement j'opterai pour un passage de paramétré qui permettrait le cas échéant la ré-utilisabilité du code!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub Daily(WorkCat As String)
    MsgBox  WorkCat 
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub CommandButton1_Click()
    Call Daily(ComboBox1.Value)
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Test()
    Daily "TOTO"
    End Sub
    Dernière modification par Invité ; 24/04/2017 à 14h52.

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 98
    Par défaut
    Merci à tous pour vos conseils. J'ai choisi la solution de mettre mes fonctions en mode public en fesant attention à ne pas mélanger mes variables

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

Discussions similaires

  1. [XL-2016] EXCEL + VBA 2016 Générer référence dans un tableau via un UserForm
    Par EXCELFORME dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/10/2016, 21h29
  2. [vba excel] lancer 3 module a l'ouverture de mon userform
    Par CIBOOX dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 22/02/2007, 18h50
  3. [VBA-WORD] Supprésion des modules et userform
    Par ftcalvados dans le forum VBA Word
    Réponses: 9
    Dernier message: 22/09/2006, 17h25
  4. [VBA-E]Accès aux modules via VBA
    Par houba95 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/03/2006, 22h10
  5. Réponses: 8
    Dernier message: 22/02/2006, 15h09

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