Cacher ou griser bouton valider

Bonjour à tous,

Ci dessous le code d emon userform.

Je souhaiterais que CommandButton1 (valider) soit cacher ou grisé si les 3 frames ne sont pas renseignés.

Par avance merci

Private Sub CommandButton1_Click()
Application.EnableEvents = False
    Application.ScreenUpdating = False
    Dim s As String, c As Range
     Columns("M").EntireColumn.Hidden = False
    For Each ctrl In Me.Frame1.Controls
        If TypeName(ctrl) = "OptionButton" And ctrl.Value Then s = ctrl.Caption: Exit For
    Next ctrl
    For Each ctrl In Me.Frame2.Controls
        If TypeName(ctrl) = "OptionButton" And ctrl.Value Then s = s & " " & ctrl.Caption: Exit For
    Next ctrl
    For Each ctrl In Me.Frame3.Controls
        If TypeName(ctrl) = "OptionButton" And ctrl.Value Then s = s & " " & ctrl.Caption: Exit For
    Next ctrl
    Set c = Sheets("Focus").Columns(13).Find(s, , xlValues, xlWhole) 'rechercher dans colonne M
    If Not c Is Nothing Then
        Application.Goto c, True
        Me.Hide
    End If
     Columns("M").EntireColumn.Hidden = True
     ActiveWindow.SmallScroll ToRight:=-1
     Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Bonjour,

Je n'ai pas testé, mais il existe peut-être une propriété .visible, dans laquelle tu peux affecter True ou False selon ton besoin.

Bonjour,

Ça, ça se passe en dehors (et en amont) de ta proc. CommandButton1).

La propriété Enabled du bouton doit être mise par défaut sur False (à la conception). Le bouton sera donc inactif à l'ouverture (et cela se voit).

Ton expression s sera définie lorsqu'un OptionButton de chaque Frame aura été cliqué, il te faut donc tester à chaque clic sur un OptionButton si un bouton de chaque Frame est à True...

Par exemple, tu définis une variable Integer Niveau module, mettons Enbl.

Clic sur un OptionButton de Frame1 : tu testes :

If Not 1 And Enbl Then Enbl = Enbl + 1

Pour Frame2, tu testeras :

If Not 2 And Enbl Then Enbl = Enbl + 2

Et pour Frame3 :

If Not 4 And Enbl Then Enbl = Enbl + 4

Et à la suite, pour les 3 :

If Enbl = 7 Then CommandButton1.Enabled = True

Cordialement.

Merci, mais j’ai du mal a saisir. Pourrais tu me l’envoyer sur un doc excel ?

Bien cordialement

Je ne remets pas la main sur ton fichier modèle, tu devrais le redéposer.

Bonjour MFerrand,

ci joint une feuille excel avec mon userfom.

Je pèche sur la partie "Module".

Merci de ton aide.

29classeurtest.xlsm (16.81 Ko)

Quelqu'un aurait-il une idée svp ?

Bonjour,

Ton classeur en retour.

Le bouton est grisé et inactif à l'ouverture.

Une procédure : OptionFrame, comptabilise les choix par Frame et lorsque des choix sont intervenus dans les 3 Frame, elle rend actif le bouton et le colore.

L'action sur les OptionButton lance cette procédure, avec un indicateur de Frame différent pour chacune (et qui est une puissance de 2 : 1(=2^0), 2(=2^1), 4(=2^2), ce qui permet de tester si cette valeur a déjà été saisie dans la variable de comptabilisation).

Pour la Frame1, vu le nombre d'OptionButton (20), on évite les 20 procédures correspondantes pour lancer OptionFrame en les regroupant en classe. L'évènement, traité au niveau de la classe (voir le Module) lance la procédure avec 1.

Cordialement.

Ouch j'aurais jamais trouvé ça tout seul.... Un grand merci !!! Je ne te cache pas que je ne comprends pas tout malheureusement.

Par ailleurs, j'ai essayé pour les frames 2 et 3 de mettre une valeur par défaut (dans les propriétés du bouton). Ca ok, il me reste donc juste à choisir dans la frame 1, si les choix par défaut me conviennent pour les frames 2 et 3. Sauf que le bouton reste grisé. Mais c'est juste un constat. Inutile de chercher pourquoi sauf si tu as la réponse instantanément ^^

Encore MERCI

Ben oui ! Si tu mets une valeur par défaut non prévue au départ, il peut n'y avoir aucun choix effectué dans l'une ou l'autre Frame par clic sur un bouton ! Or c'est ce qu'on attend...

Rechercher des sujets similaires à "cacher griser bouton valider"