code redondant à simplifier ???

koko_spv89

XLDnaute Occasionnel
SAlut à tous

Sur le fichier joint vous trouverez un code qui je pense peut etre simplifier en remplaçant les chiffres par une variable car le code est redondant.... par contre je sais trop comment faire car je débute....

Vous pourriez m'aider?

SVP tranmettez moi une réponse intégrée dans la réponse, j'ai des difficultés à telecharger des fichiers joints

thank's
 

Pièces jointes

  • à simplifier.zip
    8.1 KB · Affichages: 16

koko_spv89

XLDnaute Occasionnel
Re : code redondant à simplifier ???

j'en met qu'une partie alors car il fait 13 pages.....:D

Code:
If CheckBox1.Value = True And [Ext_Tempo] = "Extinction" Then
    [DebitExtCour1] = 15 * [CircBac1]
    [Cour1] = "oui"
    CheckBox1.BackColor = &HFF&
Else
    If CheckBox1.Value = True And [Ext_Tempo] = "Temporisation" Then
        [DebitTempoCour1] = 15 * [CircBac1]
        [Cour1] = "oui"
        CheckBox1.BackColor = &HFF&
    Else
        If CheckBox1.Value = True And [Ext_Tempo] = "Temporisation finale" Then
            [DebitTempoFCour1] = 15 * [CircBac1]
            [Cour1] = "oui"
            CheckBox1.BackColor = &HFF&
        Else
            [DebitExtCour1] = ""
            [DebitTempoCour1] = ""
            [DebitTempoFCour1] = ""
            [Cour1] = "non"
            CheckBox1.BackColor = -2147483628
        End If
    End If
End If

If CheckBox10.Value = True And [Ext_Tempo] = "Extinction" Then
    [DebitExtCour10] = 15 * [CircBac10]
    [Cour10] = "oui"
    CheckBox10.BackColor = &HFF&
Else
    If CheckBox10.Value = True And [Ext_Tempo] = "Temporisation" Then
        [DebitTempoCour10] = 15 * [CircBac10]
        [Cour10] = "oui"
        CheckBox10.BackColor = &HFF&
    Else
        If CheckBox10.Value = True And [Ext_Tempo] = "Temporisation finale" Then
            [DebitTempoFCour10] = 15 * [CircBac10]
            [Cour10] = "oui"
            CheckBox10.BackColor = &HFF&
        Else
            [DebitExtCour10] = ""
            [DebitTempoCour10] = ""
            [DebitTempoFCour10] = ""
            [Cour10] = "non"
            CheckBox10.BackColor = -2147483628
        End If
    End If
End If

If CheckBox11.Value = True And [Ext_Tempo] = "Extinction" Then
    [DebitExtCour11] = 15 * [CircBac11]
    [Cour11] = "oui"
    CheckBox11.BackColor = &HFF&
Else
    If CheckBox11.Value = True And [Ext_Tempo] = "Temporisation" Then
        [DebitTempoCour11] = 15 * [CircBac11]
        [Cour11] = "oui"
        CheckBox11.BackColor = &HFF&
    Else
        If CheckBox11.Value = True And [Ext_Tempo] = "Temporisation finale" Then
            [DebitTempoFCour11] = 15 * [CircBac11]
            [Cour11] = "oui"
            CheckBox11.BackColor = &HFF&
        Else
            [DebitExtCour11] = ""
            [DebitTempoCour11] = ""
            [DebitTempoFCour12] = ""
            [Cour11] = "non"
            CheckBox11.BackColor = -2147483628
        End If
    End If
End If

If CheckBox12.Value = True And [Ext_Tempo] = "Extinction" Then
    [DebitExtCour12] = 15 * [CircBac12]
    [Cour12] = "oui"
    CheckBox12.BackColor = &HFF&
Else
    If CheckBox12.Value = True And [Ext_Tempo] = "Temporisation" Then
        [DebitTempoCour12] = 15 * [CircBac12]
        [Cour12] = "oui"
        CheckBox12.BackColor = &HFF&
    Else
        If CheckBox12.Value = True And [Ext_Tempo] = "Temporisation finale" Then
            [DebitTempoFCour12] = 15 * [CircBac12]
            [Cour12] = "oui"
            CheckBox12.BackColor = &HFF&
        Else
            [DebitExtCour12] = ""
            [DebitTempoCour12] = ""
            [DebitTempoFCour12] = ""
            [Cour12] = "non"
            CheckBox12.BackColor = -2147483628
        End If
    End If
End If

ça suffit pr voir la redondance.... j'ai 28 cas comme ça


@+
 

koko_spv89

XLDnaute Occasionnel
Re : code redondant à simplifier ???

car qd ce cas là je raisonnais par rapport à 2 cases différentes sauf que ds l'application que je veux faire (et non le cas que je présentais sur l'autre topic), il faut que j'intégre ça avec des checkbox...

dc j'ai décidé de faire un nouveau post avec les bonnes "données".

surtout que ça me faisait qqch de long et lourd à écrire alors que je me suis dit : "peut-etre qu'on peut faire plus simple : simplifier ça avec une variable???" c'est le pk de mon nouveau post

@+
 
Dernière édition:

koko_spv89

XLDnaute Occasionnel
Re : code redondant à simplifier ???

Ca commence juste par ça :

Code:
[B]Private Sub CommandButton2_Click()[/B]
If CheckBox1.Value = True And [Ext_Tempo] = "Extinction" Then
    [DebitExtCour1] = 15 * [CircBac1]
    [Cour1] = "oui"
    CheckBox1.BackColor = &HFF&
                 .....

@+
 

koko_spv89

XLDnaute Occasionnel
Re : code redondant à simplifier ???

Re à tous....

J'ai réussi à simplifier tout ça si ça intéresse qq'un :

Code:
Private Sub CommandButton2_Click()
Dim CTRL As OLEObject
Dim compteur As Integer
For Each CTRL In Worksheets("schéma").OLEObjects
    If Left(CTRL.Name, 8) = "CheckBox" Then
        compteur = Mid(CTRL.Name, 9)
        If compteur >= 1 And compteur <= 28 Then
           If CTRL.Object.Value = True Then
            CTRL.Object.BackStyle = 1
            CTRL.Object.BackColor = &HFF&
                Feuil1.Range("Cour" & compteur) = "oui"
                Select Case [Ext_Tempo]
                Case "Extinction"
                    Feuil1.Range("DebitExtCour" & compteur) = 15 * Feuil1.Range("CircBac" & compteur)
                Case "Temporisation"
                    Feuil1.Range("DebitTempoCour" & compteur) = 15 * Feuil1.Range("CircBac" & compteur)
                Case "Temporisation finale"
                    Feuil1.Range("DebitTempoFCour" & compteur) = 15 * Feuil1.Range("CircBac" & compteur)
                    End Select
            Else 'si pas de valeur true dans checkbox
                Feuil1.Range("DebitExtCour" & compteur) = Null
                Feuil1.Range("DebitTempoCour" & compteur) = Null
                Feuil1.Range("DebitTempoFCour" & compteur) = Null
                Feuil1.Range("Cour" & compteur) = "non"
                CTRL.Object.BackColor = -2147483628
                CTRL.Object.BackStyle = 0
            End If
        Else
        End If
    End If
Next

@+
 

Discussions similaires

  • Question
Microsoft 365 Excel vba
Réponses
5
Affichages
464

Membres actuellement en ligne

Statistiques des forums

Discussions
314 948
Messages
2 114 650
Membres
112 206
dernier inscrit
salah zabi