Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion apdf1
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

apdf1

XLDnaute Impliqué
Bonjour,

J'ai un USF avec Plusieurs CheckBox et un CdeButton. Est il possible d'avoir un code qui me permet d'avoir le CdeButton visible que si j'ai sélectionné un CheckBox.

Ci-joint mon fichier qui seras plus parlant.

Je vous remercie par avance et vous souhaite une bonne journée

Cordialement

Max
 

Pièces jointes

Re : Checkbox

Bonjour Caillou, Laetitia,et merci

C'est vraiment la grande classe..... J'ai pas 30 CheckBoxs mais 16 et avec un code simplifier c'est vraiment génial....!

Quoi dire de plus un grand et ne change rien. Bonne journée à tous

Max
 
Re : Checkbox

Bonjour Caillou, Max, le Forum

Une approche "Cousine" de Caillou

Code:
Sub CheckBox_Check()
Dim CheckBox_Ticked As Boolean
Dim CTRL As Control
CheckBox_Ticked = False
    For Each CTRL In Me.Controls
 
            If Left(CTRL.Name, 8) = "CheckBox" Then 
'NB CheckBox doit être indiqué avec la casse exact (sinon Option Compare Text
 
                If CTRL.Value = True Then
                    CheckBox_Ticked = True
                End If
            End If
 
    Next CTRL
If CheckBox_Ticked = True Then
    Me.CommandButton1.Visible = True
Else
    Me.CommandButton1.Visible = False
End If
 
End Sub
Private Sub CheckBox1_Click()
    CheckBox_Check
End Sub
Private Sub CheckBox2_Click()
    CheckBox_Check
End Sub
Private Sub CheckBox3_Click()
    CheckBox_Check
End Sub
Private Sub CheckBox4_Click()
    CheckBox_Check
End Sub
Private Sub CheckBox5_Click()
    CheckBox_Check
End Sub
Private Sub CheckBox6_Click()
    CheckBox_Check
End Sub

