code redondant à simplifier ???

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

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

Re : code redondant à simplifier ???

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

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


@+
 
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:
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&
                 .....

@+
 
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

@+
 
- 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

  • Question Question
Microsoft 365 Excel vba
Réponses
5
Affichages
626
Réponses
8
Affichages
1 K
D
  • Question Question
Réponses
2
Affichages
823
David1902
D
Retour