XL 2021 activesheet.shapes suivant la valeur d'une cellule

  • Initiateur de la discussion Initiateur de la discussion JUAN45
  • 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 !

JUAN45

XLDnaute Nouveau
Bonjour,
Je souhaiterais afficher ou image dans une zone de ma feuille excel (pas dans une cellule) en fonction de ce qui a été choisi par Une combobox avec 3 choix d'images.
- Ex. I, U, M pour les choix
- dans les propriétés du combobox, dans ''Linkedcell'' j'ai entré A1. (I U et M s'affichent bien en fonction du choix de ma combobox)

J'ai 3 photos dans le classeur Image1, Image2, Image3

si A1 = I , je voudrais afficher l'image 1 uniquement
Si A1= U, je voudrais afficher l'image 2 uniquement
Si A1= M, je voudrais afficher l'image 3 uniquement

J'ai réussi à afficher ou ne pas afficher les images avec des boutons de contrôle et cela fonctionne mais je souhaiterai plutôt utiliser un combobox
Private Sub CommandButton1_Click() ou Private Sub ToggleButton1_Click()
With ActiveSheet.Shapes("Image1")
.Visible = Not .Visible
End With
End Sub

Quelqu'un aurait une idée de la ligne de code à écrire ?
Private Sub ComboBox1_Change()
???
End Sub
Merci d'avance
 
Bonsoir JUAN45,

Supposons que les 3 images s'appellent Image1 Image2 Image3.

Mettez ces noms dans les cellules B1 B2 B3.

Donnez à la propriété ListFillRange de ComboBox1 la valeur B1:B3.

Et placez cette macro dans le code de la feuille :
VB:
Private Sub ComboBox1_Change()
Dim s As Shape
For Each s In Shapes
    If s.Name Like "Image*" Then s.Visible = False 'masque
Next
If ComboBox1.ListIndex > -1 Then Shapes(ComboBox1).Visible = True 'affiche
End Sub
A+
 
Dernière édition:
Maintenant si vous tenez à I U M vous donnerez ces 3 noms aux 3 images.

Vous mettrez ces noms dans la plage B1:B3 et cette macro dans le code de la feuille :
VB:
Private Sub ComboBox1_Change()
Dim s As Shape
For Each s In Shapes
    If Application.CountIf([B1:B3], s.Name) Then s.Visible = False 'masque
Next
If ComboBox1.ListIndex > -1 Then Shapes(ComboBox1).Visible = True 'affiche
End Sub
Une remarque : les 3 images peuvent être placées les unes sur les autres, c'est mieux.
 
Il est plus simple de mettre une liste de validation en A1 de formule =$B$1:$B$3 avec cette macro :
VB:
Private Sub Worksheet_Change(ByVal Target as Range)
Dim s As Shape
For Each s In Shapes
    If Application.CountIf([B1:B3], s.Name) Then s.Visible = False 'masque
Next
If [A1] <> "" Then Shapes([A1]).Visible = True 'affiche
End Sub
Bonne nuit.
 
Il est plus simple de mettre une liste de validation en A1 de formule =$B$1:$B$3 avec cette macro :
VB:
Private Sub Worksheet_Change(ByVal Target as Range)
Dim s As Shape
For Each s In Shapes
    If Application.CountIf([B1:B3], s.Name) Then s.Visible = False 'masque
Next
If [A1] <> "" Then Shapes([A1]).Visible = True 'affiche
End Sub
Bonne nuit.
Bonjour,
Je souhaiterais afficher ou image dans une zone de ma feuille excel (pas dans une cellule) en fonction de ce qui a été choisi par Une combobox avec 3 choix d'images.
- Ex. I, U, M pour les choix
- dans les propriétés du combobox, dans ''Linkedcell'' j'ai entré A1. (I U et M s'affichent bien en fonction du choix de ma combobox)

J'ai 3 photos dans le classeur Image1, Image2, Image3

si A1 = I , je voudrais afficher l'image 1 uniquement
Si A1= U, je voudrais afficher l'image 2 uniquement
Si A1= M, je voudrais afficher l'image 3 uniquement

J'ai réussi à afficher ou ne pas afficher les images avec des boutons de contrôle et cela fonctionne mais je souhaiterai plutôt utiliser un combobox
Private Sub CommandButton1_Click() ou Private Sub ToggleButton1_Click()
With ActiveSheet.Shapes("Image1")
.Visible = Not .Visible
End With
End Sub

Quelqu'un aurait une idée de la ligne de code à écrire ?
Private Sub ComboBox1_Change()
???
End Sub
Merci d'avance
Bonsoir JUAN45,

Supposons que les 3 images s'appellent Image1 Image2 Image3.

Mettez ces noms dans les cellules B1 B2 B3.

Donnez à la propriété ListFillRange de ComboBox1 la valeur B1:B3.

Et placez cette macro dans le code de la feuille :
VB:
Private Sub ComboBox1_Change()
Dim s As Shape
For Each s In Shapes
    If s.Name Like "Image*" Then s.Visible = False 'masque
Next
If ComboBox1.ListIndex > -1 Then Shapes(ComboBox1).Visible = True 'affiche
End Sub
A+
 
Maintenant si vous tenez à I U M vous donnerez ces 3 noms aux 3 images.

Vous mettrez ces noms dans la plage B1:B3 et cette macro dans le code de la feuille :
VB:
Private Sub ComboBox1_Change()
Dim s As Shape
For Each s In Shapes
    If Application.CountIf([B1:B3], s.Name) Then s.Visible = False 'masque
Next
If ComboBox1.ListIndex > -1 Then Shapes(ComboBox1).Visible = True 'affiche
End Sub
Une remarque : les 3 images peuvent être placées les unes sur les autres, c'est mieux.
Merci job75 d’avoir pris le temps de m’écrire ces lignes de codes.
Je vais essayer ça au plus vite .
 
- 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

  • Question Question
Microsoft 365 VBA insert photos
Réponses
12
Affichages
788
Retour