Sélection d’une image à afficher (b)
Certes, si vous avez essayé de résoudre le problème que nous
vous avons posé dans le dernier article sans passer par le VBA, il est normal
que vous n’ayez pas trouvé de solution !
Dans la cellule E1, nous avons entré la formule suivante,
qui calcule le numéro de l’image sélectionnée via le menu déroulant en C1 :
=equiv(C1;F:F;0).
Remarque
1 – Comme nous avons pris toute la colonne F en argument, nous ne
serons pas limités dans le nombre d’images utilisables.
Remarque
2 – Attention ! Le numéro de
l’image ne correspond pas à celui affiché dans la zone « Nom » de la barre
d’édition, mais à l’ordre d’apparition parmi les images actuelles de la feuille
de calcul.
La solution à notre problème revient donc à créer une macro événementielle, liée
à l’onglet « Image », celui qui nous intéresse, et qui se déclenche
chaque fois que la valeur de la cellule C1 (le menu déroulant) est modifiée.
Il y a dans la liste du menu déroulant en haut à droite du
VBA 17 événements auxquels on peut associer une macro, l’option Change
que nous utilisons ici n’étant qu’une des possibilités pour la feuille de calcul active (Worksheet).
3 Commentaire(s):
Bonjour
C"est faisable sans macro :
En plaçant les images dans des cellules cote à cote
Via le collage spécial ; image liée, en remplaçant la source (cellule liée) par une zone nommée contenant une Index ou une Indirect ou une Decaler pour se caler sur la bonne cellule.
By Unknown, sur 10:54 PM
Bonjour,
Une autre solution consiste à nommer les images (Zone des noms) dans la feuille de calcul en utilisant les libellés exacts présents dans la liste de choix de la cellule C1. On se passe ainsi de l'index, de la formule EQUIV, DECALER, etc... pour ne garder que les noms.
Le choix dans la collection Pictures se fait ainsi par le nom au lieu de l'index.
La procédure événementielle devient :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
Me.Pictures.Visible = False
Me.Pictures(ActiveCell.Value).Visible = True
End If
End Sub
By cduigou, sur 2:02 PM
Je suis d'accord avec Arnaud, je fais ca sans macro depuis qq temps déjà.
peut être la réponse en "c".
By Benji, sur 3:08 PM
Enregistrer un commentaire
<< Accueil