XL 2019 Worksheet_Change(ByVal Target As Range), 3 alternatives

  • 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é
Bonjour le forum,

auriez vous la gentillesse de me donner un coup de main svp

Conditions souhaitées dans workbook change de la Feuille 1 :

Code:
[CODE=vb]If Worksheets("Feuil1").Range("AM106").Value = 2 and Worksheets("Feuil2").Shapes("Rectangle : coins arrondis 51").Visible = True Then
Worksheets("Feuil2").Shapes("Rectangle : coins arrondis 6").Visible = False
Worksheets("Feuil2").Shapes("Rectangle : coins arrondis 36").Visible = true
else
Worksheets("Feuil2").Shapes("Rectangle : coins arrondis 6").Visible = true
Worksheets("Feuil2").Shapes("Rectangle : coins arrondis 36").Visible = false
end if
[/CODE]

mais je souhaite en plus que que si une des deux conditions n'est pas remplie, alors :
Code:
Worksheets("Feuil2").Shapes("Rectangle : coins arrondis 6").Visible = false
Worksheets("Feuil2").Shapes("Rectangle : coins arrondis 36").Visible = false

un grand merci

Pat66
 
Solution
re
bonjour
la chose est tres simple
je te cite
'en d 'autres termes
'Si AM6 = 1 et la forme 51 est visible, on affiche la forme 6 et on masque la forme 36
'Si AM6 = 2 et la forme 51 est visible, on affiche la forme 36 et on masque la forme 6
'mais si la forme 51 est masquée, on masque les formes 6 et 36 quelque soit le contenu de AM6
dans le module de la Feuil1
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
onCacheOnMontre
End Sub



Dans un module standard
change les nomsdes shapes pour les tiens
dans cet exemple avec ces dux lignes tu gère les 3 conditions
Code:
Sub onCacheOnMontre()
dim cel as range
Set cel = sheets("Feuil1").[AM106]
With sheets("Feuil2")
.Shapes("forme6").Visible = cel = 1 And...
oui je me suis certainement trompé sur la formulation et cela vous a induit en erreur dès le départ, c'est bien pour cela que j'ai besoin d'aide, veuillez me pardonner j'aurais du rectifier mon post 1

Oui j'ai dis : "mais je souhaite en plus que que si une des deux conditions n'est pas remplie"

pour moi cela sous entendait notamment que si la forme 51 était masquée les formes 6 et 36 seraient masquées automatiquement, c'est pour cela que la macro de mon post 3 semble correspondre à la solution

en ce qui concerne ta macro, si je mets 1 dans AM106 et que la forme 51 est visible, les formes 6 et 36 sont masquées, hors la forme 6 devrait s'afficher et la forme 36 être masquée, cette condition n'est pas non plus respectée, mais j'assume complètement vous avoir induit en erreur
 
Dernière édition:
re
bonjour
la chose est tres simple
je te cite
'en d 'autres termes
'Si AM6 = 1 et la forme 51 est visible, on affiche la forme 6 et on masque la forme 36
'Si AM6 = 2 et la forme 51 est visible, on affiche la forme 36 et on masque la forme 6
'mais si la forme 51 est masquée, on masque les formes 6 et 36 quelque soit le contenu de AM6
dans le module de la Feuil1
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
onCacheOnMontre
End Sub



Dans un module standard
change les nomsdes shapes pour les tiens
dans cet exemple avec ces dux lignes tu gère les 3 conditions
Code:
Sub onCacheOnMontre()
dim cel as range
Set cel = sheets("Feuil1").[AM106]
With sheets("Feuil2")
.Shapes("forme6").Visible = cel = 1 And .Shapes("forme51").Visible
.Shapes("forme36").Visible = cel = 2 And .Shapes("forme51").Visible
End With
End Sub


bien que je ne vois pas l'intérêt de tout mettre dans l'event (une seule macro puisque ce serait dans l'event change de la feuil1 donc aucun visu sur les shapes de feuil2)
mais si tu y tiens tu peux tout mettre dans l'event change de la feuil1

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Set cel = [AM106]
With sheets("Feuil2")
.Shapes("forme6").Visible = cel = 1 And .Shapes("forme51").Visible
.Shapes("forme36").Visible = cel = 2 And .Shapes("forme51").Visible
End With
End Sub

j'ai testé ça match
 
Dernière édition:
re,

merci patricktoulon, c'est exactement ce qu'il me fallait, mon problème est résolu et en plus j'ai bien compris " je ne vois pas l'intérêt de tout mettre dans l'event "

merci à tous pour votre aide et encore désolé pour m'être mal exprimé, je ferais plus attention à l'avenir

cdt
 
- 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

Retour