XL 2010 Userform CommandButton Grisé

whiteshark

XLDnaute Nouveau
Bonjour à tous !

La communauté m'ayant déjà bien aidé, je reviens pour une nouvelle question.

Je suis en train de créer un fichier qui sera utilisé par plusieurs personnes avec un Userform qui s'ouvre à l'ouverture du fichier.
Cet Userform comprends 1 TextBox1 (nom de feuille), 1 Frame1 (utilisateur) avec 8 OptionButton (n°1 à 8), 1 Frame2 (secteur) avec 4 OptionButton (n°9 à 12) et 1 CommandButton1 (nouvelle feuille).
Le but est que le CommandButton soit grisé et verrouillé tant que les 3 infos demandés ne sont pas renseignés (TextBox1 remplit, 1 nom d'utilisateur et 1 secteur). J'ai mis le Enable sur False pour le CommandButton soit bloqué mais ensuite impossible de réussir à le déverrouiller, je bloque complètement.

1662626079803.png


Et 2ème question, j'aimerais repporté le nom de feuille, le nom d'utilisateur et le secteur renseigné dans l'userforme dans 3 cellules de ma feuil1 (par exemple nom de feuille en A1, nom d'utilisateur A2 et le secteur en A3)

Voilà... de manière général je n'ai jamais utilisé d'userform donc je me suis dit que c'était le bon moment pour m'y mettre mais je vous avoue que j'ai franchement du mal.

Merci pour votre aide !!
 

patricktoulon

XLDnaute Barbatruc
bonjour
une autre proposition

quand a moi je reprends le userform de yal j'efface tout et je fait un subclassing
un seul event pour tout les optionbutton

autrement dit a chaque fois que tu modifie un des ces controls tu modifie le bouton si il y a lieu de le faire automatiquement donc le contrôle se fait Avant click sur le bouton valider

VB:
Option Explicit
Public WithEvents GroupOpt As MSForms.OptionButton
Dim cls() As New UF_NouveauFichier

Private Sub UserForm_Activate()
    Dim a&, opt
    Me.Repaint
    For Each opt In Me.Controls
        If " Frame1 Frame2 " Like "*" & opt.Parent.Name & "*" Then
            a = a + 1: ReDim Preserve cls(1 To a): Set cls(a).GroupOpt = opt
        End If
    Next
End Sub

Private Sub TxbNomFeuile_Change(): ControlEenable: End Sub
Private Sub Btn_Annuler_Click():  Unload UF_NouveauFichier:End Sub

Private Sub groupopt_Click(): ControlEenable: End Sub 'un seul event pour tout les optionbutton
Sub ControlEenable()
    Dim q&, ctrl
    For Each ctrl In UF_NouveauFichier.Controls
        If " Frame1 Frame2 " Like "*" & ctrl.Parent.Name & "*" Then
            If ctrl.Value = True Then q = q + 1
        End If
    Next
    If UF_NouveauFichier.Controls("TxbNomFeuile").Value <> "" Then q = q + 1

    UF_NouveauFichier.Controls("Btn_Valider").Enabled = (q = 3)
End Sub
 

whiteshark

XLDnaute Nouveau
Bonjour à tous les deux

Déjà merci pour vos réponses et désolé de pas avoir mis un excel exemple 😅.

Effectivement je comprends assez bien le code de yal mais beaucoup moins celui patricktoulon 😁.

patricktoulon ce que tu m'as donné réponds exactement à ce que je cherche mais il me manque juste la partie qui reports les infos sélectionnées dans les cellules d'une feuille ce que fait le code de yal. Du coup je suis en train de chercher à comprendre ton code pour réussir à incorporer la fin de celui de yal.
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour
mais il me manque juste la partie qui reports les infos sélectionnées dans les cellules d'une feuille ce que fait le code de yal. Du coup je suis en train de chercher à comprendre ton code pour réussir à incorporer la fin de celui de yal.
ben après pour ça c'est dans l'event click du bouton que tu doit faire ça
ça ne concerne plus le enabling automatique
 

yal

XLDnaute Occasionnel
Bonjour
Une version entièrement repensée. On peut ajouter autant de noms et de secteur qu'on veut. On peut mettre les captions qu'on veut. Et le bouton "Nouvelle feuille" est bien valide ou non suivant le cas.
 

Pièces jointes

  • whiteshark yal v3.xlsm
    25 KB · Affichages: 3

yal

XLDnaute Occasionnel
Bonjour patricktoulon
si tu utilise l'event du bouton pour valider ou pas ,
a quoi ca te sert de classer les optionbuttons ???????
à rien ;)
Je ne comprends pas la question.
tu dis
on peut mette autant de nom que l'on veut
et dans l'event du bouton tu boucle de 1 à 8 et de 1 à 4🤣
et je le maintiens même si je t'accordes que mon code n'était pas parfaitement finalisé dans ce sens. Voilà qui est fait.
 

Pièces jointes

  • whiteshark yal v4.xlsm
    26 KB · Affichages: 4

whiteshark

XLDnaute Nouveau
Merci pour toutes vos réponses !
Ton dernier fichier marche nickel yal mais, parce qu'il y a un mais 😅, comment je fais pour rajouter un frame et 2 optionbuttons ?Après discussion avec mes collègues il s'avère qu'il faudrait une proposition en plus... Et j'avoueque j'ai un peu de mal pour comprendre le code. Je suppose qu'il faut changer les C1, C2, C3 et C4 et rajouter un nouveau if dans le Private Sub Btn_Valider_Click mais je dois tester tout ça.
 

yal

XLDnaute Occasionnel
Bonjour
Dans le principe c'est ça mais ça implique quelques modifications supplémentaires dans le code. Voici la version adaptée. En comparant avec la version 4 tu devrais voir assez facilement les changements. Si tu as des questions n'hésite pas.
 

Pièces jointes

  • whiteshark yal v5.xlsm
    25.7 KB · Affichages: 2

yal

XLDnaute Occasionnel
Bonjour
Encore une version un peu plus aboutie. Dans la précédente une seule textbox était prise en compte pour réveiller le bouton "Valider". Dans la nouvelles on pourra en ajouter autant qu'on veut et choisir celles qui seront obligatoires ou pas.
 

Pièces jointes

  • Formulaire dynamique v3.xlsm
    43.2 KB · Affichages: 2