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 :

Comment appeler une fonction mise dans un module standard, depuis une procédure Sub


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 77
    Points : 49
    Points
    49
    Par défaut Comment appeler une fonction mise dans un module standard, depuis une procédure Sub
    Bonjour le Forum,

    J'ai vu qu'il est possible d'appeler une fonction depuis une procédure sub, lorsque cette fonction est placée dans un module standard ...
    Voici pour exemple mon code :

    Partie dans un module standard.
    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
    17
    18
    Function search(element As String) As Variant
       Dim Ctrl As Control
        'Boucle sur tous les contrôles
        For Each Ctrl In UserForm.Controls 'Me.Controls
            'Vérifie qu'il s'agit d'un OptionButton
           If TypeOf Ctrl Is MSForms.CheckBox Then
               'Véfifie si l'OptionButton fait partie d'un groupe nommé "GR1"
                 If Ctrl.GroupName = element Then '"product"
                    'Affiche le Caption de l'optionButton qui a la valeur True
                    If Ctrl.Value = True Then
                        MsgBox Ctrl.Caption
                        'Sort de la boucle (Il ne peut y a voir qu'une
                        'réponse à True)
                    End If
                End If
            End If
        Next
    End Function
    Ensuite appele de cette fonction depuis une procédure Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub appelfunction()
     search("Product")
    End Sub
    Depuis un userform bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton13_Click()
    Call appelfunction
    End Sub
    Lorsque je lance depuis le userform le résultat de l'erreur se situe dans la fonction elle même (Erreur d'éxécution '424': Objet requis)

    Auriez vous une idée ?

    Merci,

    Chrysto

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Oui c'est ça la définition d'une fonction publique
    mais! ta fonction n'est pas une fonction (je n'entrerai pas dans le code)

    un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function chercher(element as atring, usf as object) as Variant
    chercher = element & " " & usf.texttox1.value
    end function
    la fonction retourne une valeur

    et l'appel (sur commandbutton1 de l'userform)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private sub commandbutton1_click()
    msgbox chercher("AAAA", Me)
    end sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 77
    Points : 49
    Points
    49
    Par défaut
    Bonjour Mercatog et le Forum,

    Avec ton exemple je comprends mieux - merci !

    Je l'ai adapté de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        For Each Ctrl In usf.Controls 'Me.Controls
            'Vérifie qu'il s'agit d'un OptionButton
            If TypeOf Ctrl Is MSForms.CheckBox Then 'MSForms.CheckBox
    Hors maintenant cela me renvoit un msgbox "vide".
    Le pb vient de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TypeOf Ctrl Is MSForms.CheckBox Then 'MSForms.CheckBox
    qui ne trouve pas la condition ...

    Une idée supplémentaire peut être ... ?

    Merci beaucoup,

    Chrysto

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Je continue un autre exemple, regarde bien la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Function chercher(element As String, usf As Object) As Variant
    Dim Ctrl As Control
    For Each Ctrl In usf.Controls
        If TypeOf Ctrl Is MSForms.CheckBox And element = Ctrl.Name Then
            chercher = element & " est un checkbox existant"
            Exit Function
        Else
            chercher = element & " inexistant"
        End If
    Next
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
    MsgBox chercher("CheckBox4", Me)
    End Sub
    ceci est un exemple
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 77
    Points : 49
    Points
    49
    Par défaut
    MErci Mercatog !

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

Discussions similaires

  1. [XL-2010] Utiliser une fonction contenue dans un module standard dans un userform
    Par tony76 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 07/05/2015, 07h14
  2. Réponses: 3
    Dernier message: 07/03/2013, 17h13
  3. Appeler une dll ou un autre module vba depuis une macro excel vba
    Par technobiz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/11/2008, 14h24
  4. Réponses: 6
    Dernier message: 02/10/2006, 12h13
  5. Ecrire dans un tableau html depuis une fonction js ?
    Par botanica dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/10/2005, 12h48

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