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 :

exécution de boucle de macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Par défaut exécution de boucle de macro
    Bonjour,

    je souhaiterais générer une boucle qui m'éxécute plusieurs maccros différentes suivant une ou plusieurs variables.

    par exemple voici mon programme actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If CB_GEN.Value = True And CB_POW_GEN.ListIndex = 0 Then Application.Run ("Macro1000")
    If CB_GEN.Value = True And CB_POW_GEN.ListIndex = 1 Then Application.Run ("Macro1001")
    If CB_GEN.Value = True And CB_POW_GEN.ListIndex = 2 Then Application.Run ("Macro1002")
    If CB_GEN.Value = True And CB_POW_GEN.ListIndex = 3 Then 
    Application.Run ("Macro1003")
    Ces lignes de programmes sont celle que je met sur les userform (click button ou object button pour exécuter mes tâches)

    Je voudrais faire juste une ligne de programme pour limiter le texte du programme.

    Et si je souhaite faire varier la première variable et la deuxième variables quel serait le programme à faire?

  2. #2
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    as-tu testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     If CB_GEN.Value = True Then 
        Application.Run ("Macro100" & CB_POW_GEN.ListIndex )
    End If
    sinon, il y a encore plus "propre"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If CB_GEN.Value = True Then 
        Call MaSub( CB_POW_GEN.ListIndex )
    End If
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub MaSub(byval POW_GEN)
        ' ton code ici
     
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Par défaut
    Merci pour cette aide.

    j'aimerais pouvoir générer un code à plusieurs variables dont une variable a pour état soit true ou false, une autre variable dans une liste et une autre ayant un état 1 ou 0 et selon les états ca exécute une maccro.

    donc c'est selon le choix de l'utilisateur je voudrais solutions possibles.

    un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     If CB_TY_SYS.ListIndex = 0 And CB_TY_SERVO.ListIndex = 0 And OB_NBPUMP1 = True And CB_HEATER = True Then Application.Run ("Macro1")
     
    If CB_TY_SYS.ListIndex = 0 And CB_TY_SERVO.ListIndex = 1 And OB_NBPUMP1 = True And CB_HEATER = True Then Application.Run ("Macro2")
     
    If CB_TY_SYS.ListIndex = 0 And CB_TY_SERVO.ListIndex = 0 And OB_NBPUMP1 = True And CB_HEATER = False Then Application.Run ("Macro3")
     
    If CB_TY_SYS.ListIndex = 0 And CB_TY_SERVO.ListIndex = 1 And OB_NBPUMP1 = True And CB_HEATER = False Then Application.Run ("Macro4")

  4. #4
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    re,
    il ne faut pas s'obstiner ...
    en terme de programmation, il est plus propre d'utiliser des arguments plutôt que de démultiplier du code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If CB_TY_SYS.ListIndex = 0 And OB_NBPUMP1 = True Then
      Call MaMacro(CB_TY_SERVO.ListIndex, CB_HEATER)
    End If
    ce qui te fait un doublet d'arguments ..
    et tout mettre dans une procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MaMacro(byval servo, byval heater)
     
    End Sub

  5. #5
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Par défaut
    Après plusieurs essais, je n'arrive pas à réaliser l'action voule.

    Je m'explique, ce je veux est selon la valeur des 2 arguments, ca m'exécute des maccros différentes, mais j'y arrive pas pas avec ce code :'(.

    j'ai donnée un exemple avec 2 arguments cela marche avec x arguments?

    J'aimerais des précisions.

    merci.

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

Discussions similaires

  1. Boucle dans macro SAS avec BY
    Par fafabzh6 dans le forum Macro
    Réponses: 5
    Dernier message: 17/06/2008, 12h08
  2. Réponses: 0
    Dernier message: 28/05/2008, 15h15
  3. Syntaxe:Exécution automatique d'une macro
    Par bebertol dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/06/2007, 11h20
  4. [VBA-E]exécution lente de la macro après aperçu
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/03/2006, 17h49
  5. exécution automatique d'une macro
    Par faayy dans le forum Access
    Réponses: 12
    Dernier message: 15/06/2005, 14h52

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