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

VBA Discussion :

Exécution d'une méthode d'objet à partir d'une variable string.


Sujet :

VBA

  1. #1
    Membre confirmé
    Homme Profil pro
    Automaticien
    Inscrit en
    Décembre 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 84
    Par défaut Exécution d'une méthode d'objet à partir d'une variable string.
    Bonjour,

    J'ai une collection nommée Devices qui contient différents objets implémentant une interface commune (iDevice), et je souhaiterais faire une fonction qui me permette de boucler sur tous les Devices de ma collection pour exécuter une méthode... Jusque là tout va bien

    Sauf que je cherche à exécuter la méthode en fonction d'une variable de type string...


    En gros en code, je cherche à faire quelque chose de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub ExecuteOnEachDevices(objDevices As Devices, strFonctionToCall As String)
        Dim objDevice As iDevice
     
        For Each objDevice In objDevices
            Application.Run objDevice & "." & strFonctionToCall
        Next
    End Sub
    Existe-t'il une méthode permettant de faire cela?

    Je précise que j'ai 5 classes qui implémentent l'interface iDevice à ce jour (avec une dizaine de fonctions) et que ce nombre va augmenter avec le temps... Donc je pense que vous comprendrez si je dis que je veux éviter de me taper des fonctions du style :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Public Sub ExecuteOnEachDevices(objDevices As Devices, strFonctionToCall As String)
        Dim objDevice As iDevice
     
        For Each objDevice In objDevices
            Application.Run objDevice.Name & "_" & strFonctionToCall
        Next
    End Sub
     
     
    Public Sub Device1_Fonction1()
        Device1.Fonction1
    end 
     
     
    Public Sub Device2_Fonction1()
        Device2.Fonction1
    end 
     
     
    Public Sub Device1_Fonction2()
        Device1.Fonction2
    end 
     
     
    Public Sub Device2_Fonction2()
        Device2.Fonction2
    end
    Cet exemple est volontairement basique pour avoir la syntaxe (si elle existe) me permettant de faire ce que je veux...
    En vérité j'effectue des for each imbriqués sur 2 à 3 niveaux avec des fois des conditions d'autres fois non... Mais au final beaucoup de fonctions utilisent toujours la même syntaxe (hormis le nom de la méthode qui change) et vu le nombre de fonctions qu'il me reste à faire ça va finir par être obèse dans pas longtemps à ce rythme là...

    Avant de poster un nouveau sujet, j'ai recherché mais n'ai rien vu qui correspond exactement à ce que je recherche... Donc je m'excuse d'avance si ce sujet à déjà été abordé ailleurs.

    Merci d'avoir pris le temps de me lire, et merci à ceux qui m'apporteront une réponse !

  2. #2
    Membre chevronné
    Inscrit en
    Avril 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 273
    Par défaut
    Bonjour Nono02P, le forum,

    Tu peux regarder du coté de la méthode CallByName (aide en ligne).
    Celle-ci devrait répondre à ton besoin.

    Bonne journée

  3. #3
    Membre confirmé
    Homme Profil pro
    Automaticien
    Inscrit en
    Décembre 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 84
    Par défaut
    Bonjour mromain,


    Merci beaucoup c'est exactement ce qu'il me fallait.

    Citation Envoyé par mromain Voir le message
    Bonjour Nono02P, le forum,

    Tu peux regarder du coté de la méthode CallByName (aide en ligne).
    Celle-ci devrait répondre à ton besoin.

    Bonne journée

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

Discussions similaires

  1. [Python 3.X] Récupérer valeur d'objet d'une méthode de classe à partir d'une autre classe
    Par cvraimentdur dans le forum Général Python
    Réponses: 3
    Dernier message: 19/03/2017, 13h09
  2. Réponses: 0
    Dernier message: 07/01/2015, 12h14
  3. Réponses: 1
    Dernier message: 20/06/2014, 11h04
  4. MVVM : Appeler une méthode dans Window à partir d'une vue
    Par tom741 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 09/02/2010, 12h24
  5. Réponses: 5
    Dernier message: 14/12/2007, 15h51

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