Simplification d'un code VBA Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
Micka_Plays
Membre habitué
Membre habitué
Messages : 106
Appréciation reçue : 1
Inscrit le : 13 juin 2019
Version d'Excel : 2007

Message par Micka_Plays » 9 juillet 2019, 11:34

Bonjour à tous,

Voici mon code :
Private Sub ChkB01_Click()
    'CONCERNÉ/NON-CONCERNÉ 01
    Sheets("Base").Select
Dim CL As Range
Dim Dlig As Integer
Dlig = Cells(Rows.Count, "A").End(xlUp).Row

Set CL = Range("A2:A" & Dlig).Find(What:=Me.TBoxM1.Value, LookIn:=xlValues, LookAt:=xlWhole)
   If ChkB01.Value = True Then
   Sheets("Base").Range("DH" & CL.Row) = "NC"
   Else
   Sheets("Base").Range("DH" & CL.Row).ClearContents
   End If
   
Set CL = Range("A2:A" & Dlig).Find(What:=Me.TBoxM2.Value, LookIn:=xlValues, LookAt:=xlWhole)
   If ChkB01.Value = True Then
   Sheets("Base").Range("DH" & CL.Row) = "NC"
   Else
   Sheets("Base").Range("DH" & CL.Row).ClearContents
   End If
   
Set CL = Range("A2:A" & Dlig).Find(What:=Me.TBoxM3.Value, LookIn:=xlValues, LookAt:=xlWhole)
   If ChkB01.Value = True Then
   Sheets("Base").Range("DH" & CL.Row) = "NC"
   Else
   Sheets("Base").Range("DH" & CL.Row).ClearContents
   End If
   
End Sub
Etant donné qu'i y a la redondance de if/then/else, il y a un moyen de simplifier opur le même effet ?
Ce code permet, e n cliquant dans une checkbox, de mettre VRAI ou FAUX dans une liste de cases.

Merci par avance =)
OOOO :mrgreen: "Y'a qu'enssemble qu'on est plusieurs !" :mrgreen: OOOO
Avatar du membre
Micka_Plays
Membre habitué
Membre habitué
Messages : 106
Appréciation reçue : 1
Inscrit le : 13 juin 2019
Version d'Excel : 2007

Message par Micka_Plays » 9 juillet 2019, 11:43

Re,

J'ai essayé ce code, mais ça ne marche pas :bof:
Private Sub ChkB01_Click()
    'CONCERNÉ/NON-CONCERNÉ 01
    Sheets("Base").Select
Dim CL As Range
Dim Dlig As Integer
Dlig = Cells(Rows.Count, "A").End(xlUp).Row

Set CL = Range("A2:A" & Dlig).Find(What:=Me.TBoxM1.Value, LookIn:=xlValues, LookAt:=xlWhole)
Set CL = Range("A2:A" & Dlig).Find(What:=Me.TBoxM2.Value, LookIn:=xlValues, LookAt:=xlWhole)
Set CL = Range("A2:A" & Dlig).Find(What:=Me.TBoxM3.Value, LookIn:=xlValues, LookAt:=xlWhole)
   
   If ChkB01.Value = True Then
   Sheets("Base").Range("DH" & CL.Row) = "NC"
   Else
   Sheets("Base").Range("DH" & CL.Row).ClearContents
   End If
   
End Sub
OOOO :mrgreen: "Y'a qu'enssemble qu'on est plusieurs !" :mrgreen: OOOO
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 2'438
Appréciations reçues : 206
Inscrit le : 29 mai 2018
Version d'Excel : 365 fr 32 bits

Message par ric » 9 juillet 2019, 12:10

Bonjour,

Tu étais proche ...
Un essai ...
Private Sub ChkB01_Click()
    'CONCERNÉ/NON-CONCERNÉ 01
Dim CL1 As Range
Dim CL2 As Range
Dim CL3 As Range
Dim Dlig As Integer
    
Sheets("Base").Select
Dlig = Cells(Rows.Count, "A").End(xlUp).Row

Set CL1 = Range("A2:A" & Dlig).Find(What:=Me.TBoxM1.Value, LookIn:=xlValues, LookAt:=xlWhole)
Set CL2 = Range("A2:A" & Dlig).Find(What:=Me.TBoxM2.Value, LookIn:=xlValues, LookAt:=xlWhole)
Set CL3 = Range("A2:A" & Dlig).Find(What:=Me.TBoxM3.Value, LookIn:=xlValues, LookAt:=xlWhole)
   
   If ChkB01.Value = True Then
      Sheets("Base").Range("DH" & CL1.Row) = "NC"
      Sheets("Base").Range("DH" & CL2.Row) = "NC"
      Sheets("Base").Range("DH" & CL3.Row) = "NC"
   Else
      Sheets("Base").Range("DH" & CL1.Row).ClearContents
      Sheets("Base").Range("DH" & CL3.Row).ClearContents
      Sheets("Base").Range("DH" & CL3.Row).ClearContents
   End If
End Sub



ric
1 membre du forum aime ce message.
Un bon dépanneur : la touche F8 pour faire un Pas-à-Pas sur le code. :mrgreen:
Avatar du membre
Micka_Plays
Membre habitué
Membre habitué
Messages : 106
Appréciation reçue : 1
Inscrit le : 13 juin 2019
Version d'Excel : 2007

Message par Micka_Plays » 9 juillet 2019, 12:36

Merci 1000 fois, c'est parfait =)
OOOO :mrgreen: "Y'a qu'enssemble qu'on est plusieurs !" :mrgreen: OOOO
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message