Raccourcir un code

cruise1406 Messages postés 11 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 3 juin 2009 - 28 mai 2009 à 13:46
cruise1406 Messages postés 11 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 3 juin 2009 - 3 juin 2009 à 11:59
Est-ce que quelqu'un saurait comment rendre plus lisible et surtout plus court mon morceaux de code car je dois répété ceci pour chaque chk :
Private Sub chkRef_Click()
If Me.chkCertif = True Then
    If Me.chkCond = True Then
        If Me.chkCondP = True Then
            If Me.chkDes = True Then
                If Me.chkDim = True Then
                    If Me.chkEmb = True Then
                        If Me.chkExi = True Then
                            If Me.chkExiA = True Then
                                If Me.chkExiE = True Then
                                    If Me.chkForm = True Then
                                        If Me.chkFormC = True Then
                                            If Me.chkFr = True Then
                                                If Me.chkInd = True Then
                                                    If Me.chkLieu = True Then
                                                        If Me.chkliv = True Then
                                                            If Me.chkMat = True Then
                                                                If Me.chkMoy = True Then
                                                                    If Me.chkNorm = True Then
                                                                        If Me.chkPrix = True Then
                                                                            If Me.chkQu = True Then
                                                                                If Me.chkRap = True Then
                                                                                    If Me.chkRef = True Then
                                                                                        If Me.chkTS = True Then
                                                                                        Me.cmdRC.Visible = True
                                                                                        Else: Me.cmdRC.Visible = False
                                                                                        End If
                                                                                    End If
                                                                                End If
                                                                            End If
                                                                        End If
                                                                    End If
                                                                End If
                                                            End If
                                                        End If
                                                    End If
                                                End If
                                            End If
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If
End If

End Sub

Merci

9 réponses

steph064 Messages postés 90 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 10 juin 2009
28 mai 2009 à 13:51
Moi on m'a réponde qu'il faut faire un if pour chaque radio boutons, pour les checkbox ca doit être pareil. Après pour la lisibilité il faut faire ça par rapport à ton indentation:

if ...... then
.....
     else
           if ... then
           .....
           end if
end if
0
cruise1406 Messages postés 11 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 3 juin 2009
28 mai 2009 à 13:57
En faite c'est pas tt a fait ce que je voulais faire comprendre, ma vrai question c'était est-ce que c'est possible de réaménager mon code avec une boucle ou autre chose car je pense que ça doit etre possible mais je ne vois pas comment ?
0
steph064 Messages postés 90 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 10 juin 2009
28 mai 2009 à 14:09
Avec une boucle ? Je ne vois pas comment faire vu qu'il y a un nom pour chaques checkbox. Là je ne sais pas, mais ça m'étonnerai que ce soit possible.
0
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
28 mai 2009 à 14:14
Bonjour,

If Me.chkCertif AND Me.chkCond AND Me.chkCondP AND Me.chkDes AND Me.chkDim AND Me.chkEmb AND  Me.chkExi AND Me.chkExiA AND _
Me.chkExiE AND Me.chkForm AND Me.chkFormC AND Me.chkFr AND Me.chkInd AND  Me.chkLieu AND  Me.chkliv AND Me.chkMat AND Me.chkMoy AND _
Me.chkNorm AND Me.chkPrix AND Me.chkQu AND Me.chkRap AND Me.chkRef AND Me.chkTS Then
  Me.cmdRC.Visible = True
Else
  Me.cmdRC.Visible = False
End If

On peut même enlever le Me de chaque variable

Mais le mieux serait peut être de mettre toute ces valeurs dans un tableau de boolean au lieu de déclarer une variable a chaque fois. Avec un tableau, tu pourras faire une boucle pour vérifier tes valeurs.

Bonne Prog
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mai 2009 à 14:15
la value renvoie 0 ou 1
true vaut -1

ca risque pas d'aller loin, ton histoire.

tous les checkbox de ta form sont a rpendre en compte ?

si oui, c'est simple:

Dim oChk As Control
Dim bResult as Boolean
For Each oChk in Controls
If TypeOf oChk Is CheckBox Then
If oChk.Value = vbChecked Then
bResult = True
Else
bResult = False
Exit For
End If
End If
Next oChk
Me.cmdRC.Visible = bResult
0
steph064 Messages postés 90 Date d'inscription mardi 30 décembre 2008 Statut Membre Dernière intervention 10 juin 2009
28 mai 2009 à 14:18
J'avais pas pensé au AND ^^ mais pour la boucle là on m'apprend un truc en + ^^
0
cruise1406 Messages postés 11 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 3 juin 2009
3 juin 2009 à 11:32
Merci beaucoup pour ton aide, je viens de téster ta solution mais ça n'a pas l'air de fonctionner !
Je pense que ça viens de moi car je ne vois pas où positionner ta fonctionner :
sur click de chaque chkbox ? sur le bouton RC ? je dois téster a chaques fois mes chkbos car il n'y a pas d'ordre précis de remplissage, et de plus j'ai incorporé un bouton "selectionner tout" qui me selectionne toutes mes chkbox et qui est censé m'affiché mon bouton RC.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 juin 2009 à 11:51
le mieux serait de le place dans un Timer, comme ca tu serais tranquille.
0
cruise1406 Messages postés 11 Date d'inscription mardi 26 mai 2009 Statut Membre Dernière intervention 3 juin 2009
3 juin 2009 à 11:59
pb résolu merci !
0
Rejoignez-nous