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 :

sub nom variable


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 91
    Points : 60
    Points
    60
    Par défaut sub nom variable
    Bonjour,

    Je voudrais savoir si il était possible de faire une boucle plutôt que d’écrire plusieurs fois des sub quasi identiques.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Public Sub TglOP60_Click()
    Affichage TglOP60, "60" 'Fonction Affichage NomDuBouton 'NumDePro
    End Sub
    Public Sub TglOP150_Click()
    Affichage TglOP150, "150"
    End Sub
    Public Sub TglOP520_Click()
    Affichage TglOP520, "520"
    End Sub
    Je voulais savoir si il existait un code de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Dim z As Variant
    Dim pi As Integer
    z = Array(60, 150, 520)
    Dim taille As Integer
    taille = UBound(z)
     
    For pi = 0 To taille
    ….
    Next pi
    Définir un tableau contenant toutes mes variables et ensuite écrire quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub TglOP & z(pi)_Click()
    Affichage TglOP& z(pi)&, "& z(pi)"
    End Sub

    Merci d’avance,
    Guillaume

  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
    Regardes du côtés des Classes
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour guillome29,

    Tout simplement comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For pi = 0 To UBound(mon_tableau)
        Affichage TglOP150, mon_tableau(pi)
    Next pi
    Tu as quasiment tout codé. Non ?

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 91
    Points : 60
    Points
    60
    Par défaut
    Bonsoir,
    Oui je suis d'accord avec toi mais dans quel sub le mets tu ce code ? Je veux que ca se déclenche à l'événement click de plusieurs boutons

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,


    Citation Envoyé par guillome29 Voir le message
    Bonsoir,
    Oui je suis d'accord avec toi mais dans quel sub le mets tu ce code ? Je veux que ca se déclenche à l'événement click de plusieurs boutons
    Dans un module "ordinaire"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub FaitQuelqueChose()
       etc. 
    End Sub
    Dans la procédure d'événement du/des bouton(s), ou même d'un autre contrôle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub QuelqueChose_Click
       FaitQuelqueChose
    end sub
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  6. #6
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, comme déjà conseillé plus haut, regarde de ce côté : Création et utilisation de classes personnalisées en VB 6.0 et VBA (partie 1) . Via une recherche tu devrais trouver également des exemples

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 91
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Regardes du côtés des Classes
    Bonjour,

    J'ai lu l'article que kiki29 a envoyé par lien, mais je ne vois pas le lien avec ma demande..

  8. #8
    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
    Tes TglOPxx sont des contrôles? si oui lesquels.
    Ils sont sur un userform ou ActiveX sur une feuille?

    Sois précis
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 91
    Points : 60
    Points
    60
    Par défaut
    Bonjour,

    Oui il s'agit de contrôles. C'est des boutons bascules présents sur ma feuille, controle ActiveX

  10. #10
    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
    Exemple

    Dans un module de classe nommé clsTB on crée l'évènement générique (ici _Click)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
     
    Public WithEvents TB As MSForms.ToggleButton
     
    Private Sub TB_Click()
     
    'notre code générique qui sera appliqué à tous les togglebutton dont le nom commence par TglOP
    'Exemple on bascule la caption entre gras et normal à cahque click et on affiche le nombre associé au nom
     
    TB.Font.Bold = Not TB.Font.Bold
    MsgBox Replace(TB.Name, "TglOP", "")
    End Sub
    Pour insancier la classe, par exemple j'utilise l'évènement Activate de la feuille (Tu peux choisir n'importe quel évènement qui doit être déclenché pour instancier)

    Module de la feuille
    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
    Option Explicit
     
    Dim Tbl() As clsTB
     
    Private Sub Worksheet_Activate()
    Dim Ct As OLEObject
    Dim i As Integer
     
    For Each Ct In ActiveSheet.OLEObjects
        If Left(Ct.Name, 5) = "TglOP" Then
            i = i + 1
            ReDim Preserve Tbl(1 To i)
            Set Tbl(i) = New clsTB
            Set Tbl(i).TB = Ct.Object
        End If
    Next Ct
    End Sub

    Le code générique est affecté à tous les togglebutton de la feuille dont le nom commence par TglOP (sans limiter le nombre et sans changer le code même si on ajoute d'autres togglebutton.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 91
    Points : 60
    Points
    60
    Par défaut
    Merci mercatog.

    • Ca signifie que la fonction affichage (de mon premier post sur la discussion) doit se placer dans le module de classe, dans le sub TB_ Click ?
    • le Tbl(i) correspond à mon z(pi) ?



    Merci encore,
    Guillaume

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 91
    Points : 60
    Points
    60
    Par défaut
    Bonjour,
    J'ai réussi à implémenter le code et les boutons basculés font les bonnes actions, au clic.
    Néanmoins, dès que je passe en mode création (pour déplacer un bouton par exemple). Et que j'enlève le mode creation, mes boutons ne font plus rien lorsque je clique dessus. Étrange ou non ?

  13. #13
    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
    Pour initialiser la classe, il faut d'abord déclencher l'évènement Activate de la feuille.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

Discussions similaires

  1. [VB.Net]Comment assigner contenu variable> nom variable ?
    Par jazz matazz dans le forum VB.NET
    Réponses: 4
    Dernier message: 03/02/2006, 17h28
  2. construction nom variable
    Par philou8 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 17/01/2006, 11h13
  3. [FLASH MX] nom variable pour une fonction
    Par totoche dans le forum Flash
    Réponses: 2
    Dernier message: 20/12/2005, 14h00
  4. Réponses: 10
    Dernier message: 06/04/2005, 15h44
  5. Récupération de la valeur d'un champ au nom variable
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/02/2005, 15h13

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