Aide pour code

Bonjour,

j'ai fait un code qui fonctionne, je voulais juste savoir s'il y avait pas un autre moyen de le faire afin qu'il soit plus court et plus fonctionnel

j'ai essayer une premiere fois avec 2 variable mais a mon avis je fait un truc de travers car cela me mettait des erreurs

Private Sub TextBox197_Change()
For x = 13 To 21

If TextBox197 = "A" Then
Me.Controls("CheckBox" & x) = False
CheckBox13 = True
ElseIf TextBox197 = "B" Then
Me.Controls("CheckBox" & x) = False
CheckBox14 = True
ElseIf TextBox197 = "C" Then
Me.Controls("CheckBox" & x) = False
CheckBox15 = True
ElseIf TextBox197 = "D" Then
Me.Controls("CheckBox" & x) = False
CheckBox16 = True
ElseIf TextBox197 = "E" Then
Me.Controls("CheckBox" & x) = False
CheckBox17 = True
ElseIf TextBox197 = "F" Then
Me.Controls("CheckBox" & x) = False
CheckBox18 = True
ElseIf TextBox197 = "G" Then
Me.Controls("CheckBox" & x) = False
CheckBox19 = True
ElseIf TextBox197 = "H" Then
Me.Controls("CheckBox" & x) = False
CheckBox20 = True
ElseIf TextBox197 = "I" Then
Me.Controls("CheckBox" & x) = False
CheckBox21 = True
End If
Next x

End Sub

et ensuite sur un bouton

Private Sub CommandButton7_Click()
For v = 215 To 251
Me.Controls("textbox" & v) = 0
If CheckBox13 = True Then
TextBox215 = TextBox25
TextBox224 = TextBox26
ElseIf CheckBox14 = True Then
TextBox216 = TextBox25
TextBox225 = TextBox26
ElseIf CheckBox15 = True Then
TextBox217 = TextBox25
TextBox226 = TextBox26
ElseIf CheckBox16 = True Then
TextBox218 = TextBox25
TextBox227 = TextBox26
ElseIf CheckBox17 = True Then
TextBox219 = TextBox25
TextBox228 = TextBox26
ElseIf CheckBox18 = True Then
TextBox220 = TextBox25
TextBox229 = TextBox26
ElseIf CheckBox19 = True Then
TextBox221 = TextBox25
TextBox230 = TextBox26
ElseIf CheckBox20 = True Then
TextBox234 = TextBox27
TextBox243 = TextBox28
ElseIf CheckBox21 = True Then
TextBox235 = TextBox27
TextBox244 = TextBox28
End If

merci de bien vouloir jeter un oeil, et merci au réponse

bonne journée

Bonjour,

optimisation de l'écriture du code. pas sur que ce soit plus rapide à l'exécution et que ce soit plus lisible.

de plus il semble manquer un bout de code pour la 2ème sub, pas sûr d'avoir compris ce que tu cherches à faire et donc de l'optimisation du code.

non testé !

Private Sub TextBox197_Change()
    For x = 13 To 21
        For i = 1 To 9
            If TextBox197 = Chr$(i + 64) Then
                Me.Controls("CheckBox" & x) = False
                Me.Controls("CheckBox" & 12 + i) = True
                Exit For
            End If
        Next i
    Next x
End Sub
Private Sub CommandButton7_Click()
    For v = 215 To 251
        Me.Controls("textbox" & v) = 0
    Next v
    For i = 1 To 9
        If Me.Controls("CheckBox" & 12 + i) = True Then
            Me.Controls("TextBox" & 214 + i) = Me.Controls("TextBox" & 25 + IIf(i > 7, 2, 0))
            Me.Controls("TextBox" & 223 + i) = Me.Controls("TextBox" & 26 + IIf(i > 7, 2, 0))
            exit for
        End If
    Next i
End Sub

Je te remercie c est exactement ce qu il me fallait

Re bonjour,

puis je quand meme te poser une petite question... je travail sur le code, j essaye de tout assimilé

mais je me trouve devant une inconue

tu me mets :

Private Sub CommandButton7_Click()
    For v = 215 To 251
        Me.Controls("textbox" & v) = 0
    Next v
    For i = 1 To 9
        If Me.Controls("CheckBox" & 12 + i) = True Then
            Me.Controls("TextBox" & 214 + i) = Me.Controls("TextBox" & 25 + IIf(i > 7, 2, 0))
            Me.Controls("TextBox" & 223 + i) = Me.Controls("TextBox" & 26 + IIf(i > 7, 2, 0))
            exit for
        End If
    Next i
End Sub

mais que signifie les chiffres apres le IIF

+ IIf(i > 7, 2, 0))

et dans :

Private Sub TextBox197_Change()
    For x = 13 To 21
        For i = 1 To 9
            If TextBox197 = Chr$(i + 64) Then
                Me.Controls("CheckBox" & x) = False
                Me.Controls("CheckBox" & 12 + i) = True
                Exit For
            End If
        Next i
    Next x
End Sub

que représente le 64

 If TextBox197 = Chr$(i + 64) Then

car il prend bien tout en compte sur un txtbox,et je me suis dit q'eventuellement ca pouvait avoir un rapport je te remercie

mais que signifie les chiffres apres le IIF

+ IIf(i > 7, 2, 0))
Me.Controls("TextBox" & 214 + i) = Me.Controls("TextBox" & 25 + IIf(i > 7, 2, 0))

ceci signifie que si i est >7 il faut ajouter 2 sinon 0. dans ton code original lorsque tu testes le checkbox20 (12+i=8) tu copies le contenu de textbox27 (25+2) et non plus celui de textbox25 (25+0)

et dans :

Private Sub TextBox197_Change()
    For x = 13 To 21
        For i = 1 To 9
            If TextBox197 = Chr$(i + 64) Then
                Me.Controls("CheckBox" & x) = False
                Me.Controls("CheckBox" & 12 + i) = True
                Exit For
            End If
        Next i
    Next x
End Sub

que représente le 64

 If TextBox197 = Chr$(i + 64) Then

64 est la valeur qu'il faut ajouter à i pour avoir le code du caractère A, B, C, .. I (pour i allant de 1 à 9)

je te remercie pour ses explications tres tres bon travail et au moins j ai bien tout compris

Rechercher des sujets similaires à "aide code"