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 :

Générer des macros événements par boucle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Par défaut Générer des macros événements par boucle
    Bonjour,
    J'ai un UserForm avec 17 combobox au contenu et au nom similaires. Je souhaite effectuer des actions en fonction de l'ouverture de chacune de ces combobox ou de la valeur qu'elles ont prise lorsqu'elles sont modifiées. Seulement pour l'instant je suis obligé d'écrire pour chaque combobox, trois macros événements:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ComboBox1_Enter()
        'actions 1
    End Sub
    Private Sub ComboBox1_Change()
       'actions 2
    End Sub
    Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
       'actions3
    End Sub
    Or je voudrais pouvoir générer ces macros événements par une boucle du type "for each"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for each Control in Userform1
    if Control.name = "Combobox1" or Control.name = "Combobox2" then<div style="margin-left:40px">Private Sub subroutines(Control.name & "_Enter") ()
    'actions 1
    End Sub
    Private Sub subroutines(Control.name & "_Change") ()</div><div style="margin-left:80px">'actions 2</div><div style="margin-left:40px">End Sub
    Private Sub subroutines(Control.name & "_Exit") (ByVal Cancel As MSForms.ReturnBoolean) 
    'actions3
    End Sub</div>end if
    next Control

    J'ai cherché sur le forum mais n'ai pas trouvé de sujets similaires. Sinon merci de me l'indiquer.
    J'espère avoir exposé le problème de facon suffisament claire. Mais n'hésitez pas bien sûr si vous avez des questions.
    Merci pour votre aide et expertise

    PS: Je travaille avec Excel 2010 et VBA 7.0

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai cherché sur le forum mais n'ai pas trouvé de sujets similaires. Sinon merci de me l'indiquer.
    Pour t'aider il faudrait en savoir plus, sur ce que tu cherches à faire.
    Pour les boucles sur les contrôles I-B. Boucler sur les contrôles contenus dans la Forme
    On peut aussi utiliser les modules de classes.
    Lire Création et utilisation de classes personnalisées en VB 6.0 et VBA (partie 1)
    Ou bien si tu cherches à écrire une procédure qui devrait fonctionner sur plusieurs contrôle en passant un argument. Voir cet exemple dans cette discussion.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Par défaut
    Bonjour Philippe,

    Merci pour ta réactivité et ton temps.
    Je cherche à réaliser des actions similaires d'affichage selon les mêmes événements de plusieurs combobox d'un même UserForm. Pour l'instant, j'ai fait une procédure indépendante par type d'événement avec un index en argument pour désigner le combobox. J'appelle ensuite cette procédure dans mes 17 macros evenementielles en précisant l'index. Cela me raccourcit le code.
    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
     
    Private Sub ComboBox1_Enter()
        subCmbEnter(1)
    End Sub
    Private Sub ComboBox1_Change()
       subCmbChange(1)
    End Sub
    Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
       subCmbExit(1)
    End Sub 
     
    '... idem pour tous les combobox de mon UserForm
     
    Private Sub ComboBox17_Enter()
        subCmbEnter(17)
    End Sub
    Private Sub ComboBox17_Change()
       subCmbChange(17)
    End Sub
    Private Sub ComboBox17_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
       subCmbExit(17)
    End Sub

    Mais je pense que la solution est dans les modules de classe que je ne connais pas encore.
    Je vais aller regarder ton lien.
    Merci

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Effectivement, si tu as 17 procédures événementielles à traiter, il vaut mieux passer par un module de classe.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Générer des diagrammes UML par le code Java
    Par ancrou dans le forum NetBeans
    Réponses: 3
    Dernier message: 03/12/2007, 10h17
  2. Manipulation des macros complémentaires par macro
    Par EvaristeGaloisBis dans le forum Général VBA
    Réponses: 2
    Dernier message: 25/08/2007, 18h40
  3. Générer des macros?
    Par skorpio dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/07/2007, 09h43
  4. Générer des macros?
    Par skorpio dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/07/2007, 15h31
  5. Générer des variables avec une boucle
    Par Anamelech dans le forum Delphi
    Réponses: 15
    Dernier message: 03/11/2006, 12h33

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