Je souhaite afficher ou pas des shapes sur la feuille 1 selon que certaines cellules de la feuille 2 sont remplies ou pas
Exemple :
Au clic sur une forme de la feuille1
Si sur la feuille2 une des cellules de D12 à F12 et de D13 à F13 est vide, alors les shapes 1, 2, 3 de la feuille1 ne s'affichent pas, mais si toutes les cellules sont remplies alors les shapes 1,2,3 de la feuille1 s'affichent
@pat66
Toujours sur le même principe mais en ciblant 3 shapes spécifiques
Code:
Private Sub Worksheet_Activate()
Dim a, i%
a = Array("shp_1", "shp_2", "shp_3")
test = Application.CountBlank(Sheets(2).Range("D12:F13"))
For i = 0 To 2
Worksheets(1).Shapes(a(i)).Visible = IIf(test > 0 And test <= 6, False, True)
Next
End Sub
NB: Ici les 3 formes sont nommées shp_1, shp_2 et shp_3
Une piste à étudier
(deux feuilles dans un classeur)
Dans la feuille 1, ce code VBA
Code:
Private Sub Worksheet_Activate()
test = Application.CountBlank(Sheets(2).Range("D12:F13"))
If test <= 6 Then
DrawingObjects.Visible = False
End If
End Sub
C'est un chouia radical mais test OK chez moi.
Les shapes de la feuille 1 seront masquées quand on active la feuille 1
Une piste à étudier
(deux feuilles dans un classeur)
Dans la feuille 1, ce code VBA
Code:
Private Sub Worksheet_Activate()
test = Application.CountBlank(Sheets(2).Range("D12:F13"))
If test <= 6 Then
DrawingObjects.Visible = False
End If
End Sub
C'est un chouia radical mais test OK chez moi.
Les shapes de la feuille 1 seront masquées quand on active la feuille 1
Re, bonsoir Staple,
Ne manque t-il pas un Else, car si les shapes sont masquées, vous ne les rendez pas visibles.
VB:
Private Sub Worksheet_Activate()
test = Application.CountBlank(Sheets(2).Range("D12:F13"))
If test <= 6 Then
DrawingObjects.Visible = False
Else
DrawingObjects.Visible = True
End If
End Sub
@sylvanu
Toujours en mode : faisons des test dans VBE
Code:
Private Sub Worksheet_Activate()
test = Application.CountBlank(Sheets(2).Range("D12:F13"))
DrawingObjects.Visible = IIf(test > 0 And test < 6, False, True)
End Sub
Semble permettre de s'affranchir du If/Else/End if
@pat66
Toujours sur le même principe mais en ciblant 3 shapes spécifiques
Code:
Private Sub Worksheet_Activate()
Dim a, i%
a = Array("shp_1", "shp_2", "shp_3")
test = Application.CountBlank(Sheets(2).Range("D12:F13"))
For i = 0 To 2
Worksheets(1).Shapes(a(i)).Visible = IIf(test > 0 And test <= 6, False, True)
Next
End Sub
NB: Ici les 3 formes sont nommées shp_1, shp_2 et shp_3
la solution de Staple qui cible nominativement les shapes est parfaite pour résoudre mon problème, je peux ainsi l'adapter assez facilement si dans d'autres circonstances je dois renommer les shapes
je vous remercie tous pour votre aide, mon problème est résolu