• Initiateur de la discussion Initiateur de la discussion dhiouf
  • 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 !

dhiouf

XLDnaute Occasionnel
Bonjour à tous
j'ai créer un userform avec 24 optionbutton,1textbox et 2 commandbutton(1et2)
la procédure du commandbutton1 est trés long,est-il possible la rendre court
voir fichier joint
merci d'avance
 

Pièces jointes

Re : procédure long

Bonjour


Au lieu d'utiliser les variables C1,c2,......

écrire : Range("salaire") = Range("salaire") + TextBox1.Value

En posant un point d'arrêt sur "If OptionButton1 = True Then" on constate que le système réalise tous les tests, il faut donc sortir de la procédure en écrivant
Unload Me
exit sub

En utilisant un module de classe

https://www.excel-downloads.com/threads/aide-pour-raccourcir-code-chexbox-merci.86172/


JP
 
Dernière édition:
Re : procédure long

Bonjour à tous,

sinon dans ce cas là je renseigne la propriété tag de chaque optionbutton par le nom de la cellule correspondant. Dans ce cas, le code ci-dessous suffit:

Private Sub CommandButton1_Click()

Dim ctr As Control
Dim NomR As String

For Each ctr In Me.Controls
If TypeName(ctr) = "OptionButton" Then
If ctr.Value = True Then
Range(ctr.Tag).Value = Val(Range(ctr.Tag)) + Val(TextBox1.Value)
End If
End If
Next ctr


End Sub

A+

smotty
 
Re : procédure long

En fait, tu vas dans les propriétés de chaque optionbutton de ton userform.

(click droit/propriétés)

il y a une propriété "TAG" qui ne sert que de repère.

exemple: dans le tag de l'optionbutton1, tu tappes le nom de la cellule liée, "salaire", (sans les guillemets).

dans ton code tu récupères le tag avec : optionbutton1.tag

Voire l'exemple ci-joint, j'ai renseigné uniquement l'optionbutton1.

Perso, j'ai beaucoup utilisé cette méthode quand il y a beaucoup de controles

A+
 

Pièces jointes

Re : procédure long

Diouf, JP, Smothy,


Oui un c avait disparu et provoquait l'erreur:

Code:
Private Sub CommandButton1_Click()
    Dim byPoste As Byte     'contiendra l'index de bouton option choisit
    Dim strPoste As String  'contiendra le nom associé dans le tableau des postes
 
    'Trouver le bon optionButton
    byPoste = CheckOptions
 
    'S'il est 0 ou que textbox1 n'est pas numérique, sortir
    If byPoste < 0 Or Not IsNumeri[SIZE=3][COLOR=red]c[/COLOR][/SIZE](TextBox1)  Then GoTo FIN:
 
    'Sinon trouver le nom du poste (les index du tableau commencent à 0 donc le poste 1 'salaire' = Postes(1-1)=>0 )
    strPoste = Postes(byPoste - 1)
    Range(strPoste) = Range(strPoste) + Val(TextBox1)
 
FIN:
    Unload Me
End Sub

A bientôt
 
Dernière modification par un modérateur:
- 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
7
Affichages
268
Réponses
2
Affichages
187
Réponses
3
Affichages
221
Réponses
10
Affichages
391
  • Question Question
Réponses
13
Affichages
448
Retour