Amélioration possible ???

teamtat

XLDnaute Occasionnel
Bonjour,
Je voudrais savoir si c'été possible d'améliorer ce code ???
Merci

Code:
If ThisWorkbook.Worksheets("Saisie de données").CheckBox13.Value = True Then
      wk.Worksheets("Masque saisie").mac3 = True
Else
      wk.Worksheets("Masque saisie").mac3 = False
End If

If ThisWorkbook.Worksheets("Saisie de données").CheckBox14.Value = True Then
     wk.Worksheets("Masque saisie").mac3 = True
Else
      wk.Worksheets("Masque saisie").mac3 = False
End If


If ThisWorkbook.Worksheets("Saisie de données").CheckBox16.Value = True Then
      wk.Worksheets("Masque saisie").mac3 = True
Else
      wk.Worksheets("Masque saisie").mac3 = False
End If
 

roro69

XLDnaute Impliqué
Re : Amélioration possible ???

Bonjour,
Aessayer:
Dim Ctrl As Control

'Boucle sur tous les contrôles
For Each Ctrl In Me.Controls
'Vérifie qu'il s'agit d'une chexkbox
If TypeOf Ctrl Is MSForms.CheckBox Then
If Ctrl.Value = True Then
With wk
.Worksheets("Masque saisie").mac3 = True
Else
.Worksheets("Masque saisie").mac3 = False
End with
'Sort de la boucle
Exit For
End If
End If
Next
End Sub
A++
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Amélioration possible ???

Bonjour teamtat,
Peut être avec :
Code:
With ThisWorkbook.Worksheets("Saisie de données")
If .CheckBox13.Value = True And .CheckBox14.Value = True And  CheckBox16.Value = True  Then
      wk.Worksheets("Masque saisie").mac3 = True
Else
      wk.Worksheets("Masque saisie").mac3 = False
End If
End With
Je ne doute pas qu'il ai mieux.
Cordialement
 

teamtat

XLDnaute Occasionnel
Re : Amélioration possible ???

Merci mais j'ai oublié de préciser que j'ai des autres checkboxs

Code:
 If ThisWorkbook.Worksheets("Saisie de données").CheckBox13.Value = True Then
      wk.Worksheets("Masque saisie").mac3 = True
Else
      wk.Worksheets("Masque saisie").mac3 = False
End If

If ThisWorkbook.Worksheets("Saisie de données").CheckBox14.Value = True Then
     wk.Worksheets("Masque saisie").mac3 = True
Else
      wk.Worksheets("Masque saisie").mac3 = False
End If


If ThisWorkbook.Worksheets("Saisie de données").CheckBox16.Value = True Then
      wk.Worksheets("Masque saisie").mac3 = True
Else
      wk.Worksheets("Masque saisie").mac3 = False
End If 


'*********************************************************

If ThisWorkbook.Worksheets("Saisie de données").CheckBox19.Value = True Then
      wk.Worksheets("Masque saisie").ris20 = True
Else
      wk.Worksheets("Masque saisie").ris20 = False
End If

If ThisWorkbook.Worksheets("Saisie de données").CheckBox66.Value = True Then
      wk.Worksheets("Masque saisie").ris20 = True
Else
      wk.Worksheets("Masque saisie").ris20 = False
End If
 

pierrejean

XLDnaute Barbatruc
Re : Amélioration possible ???

bonjour teamtat

Salut roro

Si les Checkbox sont issues de la boite a outils Controles :
A tester
Code:
Numeros = Array(13, 14, 16)
For n = LBound(Numeros) To UBound(Numeros)
 If ThisWorkbook.Worksheets("Saisie de données").Shapes("CheckBox" & Numeros(n)).Value = True Then
   wk.Worksheets("Masque saisie").mac3 = True
 Else
   wk.Worksheets("Masque saisie").mac3 = False
 End If
Next n
 

teamtat

XLDnaute Occasionnel
Re : Amélioration possible ???

Merci efgé le code est correct mais cela ne coche pas mes checkbox dans mon autre classeur


Code:
 With ThisWorkbook.Worksheets("Saisie de données")
If .CheckBox19.Value = True And .CheckBox66.Value = True Then
     wk.Worksheets("Masque saisie").ris20 = True
Else
      wk.Worksheets("Masque saisie").ris20 = False
End If
End With
 

pierrejean

XLDnaute Barbatruc
Re : Amélioration possible ???

Re

Sauf erreur , il n'y a rien a mettre a la place de Numeros
Et si cela fonctionne le seul avantage par rapport a celle de mon voisin Youki :) est que l'ajout ou le retrait d'un Numero de checkbox est plus rapide
 

pierrejean

XLDnaute Barbatruc
Re : Amélioration possible ???

Re

Si on reprend le code d'origine ma formulation est correcte et correspond aux And
Et il est vrai que pour des OR ,je devrais avoir

Code:
Numeros = Array(13, 14, 16)
For n = LBound(Numeros) To UBound(Numeros)
If ThisWorkbook.Worksheets("Saisie de données").Shapes("CheckBox" & Numeros(n)).Value = True Then
wk.Worksheets("Masque saisie").mac3 = True
exit for
Else
wk.Worksheets("Masque saisie").mac3 = False
End If
Next n
 

Statistiques des forums

Discussions
312 450
Messages
2 088 515
Membres
103 873
dernier inscrit
Sabin