VBA : If CheckBox.Value = True Or CheckBox.Value = True Then ...

[Résolu/Fermé]
Signaler
Messages postés
11
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
12 mars 2018
-
Messages postés
11
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
12 mars 2018
-
Bonjour,

Je cherche à créer une macro qui permette à ce que si une des 3 checkbox est cochée, il faut afficher les lignes 96 à 167.

Voici le code entré mais j'ai un message d'erreur comme quoi il un objet est requis

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Or CheckBox3.Value = True Or CheckBox21.Value = True Then
Rows("96:167").EntireRow.Hidden = False
Else
Rows("96:167").EntireRow.Hidden = True
End If
End Sub

Private Sub CheckBox3_Click()
If CheckBox1.Value = True Or CheckBox3.Value = True Or CheckBox21.Value = True Then
Rows("96:167").EntireRow.Hidden = False
Else
Rows("96:167").EntireRow.Hidden = True
End If
End Sub

Private Sub CheckBox21_Click()
If CheckBox1.Value = True Or CheckBox3.Value = True Or CheckBox21.Value = True Then
Rows("96:167").EntireRow.Hidden = False
Else
Rows("96:167").EntireRow.Hidden = True
End If
End Sub

Merci d'avance pour votre aide !

2 réponses

Messages postés
10102
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
13 septembre 2021
2 199
Essaies ceci

Les tris checkboxXX_Click font appel à la (même) procedure OK

Option Explicit

Sub ok()
If CheckBox1 Then
  Rows(76).Hidden = False
Else
  Rows(76).Hidden = True
End If
If CheckBox3 Then
  Rows(78).Hidden = False
Else
  Rows(78).Hidden = True
End If
If CheckBox21 Then
  Rows(88).Hidden = False
Else
  Rows(88).Hidden = True
End If
If (CheckBox1 Or CheckBox3 Or CheckBox21) = True Then
  Rows("96:167").Hidden = False
Else
  Rows("96:167").Hidden = True
End If
End Sub

Private Sub CheckBox1_Click()
Call ok
End Sub

Private Sub CheckBox3_Click()
Call ok
End Sub

Private Sub CheckBox21_Click()
Call ok
End Sub

Cdlmnt
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42584 internautes nous ont dit merci ce mois-ci

Messages postés
11
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
12 mars 2018

Merci ça fonctionne !!!
Excellent
Messages postés
10102
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
13 septembre 2021
2 199
Bonjour

ton code semble correct
tu ne dis pas sur quelle ligne se trouve l'erreur et si elle est à la compilation ou à l'exécution
tu peux simplifier un peu, un petit exemple
http://www.cjoint.com/c/GKcplzU6gDB

Cdlmnt
Messages postés
11
Date d'inscription
jeudi 2 novembre 2017
Statut
Membre
Dernière intervention
12 mars 2018

Bonjour ccm81,

Merci beaucoup pour cette réactivité !
Je suis très très novice et ai du mal à voir le lien entre ma demande et ton fichier...

Il s'agit de l'erreur d'exécution 424. objet requis. La ligne If CheckBox1.Value = True Or CheckBox3.Value = True Or CheckBox21.Value = True Then se met en surbrillance jaune.

Apres réflexion, je pense qu'il doit y avoir un lien avec le fait que j'ai déjà mis une condition sur chacune de ces checkbox à savoir :

1. je souhaite que si ma checkbox 1 est cochée, la ligne 76 soit affichée sinon elle est masquée :
Sub CheckBox1_Click()
If CheckBox3.Value = True Then
Rows("76:76").EntireRow.Hidden = False
Else
Rows("76:76").EntireRow.Hidden = True
End If
End Sub


2. Je souhaite que si ma checkbox 3 est cochée, la ligne 78 soit affichée sinon elle est masquée:
Sub CheckBox3_Click()
If CheckBox3.Value = True Then
Rows("78:78").EntireRow.Hidden = False
Else
Rows("78:78").EntireRow.Hidden = True
End If
End Sub

3. Je souhaite que si ma checkbox 21 est cochée, la ligne 88 soit affichée sinon elle est masquée :
Sub CheckBox21_Click()
' FOGD
If CheckBox21.Value = True Then
Rows("88:88").EntireRow.Hidden = False
Else
Rows("88:88").EntireRow.Hidden = True
End If
End Sub

4. Et enfin, que si une des 3 checkbox est cochée (1, 3 et 21), on affiche les lignes 96 à 167 sinon on les masque :

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Or CheckBox3.Value = True Or CheckBox21.Value = True Then
Rows("96:167").EntireRow.Hidden = False
Else
Rows("96:167").EntireRow.Hidden = True
End If
End Sub

Private Sub CheckBox3_Click()
If CheckBox1.Value = True Or CheckBox3.Value = True Or CheckBox21.Value = True Then
Rows("96:167").EntireRow.Hidden = False
Else
Rows("96:167").EntireRow.Hidden = True
End If
End Sub

Private Sub CheckBox21_Click()
If CheckBox1.Value = True Or CheckBox3.Value = True Or CheckBox21.Value = True Then
Rows("96:167").EntireRow.Hidden = False
Else
Rows("96:167").EntireRow.Hidden = True
End If
End Sub

Voilà la totalité du problème qui doit être beaucoup plus complexe que ce que je ne t'ai laissé croire ccm81... ;-)

Merci