XL 2013 Bloquer un CommandButton si OptionButton pas actif

Citronflexe

XLDnaute Junior
Bonjour à tous,


Je suis à la recherche d'aide quant au problème suivant :

Dans le fichier ci-joint, cliquer sur le CommandButton ouvre un UserForm. Dans cet UserForm, j'aimerais bloquer les CommandButtons "Poste suivant" et "Terminer" tant qu'il n'y a pas un OptionButton de sélectionné dans les Frames "Poste", "Rotation" et "Équipe".

En résumé, tant qu'un opérateur n'a pas choisi quelle équipe, quel poste et quelle rotation il occupe, il ne peut pas saisir de données.

J'ai essayé d'utiliser un Change mais rien de concluant, en plus je ne sais pas bien où l'écrire..:(


Merci d'avance pour votre aide et votre temps.
 

Pièces jointes

  • Citronflexe_XLD.xlsm
    34.2 KB · Affichages: 28

Citronflexe

XLDnaute Junior
Re,
Alors....
Là ça fonctionne, je ne comprends pas pourquoi, car les écritures sont les mêmes... bref, ce n'est pas important.
Cependant, il est préférable que la Textbox "n°Lot" et le frame "Équipe" ne soient pas réinitialisés à chaque clic de "poste suivant", ces deux champs ne varient pas beaucoup, et donc il est pénible de les réentrer à chaque fois.
La meilleure solution, c'est de laisser les RAZ un par un comme avant, ou il existe une façon d'exclure certains objets de la boucle "For each" ?


J'ai aussi vu que tu avais ajouté une boucle "With" dans le module1 pour simplifier l'écriture... merci, je n'y pense jamais !

Quoi qu'il en soit, merci beaucoup pour ton aide !! :)
 

vgendron

XLDnaute Barbatruc
pour les exclure, suffit de connaitre leur nom et ajouter une condition

VB:
Private Sub CommandButton2_Click()
Dim ligne, colonne As Integer

Call Module1.Macro1
For Each OB In Me.Controls
        If OB.Name Like "*OptionButton*" And OB.Name <> "OptionButton11" And OB.Name <> "OptionButton12" Then
            OB.Value = False
        End If
      
        If OB.Name Like "*TextBox*" And OB.Name <> "TextBox1" Then
                OB.Value = ""
        End If
Next OB

ChoixPoste = False
'ChoixEquipe = False
ChoixRotation = False
afficheBoutton

End Sub
 

vgendron

XLDnaute Barbatruc
on peut aussi faire une boucle simple


VB:
Private Sub CommandButton2_Click()
Dim ligne, colonne As Integer

Call Module1.Macro1

For i = 2 To 13
    Me.Controls("TextBox" & i).Value = ""
Next i

For i = 1 To 10
    Me.Controls("OptionButton" & i).Value = False
Next i
'For Each OB In Me.Controls
'        If OB.Name Like "*OptionButton*" And OB.Name <> "OptionButton11" And OB.Name <> "OptionButton12" Then
'            OB.Value = False
'        End If
'
'        If OB.Name Like "*TextBox*" And OB.Name <> "TextBox1" Then
'                OB.Value = ""
'        End If
'Next OB

ChoixPoste = False
'ChoixEquipe = False
ChoixRotation = False
afficheBoutton

End Sub
 

job75

XLDnaute Barbatruc
Bonjour Citronflexe, vgendron,

Je passe par là, donc si j'ai bien compris la demande du post #1 :
Code:
Private Sub CommandButton1_Click()
If Not (OptionButton1 Or OptionButton2 Or OptionButton3 Or OptionButton4 Or OptionButton5 Or OptionButton6) Then MsgBox "Choisir l'équipe...": Exit Sub
If Not (OptionButton7 Or OptionButton8 Or OptionButton9 Or OptionButton10) Then MsgBox "Choisir la rotation...": Exit Sub
If Not (OptionButton11 Or OptionButton12) Then MsgBox "Choisir le poste...": Exit Sub
'--------------
End Sub

Private Sub CommandButton2_Click()
If Not (OptionButton1 Or OptionButton2 Or OptionButton3 Or OptionButton4 Or OptionButton5 Or OptionButton6) Then MsgBox "Choisir l'équipe...": Exit Sub
If Not (OptionButton7 Or OptionButton8 Or OptionButton9 Or OptionButton10) Then MsgBox "Choisir la rotation...": Exit Sub
If Not (OptionButton11 Or OptionButton12) Then MsgBox "Choisir le poste...": Exit Sub
'----------
End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 276
Messages
2 086 714
Membres
103 378
dernier inscrit
phdrouart