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 :

Appeler une procédure controle avec le symbole '&' [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Par défaut Appeler une procédure controle avec le symbole '&'
    Bonjour à tous !

    J'ai crée près d'une cinquantaine de ToggleButton dans ma feuille Excel, chaque bouton pour une ligne.

    Voici le code pour chaque togglebutton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub ToggleButton1_Click()
     
    If ToggleButton1 = True Then
        ToggleButton1.Caption = "Enregistré"
        ToggleButton1.Enabled = False
    End If
     
    End sub
    J'aimerai pouvoir créer qu'une seule procedure et pouvoir faire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Call ToggleButton & i & _Click
     
    if toggleButton & i = True then
    ...
    End if
    Est-ce possible ?

  2. #2
    Expert éminent 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
    Par défaut
    C'est la cas pour utiliser les module de classe

    Insère un module de classe (par défaut nommé Classe1)
    Y insère le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public WithEvents TB As MSForms.ToggleButton
     
    Private Sub TB_Click()
     
    With TB
        If .Value Then
            .Caption = "Enregistré"
            .Enabled = False
        End If
    End With
    End Sub
    Et enfin dans le module de ton userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Tbl() As New Classe1
     
    Private Sub UserForm_Initialize()
    Dim Ct As Control
    Dim i As Integer
     
    For Each Ct In Me.Controls
        If TypeOf Ct Is MSForms.ToggleButton Then
            i = i + 1
            ReDim Preserve Tbl(1 To i)
            Set Tbl(i).TB = Ct
        End If
    Next Ct
    End Sub

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Par défaut
    Super merci je ne connaisssais pas .

    Par contre mes boutons sont des boutons activeX dans la feuille de calcul (et donc pas d'userform...)

    J'ai essayé de remplacer userform_initialize par worksheet_activate mais ca ne marche pas...

  4. #4
    Expert éminent 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
    Par défaut
    Remplace le code par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Tbl() As New Classe1
     
    Private Sub Worksheet_Activate()
    Dim Ct As OLEObject
    Dim i As Integer
     
    For Each Ct In ActiveSheet.OLEObjects
        If TypeOf Ct.Object Is MSForms.ToggleButton Then
            i = i + 1
            ReDim Preserve Tbl(1 To i)
            Set Tbl(i).TB = Ct.Object
        End If
    Next Ct
    End Sub
    Le code de la classe Classe1 reste intact

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Par défaut
    J'ai copié collé exactement le code, mais lorsque je clique sur un togglebutton, il ne se passe pas ce qui est prévu, j'ai ajouté un msgbox, mais rien non plus...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mercatog Voir le message
    C'est la cas pour utiliser les module de classe

    Insère un module de classe (par défaut nommé Classe1)
    Y insère le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public WithEvents TB As MSForms.ToggleButton
     
    Private Sub TB_Click()
     
    With TB
        If .Value Then
            .Caption = "Enregistré"
            .Enabled = False
        End If
    End With
    End Sub
    Et enfin dans le module de ton userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public WithEvents TB As MSForms.ToggleButton
      Public I As Long
    Private Sub TB_Click()
    UserForm1.ToggleButton_Click I, TB
     
    End Sub
    UserForm:
    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
    Dim Tbl() As New Classe1
    Private Sub UserForm_Initialize()
    Dim Ct As Control
    Dim I As Integer
     
    For Each Ct In Me.Controls
        If TypeOf Ct Is MSForms.ToggleButton Then
            I = I + 1
            ReDim Preserve Tbl(1 To I)
            Set Tbl(I).TB = Ct
            Tbl(I).I = I
        End If
    Next Ct
    End Sub
    Public Sub ToggleButton_Click(Index As Long, ByVal TB As MSForms.ToggleButton)
    Select Case Index
            Case 1
                MsgBox "Click sur le bouton : " & Index
            Case 2
                MsgBox "Même chose pour  sur le bouton : " & Index
            Case 3
                MsgBox "Et enfin le bouton : " & Index
    End Select
    End Sub
    Dernière modification par Invité ; 16/07/2013 à 16h22.

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Par défaut
    Merci de nouveau, mais comme dit dans mon precedent post, ce n'est pas un userform (je me suis trompee dans le titre), mais des controles ActiveX dans la feuille de calcul...

  8. #8
    Expert éminent 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
    Par défaut
    Pour initialiser la classe, tu dois activer ta feuille X. Pour cela, active une autre feuille et réactive ta feuille X.

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Par défaut
    WONDERFUL ! Merci 1000 fois

    Autre question :

    Comment recuperer le numero du togglebutton qui est cliqué ?
    Car je souhaite appeler une procedure qui prendrai en parametre ce numéro...

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

Discussions similaires

  1. [Débutant] Appel d'une procédure stockée avec paramètre en output
    Par Malainet dans le forum Linq
    Réponses: 5
    Dernier message: 11/02/2013, 16h26
  2. [Débutant] Appel d'une procédure stockée avec paramètres
    Par Bakkach dans le forum VB.NET
    Réponses: 6
    Dernier message: 09/10/2012, 16h41
  3. Appel d'une procédure stockée avec c#
    Par ing_ensi84 dans le forum C#
    Réponses: 3
    Dernier message: 05/01/2012, 10h28
  4. appeler une procédure avec phpmyadmin ou php
    Par lolo92 dans le forum Installation
    Réponses: 1
    Dernier message: 13/02/2008, 15h39
  5. Appel d'une procédure stockée avec un curseur
    Par lapanne dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/12/2006, 16h24

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