Une autre variante avec TypeName du Contrôle (plus sure, mais TOUTES Lex CheckBox seront vues, avec la méthode au dessus on peut finter avec le nom du contrôle pour être vu ou non... (Voir aussi le TAG du Contrôle qui peut être utile aussi)

Code:
Sub CheckBox_Check()
Dim CheckBox_Ticked As Boolean
Dim CTRL As Control
CheckBox_Ticked = False
    For Each CTRL In Me.Controls
 
 
            If TypeName(CTRL) = "CheckBox" Then  
'Les NAMES des CheckBox n'ont pas d'importance, c'est le type qui est comparé.
 
                If CTRL.Value = True Then
                    CheckBox_Ticked = True
                End If
            End If
 
    Next CTRL
If CheckBox_Ticked = True Then
    Me.CommandButton1.Visible = True
Else
    Me.CommandButton1.Visible = False
End If
 
End Sub


Cordialement

@+Thierry

EDIT Bonjour Laetitia, oui un Module de Class est bienvenu dans ce cas là, peut-être sur le TypeName plutot que sur le Name du Contrôle.
 
Dernière édition:
Re : Checkbox

Re Hello

Avant de partir j'ai retrouvé deux fils interressants au cas où


https://www.excel-downloads.com/threads/boucle-avec-des-checkbox.16453/

https://www.excel-downloads.com/threads/commandbutton-x-le-x-en-variable.34800/

Dans le second j'ai redécodé le code (format HTML naze dans le fil)

Code:
'CREATION USERFORM à la volée ! (nécessite de cocher "Accès approuvé au modèle d'objet du projet VBA
Option Explicit
 
Const Sign As String = "Thierry 's Truc sur [URL="https://www.excel-downloads.com/"]www.Excel-Downloads.com[/URL], March 2005"
Const TxbWidth As Integer = 65
Const TxbHeigth As Integer = 15
Const TxbLeft As Integer = 90
Const TxbTop As Integer = 15
Const LblWidth As Integer = 70
Const LblHeigth As Integer = 15
Const LblLeft As Integer = 10
Const LblTop As Integer = 15
Sub MyUserFormAutoBuilder()
Dim ObjUSF As Object
Dim ObjTextBox As Object, ObjLabel As Object, CmdB As Object, LstB As Object
Dim TopPlusHeight As Integer
Dim X As Byte
Dim VLblLeft As Integer
Dim VTxbLeft As Integer
Set ObjUSF = ThisWorkbook.VBProject.VBComponents.Add(3)
With ObjUSF
.Properties("Caption") = Sign
.Properties("Width") = 660
.Properties("Height") = 195
.Properties("ShowModal") = True
End With
For X = 1 To 40
    Set ObjTextBox = ObjUSF.Designer.Controls.Add("Forms.TextBox.1")
    Set ObjLabel = ObjUSF.Designer.Controls.Add("Forms.Label.1")
 
    Select Case X
        Case 1 To 10
        If X = 1 Then TopPlusHeight = LblTop
        VLblLeft = LblLeft
        VTxbLeft = TxbLeft
        Case 11 To 20
        If X = 11 Then TopPlusHeight = LblTop
        VLblLeft = LblLeft + 160
        VTxbLeft = TxbLeft + 160
        Case 21 To 30
        If X = 21 Then TopPlusHeight = LblTop
        VLblLeft = LblLeft + 320
        VTxbLeft = TxbLeft + 320
        Case 31 To 40
        If X = 31 Then TopPlusHeight = LblTop
        VLblLeft = LblLeft + 480
        VTxbLeft = TxbLeft + 480
    End Select
 
 
    With ObjLabel
        .Caption = "Label TextBox " & X
        .Left = VLblLeft: .Top = TopPlusHeight: .Width = LblWidth: .Height = LblHeigth
        .Tag = "Thierry's Demo"
        .Name = "LblDemo" & X
    End With
    With ObjTextBox
        .Left = VTxbLeft: .Top = TopPlusHeight: .Width = TxbWidth: .Height = TxbHeigth
        .Tag = "Thierry's Demo"
        .Name = "TxbDemo" & X
'        .TextAlign = fmTextAlignRight
    End With
 
    TopPlusHeight = TopPlusHeight + 15
Next
VBA.UserForms.Add(ObjUSF.Name).Show
Set ObjUSF = Nothing
Set ObjTextBox = Nothing
Set ObjLabel = Nothing
End Sub

A essayer dans un classeur vierge


Et pour fabriquer les macros :

Code:
Sub MacroWrite() 'lol !!
Dim I As Byte
Dim MyString As String
For I = 1 To 40
MyString = MyString & "Private Sub TxbDemo" & I & "_Change()" & vbCrLf & _
"TheTextBoxChecker" & " " & I & vbCrLf & _
"End Sub" & vbCrLf & vbCrLf
Next
With New DataObject
.SetText MyString
.PutInClipboard
End With
End Sub
 
'A COLLER DANS LE MODULE DU USERFORM (CTRL + V)

Bon amusement

@+Thierry
 
Re : Checkbox

Bonjour le fil, bonjour le forum,

Désolé je n'apporte rien à cette discussion mais voyant l'appartition d'un extra-terrestre rolling stonien je ne peux m'empêcher de le saluer bien bas tout en le pourrissant pour la raritude de ses interventions.
 
Re : Checkbox

Bonjour mon Cher Robert, Re-bonjour le Fil, le Forum

Et oui pas trop souvent sur XLD, mais bon quand je peux je regarde un peu. Ca fait plaisir de te retrouver en tout cas.

Bien à toi
@+Thierry
 
Re : Checkbox

Hello merci à tous

Bravo Fo_Rum très bien l'idée de la ListBox. Merci Laetitia, Re-Salut Robert, Heureux pour Max

J'avais écrit un long post, mais bon, boum plantage en envoie et tout perdu... Enfin salut à tous

@+Thierry
 
Re : Checkbox

Re

Il est déconseillé d'appeler Userform1 directement dans la classe
Il est préférable de lui passer au préalable le parent avec ME.
Si tu te déclare un nouvel objet userform1 ou si tu renome userform1, l'objet ne marche plus.
Il faut tenir compte, à mon avis, qu'un objet classe doit être exportable en OCX.
 
Re : Checkbox

re,🙂🙂
j'ai precise "dans ce cas la"
j'ai deja du mal a concevoir qu'un utilisateur a accés pour modifier le programme suppression ajout ect renommer enfin bon!!!
sur ta reflexion on peut changer le nom de l'user & plusieurs users egalement
pour le bouton tu le changes dans proprietees & initialisation
je le change egalement dans proprietees & module de classe
dans ce cas la bien oblige d'utiliser ME & set

a+ leti
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
248
  • Question Question
Microsoft 365 Suivi de budget
Réponses
5
Affichages
291
Réponses
10
Affichages
385
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…