Un petit code a simplifier

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 !

zefirstfan

XLDnaute Junior
Bonjour Tout le monde,

Voici un code qui fonctionne tres bien, mais qui fait un peu usine a gaz.
J'ai essayé en mettant de Else mais ca y'en a pas marcher.

un petit coup de pouce?

Sub checkbox1_click()
If CheckBox1.Value = True Then TextBox5.Value = "1"
If CheckBox1.Value = False Then TextBox5.Value = "0"
End Sub
Sub checkbox2_click()
If CheckBox2.Value = True Then TextBox6.Value = "1"
If CheckBox2.Value = False Then TextBox6.Value = "0"
End Sub
Sub checkbox3_click()
If CheckBox3.Value = True Then TextBox7.Value = "1"
If CheckBox3.Value = False Then TextBox7.Value = "0"
End Sub

Sub checkbox4_click()
If CheckBox4.Value = True Then TextBox5.Value = "1"
If CheckBox4.Value = False Then TextBox5.Value = "0"

If CheckBox4.Value = True Then TextBox6.Value = "1"
If CheckBox4.Value = False Then TextBox6.Value = "0"

If CheckBox4.Value = True Then TextBox7.Value = "1"
If CheckBox4.Value = False Then TextBox7.Value = "0"
End Sub


Gracias et bon dimanche sous vos applaudissements.
 
Re : Un petit code a simplifier

Salut Zefirstfann,

Voici ci-dessous ton problème de If ... Then ... Else ... End If solutionné (cf. macro Private Sub checkbox4_click)

Ton code est très bien ainsi, mais puisque tu souhaite quand même le raccourcir, c'est choses faite.

VB:
Private Sub checkbox1_click()
    TextBox5.Value = IIf(CheckBox1.Value = True, 1, 0)
End Sub

Private Sub checkbox2_click()
    TextBox6.Value = IIf(CheckBox2.Value = True, 1, 0)
End Sub

Private Sub checkbox3_click()
    TextBox7.Value = IIf(CheckBox3.Value = True, 1, 0)
End Sub

Private Sub checkbox4_click()
If CheckBox4.Value = True Then
    For i = 5 To 7
        Controls("TextBox" & i).Value = 1
    Next i
Else
    For i = 5 To 7
        Controls("TextBox" & i).Value = 0
    Next i
End If
End Sub


Comme tu peux le voir, j'ai vraiment raccourci tout ce que je pouvais! J'ai même remplacé "1" par 1. Deux caractères en moins 🙂 à chaque fois. Les deux versions fonctionnent à la perfection. Sauf que dans ton cas le chiffre est considéré comme du texte, alors que dans ma version il s'agit d'un nombre. Mais visuellement c'est la même chose.

Ci-joint les macros dans leurs éléments naturel

Pour information, quand la macro ouvre l'USF la première fois, aucune CheckBox n'est coché, donc dans les TextBox, il devrait y avoir 0 de partout. Non?

Si oui rajouter dans l'UserForm la macro suivante :
VB:
Private Sub UserForm_Initialize()
For i = 5 To 7
        Controls("TextBox" & i).Value = 0
Next i
End Sub

Bonne fin de soirée
 

Pièces jointes

Re : Un petit code a simplifier

Bonsoir zefirstfan, Excel-lent,

Si il s'agit de gagner en nombre de caractères, le code d'Excel-lent sans changements :

VB:
Private Sub checkbox1_click()
    TextBox5 = -1 * CheckBox1
End Sub
Private Sub checkbox2_click()
    TextBox6 = -1 * CheckBox2
End Sub
Private Sub checkbox3_click()
    TextBox7 = -1 * CheckBox3
End Sub
Private Sub checkbox4_click()
    For i = 5 To 7
        Controls("TextBox" & i) = -1 * CheckBox4
    Next i
End Sub

Les .Values peuvent être supprimées car elles sont les propriétés par défaut des Textboxs et Checkbox. Et comme true = -1 et false = 0...

Cordialement

KD
 
Re : Un petit code a simplifier

Bonjour Zefirstfan,

L'important est de bien définir au préalable les variables qui contiendrons tes dates (si tu utilise des variables).

Bien penser à préciser dans ton code que la cellule..., la TextBox..., la ... contient une date.

Si tu respect tous cela dans l'ensemble de ton code, ça ne peut que fonctionner 😉

Bonne recherche
Cordialement
 
- 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
10
Affichages
457
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
333
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
889
Réponses
2
Affichages
286
Réponses
7
Affichages
326
Réponses
3
Affichages
322
Réponses
2
Affichages
626
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
766
Retour