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 :

vba excel - Mettre en variable un groupe de contrôle et des userforms correspondants


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Acteur de developpement local
    Inscrit en
    Décembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Acteur de developpement local
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 11
    Par défaut vba excel - Mettre en variable un groupe de contrôle et des userforms correspondants
    Bonjour,

    Après des recherches en vains, je suis venu vers vous pour demander aide.
    Sur mon userform (usf_1) du genre fenêtre principale, il y a 4 boutons de commande (cmdB_1, cmdB_2, cmdB_3 et cmdB_4) qui sont censés appelés respectivement des userforms spécifiques (usf_2, usf_3, usf_4, usf_5) .
    La procédure est la même, pour chaque boutons, comme ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub cmdB_1_Click()	
    If checkbox.value = true then ‘ checkbox unique et non visible par l’utilisateur 
    	Usf_2.show ‘afficher l’userform correspondants
    End if
    End sub
    Serait-il possible de mettre en variable les commandeButtons et les userforms correspondants afin de ne faire répéter à chaque fois les mêmes lignes.
    Quelqu’un aurait-il une piste ? C’est une question bête de ma part mais, je début en vba et cherche à perfectionner mes codes .

    Merci par l'avance de votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    la question n'est pas bête, et la solution n'est pas la partie la plus simple en VBA : modules de classe

    voici un lien avec 3 tutoriels pour apprendre : http://excel.developpez.com/faq/?pag...ntroductionPOO

    et un sous-lien (issu du dernier des trois liens) qui traite de ton sujet : http://tissotemmanuel.developpez.com...classe/#LIII-B

  3. #3
    Membre averti
    Homme Profil pro
    Acteur de developpement local
    Inscrit en
    Décembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Acteur de developpement local
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 11
    Par défaut
    Merci pour votre piste joe.levrai.
    Je savais que la procédure aura recours à l'utilisation des modules classes , je vais faire un tour dans les liens que vous avez donner et revenir pour confirmer la résolution. (y)

  4. #4
    Membre averti
    Homme Profil pro
    Acteur de developpement local
    Inscrit en
    Décembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Acteur de developpement local
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 11
    Par défaut
    Bonjour, avec un peu de bidouillage j'ai réussi à m'avancer mais pas encore assez pour mon projet.
    Les lignes de code ci-après permettent de boucler sur un groupe de bouton . Le grand pas et maintenant de boucler avec les Userforms .

    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
    25
    26
    27
    28
    '------ Dans module de classe : cmdusf
    Option Explicit
    Public WithEvents cmdgroup As CommandButton
    Private Sub cmdgroup_Click()
    	If usf_1.checkbox.Value = True Then
    		If cmdgroup.Caption = "cmdB_1" Then usf_2.Show
    		If cmdgroup.Caption = "cmdB_2" Then usf_3.Show
    		If cmdgroup.Caption = "cmdB_3" Then usf_4.Show
    		If cmdgroup.Caption = "cmdB_4" Then usf_5.Show
    	Else
    		MsgBox "Veuilez choisir une action", vbInformation, "Choix obliqatoire"
    	End If
    End Sub
     
    '------ Dans l'userform principale : usf_1
    Option Explicit
    Dim Buttons() As New cmdusf
    Private Sub UserForm_Initialize()
    Dim Ctrl As Control
    Dim Count As Integer
        For Each Ctrl In usfmain.Controls
            If TypeName(Ctrl) = "CommandButton" Then
                Count = Count + 1
                ReDim Preserve Buttons(1 To Count)
                Set Buttons(Count).cmdgroup = Ctrl
            End If
        Next   
    End Sub
    Un p'ti coup de pouce sera un bienvenu

    je me suis caché la tête sur une journée toute entière mais j'ai pas trouvé la bonne soluce. On creuse encore et encore...

  5. #5
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Moi perso j'aurais rendu visible ou invisible les boutons en fonction des besoins

    A+

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Buttons() As cmdusf
    Private Sub UserForm_Initialize()
    Dim Ctrl As Control
    Dim Count As Integer
        For Each Ctrl In usfmain.Controls
            If TypeName(Ctrl) = "CommandButton" Then
                Count = Count + 1
                ReDim Preserve Buttons(1 To Count)
                Set Buttons(Count) = new cmdusf
                Set Buttons(Count).cmdgroup = Ctrl
            End If
        Next   
    End Sub

  7. #7
    Membre averti
    Homme Profil pro
    Acteur de developpement local
    Inscrit en
    Décembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Acteur de developpement local
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 11
    Par défaut boucler sur les userforms en fonction des bouttons cliqués
    Bonjour, rdurupt
    merci pour votre réponse.
    cependant, c'est les userform eux même qui est le sujet du boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'module de class : cmdusf ->
    '---
    If usf_1.checkbox.Value = True Then
    		If cmdgroup.Caption = "cmdB_1" Then usf_2.Show
    		If cmdgroup.Caption = "cmdB_2" Then usf_3.Show
    		If cmdgroup.Caption = "cmdB_3" Then usf_4.Show
    		If cmdgroup.Caption = "cmdB_4" Then usf_5.Show
    	Else
    '---
    le problème était de pouvoir boucler sur les USERFORM (usf_2 à 5) respectivement à chaque clique sur les commandbutton cmdB_1 à 4 que j'ai groupé dans la class cmdgroup.

  8. #8
    Membre averti
    Homme Profil pro
    Acteur de developpement local
    Inscrit en
    Décembre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Acteur de developpement local
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2014
    Messages : 11
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    Bonjour,

    Moi perso j'aurais rendu visible ou invisible les boutons en fonction des besoins

    A+
    Bonjour Igloobel,

    Je vais peut être adopter votre proposition pour ce projet pour faire rapide.
    N'empêche que ce problème reste sans réponse et un jour.. viendra ...

    Mais bon merci pour l'idée.

  9. #9
    Invité
    Invité(e)
    Par défaut
    l'avantage d'un module de classe c'est qu'il est autonome!
    vue que tu peux lui passer tous les objets que tu veux inutile de faire référence au If usf_1.checkbox.Value = True Then!
    Code UserForm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Buttons() As cmdusf
    Private Sub UserForm_Initialize()
    Dim Ctrl As Control
    Dim Count As Integer
        For Each Ctrl In usfmain.Controls
            If TypeName(Ctrl) = "CommandButton" Then
                Count = Count + 1
                ReDim Preserve Buttons(Count)
                Set Buttons(Count) = New cmdusf
                Set Buttons(Count).cmdgroup = Ctrl
                Set Buttons(Count).MyCheckBox = CheckBox
            End If
        Next
    End Sub
    Code Module de classe : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Public WithEvents cmdgroup As CommandButton
    Public WithEvents MyCheckBox As CheckBox
    Private Sub cmdgroup_Click()
        If MyCheckBox.Value = True Then
            If cmdgroup.Caption = "cmdB_1" Then usf_2.Show
            If cmdgroup.Caption = "cmdB_2" Then usf_3.Show
            If cmdgroup.Caption = "cmdB_3" Then usf_4.Show
            If cmdgroup.Caption = "cmdB_4" Then usf_5.Show
        Else
            MsgBox "Veuilez choisir une action", vbInformation, "Choix obliqatoire"
        End If
    End Sub

Discussions similaires

  1. [VBA - Excel] mettre un racourci clavier
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/10/2006, 13h41
  2. [VBA-Excel]Mettre dans un tableau le contenu d'un fichier
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/07/2006, 16h37
  3. [VBA - Excel]Concatenation checkbox/variable
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/06/2006, 16h45
  4. [Excel]Mettre une variable dans une fonction
    Par soad029 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/04/2006, 12h00
  5. [VBA][Excel]Mettre un bouton d'aide sur un userform
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/01/2006, 18h30

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