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 :

Rendre le nom d'une procédure dynamique [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Tout juste diplômé Master 2 Miage (SI / Aide à la prise de décision)
    Inscrit en
    Avril 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Tout juste diplômé Master 2 Miage (SI / Aide à la prise de décision)

    Informations forums :
    Inscription : Avril 2011
    Messages : 137
    Par défaut Rendre le nom d'une procédure dynamique
    Bonjour,

    Je cherche la syntaxe pour rendre le nom d'une procédure dynamique.
    Ma procédure s'appelle SearchDevise.
    J'aimerai savoir s'il est possible de créer n procédure différentes :
    SearchDevise1
    SearchDevise2
    ...
    SearchDevisen
    avec une variable "num_procédure" qui s'incrémente dans ma boucle.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Un exemple à adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
    For i = 1 To 2
        Run "test" & i
    Next i
    End Sub
     
    Sub test1()
    MsgBox "toto"
    End Sub
     
    Sub test2()
    MsgBox "tutu"
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Tout juste diplômé Master 2 Miage (SI / Aide à la prise de décision)
    Inscrit en
    Avril 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Tout juste diplômé Master 2 Miage (SI / Aide à la prise de décision)

    Informations forums :
    Inscription : Avril 2011
    Messages : 137
    Par défaut
    Ok, merci, mais dans ce cas, nous sommes toujours obligé de "détaillé" chaque procédure. Seule l'exécution est dynamique.

    N'y a-t-il pas un moyen de déclarer qu'une seule procédure du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 1 to num_procédure 
    sub SearchDevise & num_procédure & () 
    ...<contenu de la procédure dynamique lui aussi> 
    end sub 
    next i
    (syntaxe fausse bien entendu)

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Pas comme ça, tu ne peux pas mettre une sub à l'intérieur d'un code. Pourquoi ne pas passer un paramètre à la macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test3()
        For i = 1 To num_procédure
            SearchDevise num_procédure
        Next i
    End Sub
     
    Sub SearchDevise(paramètre)
        'xxx
    End Sub
    Sinon, tu peux construire du code dynamiquement

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu...!!!
    bonjour


    ici on peut parler d'argument
    c'est a dire transporter une variable ou une constante entre plusieurs macro ou fonctions

    comme te la suggéré daniel.cmais avec une petite nuance on va faire la memchose dans la meme macro

    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
     
    Sub test()
    For i = 1 To 3
        ma_sub (i)
    Next i
    End Sub
     
    Sub ma_sub(num_procédure As Variant)
     
    Select Case num_procédure
     
     Case 1
    MsgBox "riri"
    Case 2
    MsgBox "fifi"
    Case 3
    MsgBox "loulou"
    End Select
    End Sub
    voila tu a tes trois sub dans la meme sub

    on pourrait meme faire une fonction de la meme maniere

    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
    Sub test()
    For i = 1 To 3
      MsgBox le_nom(i) 'ici dans le message box le nom s'affichera en fonction de la variable i
    Next i
    End Sub
     
    Public Function le_nom(num_procédure As Variant) ' ici la variable num_procédure correspondra a i de la sub "test"
     
        Select Case num_procédure
     
        Case 1
            le_nom = "riri"
        Case 2
            le_nom = "fifi"
        Case 3
            le_nom = "loulou"
        End Select
    End Function
    voila j'espere que ces explications te seront plus parlantes
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre confirmé
    Profil pro
    Tout juste diplômé Master 2 Miage (SI / Aide à la prise de décision)
    Inscrit en
    Avril 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Tout juste diplômé Master 2 Miage (SI / Aide à la prise de décision)

    Informations forums :
    Inscription : Avril 2011
    Messages : 137
    Par défaut
    Merci beaucoup

    Et si mon nombre de procédure est dynamique ... ?
    Je vais tester de faire une boucle sur les Case.

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

Discussions similaires

  1. [XL-2003] Référence au nom d'une procédure / fonction
    Par laurentabj dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/09/2009, 15h55
  2. [XL-2003] Faire référence au nom d'une procédure Sub
    Par CC25 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/06/2009, 09h48
  3. Appel d'une procédure dynamique
    Par bebert13 dans le forum SQL
    Réponses: 8
    Dernier message: 05/06/2008, 18h57
  4. Réponses: 2
    Dernier message: 15/05/2007, 10h34
  5. Retour du nom d'une procédure
    Par DFoze dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 16/06/2006, 22h04

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