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

Autres AFFICHER IMAGES SELON LEURS NOMS

chaelie2015

XLDnaute Accro
Bonjour Forum
ci dessous, dans la cellule A1 une liste déroulante qui contient des noms des images; je souhaite afficher une image selon son nom
exemple : des images nommées "TOTO", "TITI",TATA" ...etc
dans la cellule A1 j'ai une liste déroulante "TOTO", "TITI",TATA"
je souhaiterai généraliser ce code.
If UCase(Range("A1")) = "TOTO" Then
Shapes("TOTO").Visible = True
Else
Shapes("TOTO").Visible = False
End If
Salutations
 

chaelie2015

XLDnaute Accro
Re
après une recherche j'ai trouvé ce code

Private Sub Worksheet_Change(ByVal Target As Range)

For Each img In ActiveSheet.Shapes
If img.Name Like [A1] Then
With img: .Visible = Not .Visible
End With
End If
Next
End Sub
mais les images ne se masque pas automatiquement ??
a+
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

chaelie2015
Tu ne mets pas assez souvent les pieds dans ton dressing VBA, on dirait, non ?
EDITION: Bonjour job75
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour chaelie2015, JM,

Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x$, e
With [A1]
    If Intersect(Target, .Cells) Is Nothing Then Exit Sub
    x = UCase(.Value)
End With
For Each e In [liste]
    If UCase(e) <> "TOUS" Then Shapes(e).Visible = x = "TOUS"
Next
    If x <> "" And x <> "TOUS" Then Shapes(x).Visible = True
End Sub
A+
 

Pièces jointes

  • Images(1).xlsm
    37.9 KB · Affichages: 27

chaelie2015

XLDnaute Accro
Bonsoir JM , JOB75
@ job75: merci pour la réponse et désolé pour ce retard.
j'ai un bug "Erreur d’exécution..... : élément portant ce nom est introuvable"
a ce niveau du code : ....... Shapes(e).Visible = x = "TOUS"
merci par avance
 

Discussions similaires

Réponses
5
Affichages
198
Réponses
12
Affichages
648
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…