Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Macro qui permet d'afficher ou pas des Shapes

  • Initiateur de la discussion Initiateur de la discussion pat66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pat66

XLDnaute Impliqué
Bonsoir le forum,

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

un grand merci pour votre aide
 
Solution
Re

@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
Bonjour le fil

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
 
Bonsoir Staple1600

je ne souhaite masquer que les shapes 1,2, 3 et pas les autres, merci
 
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
 
Bonjour @pat66

@pat66
J'ai bien compris
D'ou les mots employés dans mon message
une piste
à étudier

Donc il suffit en suite d'adapter , non ?

@sylvanu
J'attendais le fichier fourni par le demandeur avant d'aller plus loin 😉

PS: j'avais ceci sous le coude
Sub itoPresto()
ActiveSheet.DrawingObjects.Visible = True
End Sub
 
Re

@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
 
Re

@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
 
bonjour le fil,

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
284
Réponses
4
Affichages
386
Réponses
72
Affichages
1 K
Réponses
8
Affichages
577
Réponses
5
Affichages
117
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…