XL 2010 Affichage d'images au même endroit en fonction du Boutton utilisé

Gustinhio

XLDnaute Nouveau
Bonjour à toutes et tous,

J'aimerai créer un fichier qui me permette d'afficher successivement des images (toujours au même endroit) en fonction du button sur lequel je vais cliquer mais je vous avoue que je suis un peu perdu.

Je vous mets en PJ ce à quoi j'aimerai que cela ressemble.
Les bouttons bleu serait les bouttons actifs et afficherai une image différente en fonction de si je clique sur 20-25 ou 15-20 mais l'image serait affiché toujours au même endroit dans le cadre blanc

merci d'avance

1657638691211.png
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Gustinhio, et bienvenu sur XLD,
Pour moi le plus simple est de rendre toutes les images invisibles puis d'afficher celle qui est demandée.
Pour se simplifier la vie, le nom des images est en colonne B qui est masquée.
Ce qui fait qu'on peut rajouter autant d'images qu'on veut sans se préoccuper de leur place, ni de modifier la macro. de plus juste une simple macro pour tout gérer,avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Or Target = "" Then Exit Sub
    If Not Intersect(Target, [A:A]) Is Nothing Then
        Application.ScreenUpdating = False
        For Each Sh In Shapes               ' On masque toutes les images
            Sh.Visible = False
        Next Sh
        NomImage = Cells(Target.Row, "B")   ' On récupère le nom de l'image à afficher
        Shapes(NomImage).Visible = True     ' On l'affiche
    End If
Fin:
End Sub
 

Pièces jointes

  • Gustinhio.xlsm
    91.6 KB · Affichages: 9

Gustinhio

XLDnaute Nouveau
Bonsoir Gustinhio, et bienvenu sur XLD,
Pour moi le plus simple est de rendre toutes les images invisibles puis d'afficher celle qui est demandée.
Pour se simplifier la vie, le nom des images est en colonne B qui est masquée.
Ce qui fait qu'on peut rajouter autant d'images qu'on veut sans se préoccuper de leur place, ni de modifier la macro. de plus juste une simple macro pour tout gérer,avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Or Target = "" Then Exit Sub
    If Not Intersect(Target, [A:A]) Is Nothing Then
        Application.ScreenUpdating = False
        For Each Sh In Shapes               ' On masque toutes les images
            Sh.Visible = False
        Next Sh
        NomImage = Cells(Target.Row, "B")   ' On récupère le nom de l'image à afficher
        Shapes(NomImage).Visible = True     ' On l'affiche
    End If
Fin:
End Sub
Hello et déjà un grand merci pour le message de bienvenu et pour l'ensemble de ta réponse !

Est il normal que sur ton fichier je ne vois pas de colonne ?

Si je veux créer mon propre fichier je dois rentrer comment cette macro ?

Je te remercie d'avance
 

Gustinhio

XLDnaute Nouveau
Bonsoir,

Je les ai masqué, tout simplement. faire Mise en page/En-têtes/Afficher.
Regarde la pièce jointe 1145172
La macro est événementielle, elle est à mettre dans la feuille considérée.
Merci beaucoup pour ton aide je viens de réussir exactement ce que je voulais faire.

Dernière chose que je voulais te demander si je veux rajouter des Bouttons en colonnes C et masquer la collone D pour avoir le bon nom de l'image comment dois-je changer cette macro ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
If Not Intersect(Target, [A:A]) Is Nothing Then Donne la colonne active sur le clic
NomImage = Cells(Target.Row, "B") Donne la colonne où se trouve le nom des images

Donc si les cellules à cliquer sont en C, et les noms en D :
VB:
If Not Intersect(Target, [C:C]) Is Nothing Then
et
NomImage = Cells(Target.Row, "D")
 

Gustinhio

XLDnaute Nouveau
If Not Intersect(Target, [A:A]) Is Nothing Then Donne la colonne active sur le clic
NomImage = Cells(Target.Row, "B") Donne la colonne où se trouve le nom des images

Donc si les cellules à cliquer sont en C, et les noms en D :
VB:
If Not Intersect(Target, [C:C]) Is Nothing Then
et
NomImage = Cells(Target.Row, "D")
Merci beaucoup, mais je voulais entendre par la d'avoir des cellules en plus.

Exemple cellule A et B comme vous l'avez fait, mais rajouter aussi des cellules C et D

Mon fichier a la fin va ressembler a cela.

(je vous remercie vraiment pour votre intervention et pour l'ensemble de votre aide précieuse)

1657695176643.png
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Je rappelle qu'il faut deux colonnes pour avoir les infos sur une image, une pour écrire un texte et détecter un clic, l'autre pour y mettre le nom de l'image.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Or Target = "" Then Exit Sub    ' Si selection multiple ou cellule vide on sort
    If Not Intersect(Target, [A:A]) Is Nothing Or _
        Not Intersect(Target, [D:D]) Is Nothing Or _
        Not Intersect(Target, [G:G]) Is Nothing Or _
        Not Intersect(Target, [J:J]) Is Nothing Then    ' Détection des zones à prendre en compte
        Application.ScreenUpdating = False
        For Each Sh In Shapes                           ' On masque toutes les images
            Sh.Visible = False
        Next Sh
        NomImage = Cells(Target.Row, Target.Column + 1) ' On récupère le nom de l'image à afficher
        Shapes(NomImage).Visible = True                 ' On l'affiche
    End If
Fin:
End Sub
J'ai rajouté celle ci, à lancer à la main, qui rend visibles toutes les images. Quand il y en a beaucoup cela peut être utile pour les manipuler lors de la mise au point.
Code:
Sub ToutVoir()
    For Each Sh In Shapes
        Sh.Visible = True
    Next Sh
End Sub
 

Pièces jointes

  • Gustinhio2.xlsm
    94.2 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 295
Membres
103 171
dernier inscrit
clemm