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

XL 2010 Sélection d'image

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

guy72

XLDnaute Impliqué
Bonjour,
J'ai fait une sélection d'images de la lune avec des (ChedkBox)
Avec un code, j'ai réussi à avoir qu'une image en supprimant les autres, mais ces dernières restent cochées.
1) Y-a-t-il un moyen pour qu'elles soient décochées en même temps que l'image
2) Ou (mieux) y-a-t-il un moyen de cliquer sur une image et de faire apparaître son double
Merci de votre aide
Cordialement
 

Pièces jointes

Bonjour Guy and Job,
Si vous tenez à vos CheckBoxes, vous pouvez décochez les autres :
VB:
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
    Premier_croissant.Visible = True
    Nouvelle_lune.Visible = False
    Dernier_croissant.Visible = False
    Pleine_lune.Visible = False
    CheckBox2 = False
    CheckBox3 = False
    CheckBox4 = False
Else
    Premier_croissant.Visible = False
End If
End Sub
En rajoutant CheckBox xx = false
 
Bonjour à vous
Je ne tiens pas forcément aux CheckBox
J'ai pensée à ça parce que j'avais un exemple dans mes archives.
Je cherche à choisir une image de lune le plus simple possible (CheckBox ou (OptionButtons ?) ou liste déroulante ou clic sur l'image........
 
J'ai utilisé une astuce pour simplifier le code, les images sont appelées Image1, imag2 ... de cette façon on peut utiliser un for next.
VB:
Sub ToutesLunesVisible()    'Rend visible toutes les lunes
    For i = 2 To 9
        ActiveSheet.Shapes("Image " & i).Visible = True
    Next i
End Sub
Sub ToutesLunesInvisible()  'Rend invisible toutes les lunes
    For i = 2 To 9
        ActiveSheet.Shapes("Image " & i).Visible = False
    Next i
End Sub
Sub Lunes3()                'Rend visible toutes la lune 3
    ActiveSheet.Shapes("Image " & 3).Visible = True
End Sub
 
Bonsour® Guy85
Bonjour guy72,

Plutôt que des CheckBoxes utilisez des OptionButtons, il n'y en aura toujours qu'un de sélectionné.

A+
je dirais même plus ... !
superposer les images de tailles identiques...
mettre celle sélectionnée au premier plan
😉

VB:
Private Sub PremierCroissant_Click()
Premier_Croissant.BringToFront
End Sub

Private Sub PremierQuartier_Click()
Premier_Quartier.BringToFront
End Sub

Private Sub GibeuseCroissante_Click()
Gibeuse_Croissante.BringToFront
End Sub

Private Sub PleineLune_Click()
Pleine_lune.BringToFront
End Sub

Private Sub GibeuseDeCroissante_Click()
Gibeuse_Decroissante.BringToFront
End Sub

Private Sub DernierCroissant_Click()
Dernier_Croissant.BringToFront
End Sub

Private Sub DernierQuartier_Click()
Dernier_Quartier.BringToFront
End Sub

Private Sub NouvelleLune_Click()
Nouvelle_lune.BringToFront
End Sub
 

Pièces jointes

Mais ça ne marche que si les images sont de même taille et superposables.
Dans le cas où les images par exemple se "déplacent" le mode visible/invisible est plus adéquat.
Tou dépend de la demande et du contexte.
 

Pièces jointes

Bonsour®E
Tiens !!!, bonjour modeste.
L'image sera toujours à la même place.
Part-contre, est-ce embêtant (au niveau poids du ficher) d'avoir plusieurs images superposées ?
Embêtant n'est pas le mot...
quel que soit le format original, Toute image incluse dans un fichier Excel est intégrée au format bitmap
Les 8 images se trouvant dans le fichier précédent participent intégralement aux 751Ko du fichier
une solution serait d'externaliser les images au détriment de complications (code, durée) dues à l'usage de LoadPicture
 
Salut sylvanu, Modeste geedee,

Avec 8 OptionButtons et autant d'images (ActiveX) on peut commencer à s'intéresser au module de classe.

Fichier joint avec dans ThisWorkbook :
VB:
Dim OB() As New Classe1

Private Sub Workbook_Open()
Dim o As Object, n%
For Each o In Feuil1.OLEObjects 'CodeName de la feuille
    If TypeName(o.Object) = "OptionButton" Then ReDim Preserve OB(n): Set OB(n).OB = o.Object: n = n + 1
Next
End Sub
Dans le module de classe Classe1 :
VB:
Public WithEvents OB As MSForms.OptionButton

Private Sub OB_Click()
OB.Parent.OLEObjects(Left(OB.Name, 8)).BringToFront
End Sub
A+
 

Pièces jointes

Merci pour toutes vos réponses.
Mais, moi, j'ai toujours mon éternel problème:
Je suis obligé de poster un fichier comme modèle, car mon fichier est trop gros.
Donc, après avoir eu vos fichiers:
1) Je copie la feuille dans mon fichier d'origine (ça fonctionne)
2) Je copie les images, les boutons, les codes de la feuille qui est déjà dans mon fichier dans ma feuille qui s'appelle "Mizol" (ou il y a la reproduction de ma console)......et là ça ne fonctionne plus....😡
Pourquoi ??
 
les images,
les optionButtons sont à renommer...

les images :
Dernier_Croissant
Dernier_Quartier
Gibeuse_Croissante
Gibeuse_Decroissante
Nouvelle_lune
Pleine_lune
Premier_Croissant
Premier_Quartier

les optionButton
DernierCroissant_Click()
DernierQuartier_Click()
GibeuseCroissante_Click()
GibeuseDeCroissante_Click()
NouvelleLune_Click()
PleineLune_Click()
PremierCroissant_Click()
PremierQuartier_Click()
 
- 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

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