Bonjour à tous,

J'ai un souci avec une macro, je suis débutant avec les boucles...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, k As Integer
 
For i = 34 To 47
For k = 1 To 14
 
    If Range("B" & i & ":E" & i) <> "" Then
        ActiveSheet.Shapes("CheckBox" & k).Visible = True
    Else
        ActiveSheet.Shapes("CheckBox" & k).Visible = False
End If
Next
Next
End Sub
VBA me met une incompatibilité de type au niveau du Range. Les cellules B34:E34 sont fusionnées.
En fait j'essayais de "simplifier" le programme ci-dessous avec une boucle, bien plus pratique :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
 
If Range("B34") <> "" Then Shapes("CheckBox1").Visible = True
If Range("B34") = "" Then Shapes("CheckBox1").Visible = False
 
If Range("B35") <> "" Then Shapes("CheckBox2").Visible = True
If Range("B35") = "" Then Shapes("CheckBox2").Visible = False
 
If Range("B36") <> "" Then Shapes("CheckBox3").Visible = True
If Range("B36") = "" Then Shapes("CheckBox3").Visible = False
 
If Range("B37") <> "" Then Shapes("CheckBox4").Visible = True
If Range("B37") = "" Then Shapes("CheckBox4").Visible = False
 
If Range("B38") <> "" Then Shapes("CheckBox5").Visible = True
If Range("B38") = "" Then Shapes("CheckBox5").Visible = False
 
If Range("B39") <> "" Then Shapes("CheckBox6").Visible = True
If Range("B39") = "" Then Shapes("CheckBox6").Visible = False
 
If Range("B40") <> "" Then Shapes("CheckBox7").Visible = True
If Range("B40") = "" Then Shapes("CheckBox7").Visible = False
 
If Range("B41") <> "" Then Shapes("CheckBox8").Visible = True
If Range("B41") = "" Then Shapes("CheckBox8").Visible = False
 
If Range("B42") <> "" Then Shapes("CheckBox9").Visible = True
If Range("B42") = "" Then Shapes("CheckBox9").Visible = False
 
If Range("B43") <> "" Then Shapes("CheckBox10").Visible = True
If Range("B43") = "" Then Shapes("CheckBox10").Visible = False
 
If Range("B44") <> "" Then Shapes("CheckBox11").Visible = True
If Range("B44") = "" Then Shapes("CheckBox11").Visible = False
 
If Range("B45") <> "" Then Shapes("CheckBox12").Visible = True
If Range("B45") = "" Then Shapes("CheckBox12").Visible = False
 
If Range("B46") <> "" Then Shapes("CheckBox13").Visible = True
If Range("B46") = "" Then Shapes("CheckBox13").Visible = False
 
If Range("B47") <> "" Then Shapes("CheckBox14").Visible = True
If Range("B47") = "" Then Shapes("CheckBox14").Visible = False
End Sub
Un peu d'aide serait la bienvenue !

Merci