Ayant remis à plat un projet, et pour suivre le bon conseil de TootFatBoys, je créé cette nouvelle discussion.
J'ai mis en place ce code qui permet de désactiver toutes les CheckBox de mon formulaire si il y en a une de cochée, hors, j'ai dix CheckBox à gérer.
Dois-je répéter ce code pour les dix ou existe t-il une manière de le simplifier pour qu'il s'applique si on clique sur une des dix CheckBox ?
Peut-être faut-il passer par un module... Je ne sais pas.
Merci par avance pour votre aide
VB:
Private Sub Chk_1_Click()
Dim ctrl As Control
'Si la CheckBox 1 est cochée
If Chk_1.Value = True Then
'alors toutes les CheckBox sont désactivées
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
ctrl.Enabled = False
End If
Next ctrl
'Sinon elles restent activées
Else
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
ctrl.Enabled = True
End If
Next ctrl
End If
End Sub
@NONO14
J'arrive surement après la bataille
Je n'ai lu que le code VBA de ton premier message
En le modifiant comme ci-dessous
VB:
Private Sub Chk_1_Click()
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If Not ctrl.Name Like "Chk_1" Then
ctrl.Enabled = Chk_1.Value
End If
End If
Next ctrl
End Sub
On obtient ce tu souhaites, non ?
NONO14 à dit:
ce code qui permet de désactiver toutes les CheckBox de mon formulaire si il y en a une de cochée
Private Sub Cmb_Valider_Click()
'Vérifier chaque case à cocher et exécuter une action spécifique
Indx = QuelChkBx '---->Ici
Unload Me
Select Case Indx'---->Ici
Case 1
' Unload Me
UfGestTemps.Show (0)
With UfGestTemps
.MultiPage1.Pages(0).Enabled = True
.MultiPage1.Pages(1).Enabled = False
.MultiPage1.Pages(2).Enabled = False
.MultiPage1.Pages(0).Txt_Nom.SetFocus
.Cbx_Salarié.Visible = False
.Label1.Visible = False
End With
Case 2
' Unload Me
UfGestTemps.Show (0)
With UfGestTemps
.MultiPage1.Pages(0).Enabled = False
.MultiPage1.Pages(1).Enabled = True
.MultiPage1.Pages(2).Enabled = False
.Cbx_Salarié.SetFocus
End With
Case 3
' Unload Me
UfGestTemps.Show (0)
With UfGestTemps
.MultiPage1.Pages(0).Enabled = True
.MultiPage1.Pages(1).Enabled = False
.MultiPage1.Pages(2).Enabled = False
.Cbx_Salarié.SetFocus
End With
Case 4
' Unload Me
UfPointage.Show (0)
With UfPointage
.Txt_Noms.Enabled = False
.Txt_Code.SetFocus
End With
Case 5
' Unload Me
UfGestTemps.Show (0)
With UfGestTemps
.MultiPage1.Pages(0).Enabled = False
.MultiPage1.Pages(1).Enabled = True
.MultiPage1.Pages(2).Enabled = False
.Cbx_Salarié.SetFocus
End With
Case 6
' Unload Me
Sheets("Liste_agents").Activate
DeProtege ("Liste_agents")
Case 7
' Unload Me
UfGestTemps.Show (0)
With UfGestTemps
.MultiPage1.Pages(0).Enabled = False
.MultiPage1.Pages(1).Enabled = False
.MultiPage1.Pages(2).Enabled = True
.Cbx_Salarié.SetFocus
End With
Case 8
' Unload Me
CopierColler
Case 9
' Unload Me
SauvegarderPointages
Case Else
Exit Sub
End Select
End Sub
Public Function QuelChkBx() As Byte '---->Ici
For i = 1 To 9
If UfMenusAdmin.Controls("CheckBox" & i) Then
QuelChkBx = i
Exit For
End If
Next i
End Function
@NONO14
J'arrive surement après la bataille
Je n'ai lu que le code VBA de ton premier message
En le modifiant comme ci-dessous
VB:
Private Sub Chk_1_Click()
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
If Not ctrl.Name Like "Chk_1" Then
ctrl.Enabled = Chk_1.Value
End If
End If
Next ctrl
End Sub
Bonjour Staple1600,
Merci pour ton code, mais la solution m'a déjà était proposée. Cependant, je le garde sous le coude car il y a d'autres projets dans les tiroirs.
Private Sub Cmb_Valider_Click()
'Vérifier chaque case à cocher et exécuter une action spécifique
Indx = QuelChkBx '---->Ici
Unload Me
Select Case Indx'---->Ici
Case 1
' Unload Me
UfGestTemps.Show (0)
With UfGestTemps
.MultiPage1.Pages(0).Enabled = True
.MultiPage1.Pages(1).Enabled = False
.MultiPage1.Pages(2).Enabled = False
.MultiPage1.Pages(0).Txt_Nom.SetFocus
.Cbx_Salarié.Visible = False
.Label1.Visible = False
End With
Case 2
' Unload Me
UfGestTemps.Show (0)
With UfGestTemps
.MultiPage1.Pages(0).Enabled = False
.MultiPage1.Pages(1).Enabled = True
.MultiPage1.Pages(2).Enabled = False
.Cbx_Salarié.SetFocus
End With
Case 3
' Unload Me
UfGestTemps.Show (0)
With UfGestTemps
.MultiPage1.Pages(0).Enabled = True
.MultiPage1.Pages(1).Enabled = False
.MultiPage1.Pages(2).Enabled = False
.Cbx_Salarié.SetFocus
End With
Case 4
' Unload Me
UfPointage.Show (0)
With UfPointage
.Txt_Noms.Enabled = False
.Txt_Code.SetFocus
End With
Case 5
' Unload Me
UfGestTemps.Show (0)
With UfGestTemps
.MultiPage1.Pages(0).Enabled = False
.MultiPage1.Pages(1).Enabled = True
.MultiPage1.Pages(2).Enabled = False
.Cbx_Salarié.SetFocus
End With
Case 6
' Unload Me
Sheets("Liste_agents").Activate
DeProtege ("Liste_agents")
Case 7
' Unload Me
UfGestTemps.Show (0)
With UfGestTemps
.MultiPage1.Pages(0).Enabled = False
.MultiPage1.Pages(1).Enabled = False
.MultiPage1.Pages(2).Enabled = True
.Cbx_Salarié.SetFocus
End With
Case 8
' Unload Me
CopierColler
Case 9
' Unload Me
SauvegarderPointages
Case Else
Exit Sub
End Select
End Sub
Public Function QuelChkBx() As Byte '---->Ici
For i = 1 To 9
If UfMenusAdmin.Controls("CheckBox" & i) Then
QuelChkBx = i
Exit For
End If
Next i
End Function
Bonjour à toutes et à tous, Comment à partir de cette fonction, créée par patricktoulon que je remercie au passage, peut-on placer les chiffres en premiers et les lettres à la suite, pour former par exemple 123abc. Ce code viendra s'ajouter au 3 premières lettres du Nom de la TextBox1 comme...