Microsoft 365 Fonction SI

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 !

aspect

XLDnaute Junior
bonjour,
j'ai effectué un excel pour un EQUIPEMENT avec des appels d'images, la configuration de cet équipement est variable et donc je ne peux pas faire en sorte que visuellement les modules soient rapprochés.
J'utilise des cases (VRAI / FAUX) afin de faire apparaitre ou disparaitre les différents modules.
Je cherche une solution peut-être avec la fonction SI qui me permettrait lorsque je sélectionne par exemple les cases 11+15 alors j'affiche l'image qui se trouve dans mon onglet IMG correspondante; si je sélectionne 11 + 12 +15 alors j'affiche l'image correspondante à celle se trouvant dans l'onglet IMG et ainsi de suite.
merci pour vos idées.
Aspect
2026-04-02_17h29_51.png

PS: j'ai bien un fichier de test mais il fait 3,3 Mo, et si je réduit encore, il ne sera plus compréhensif, j'espére que mon explication suffira
 
Bonjour à tous,

Voyez le lien du fichier sur swisstransfer :

https://www.swisstransfer.com/d/ca7c542e-f792-4330-92b8-a1c2275684e7

et cette macro qui doit être affectée à chaque case à cocher :
VB:
Sub AfficherMasquerJoindreShapes()
'Cette macro est affectée à chaque case à cochuer
    Dim Im, Adr, X#, Ymax#, i, n
    Set Im = ActiveSheet.Shapes.Range(Array("Image 43", "Image 67", "Image 4217", "Image 80", "Image 98"))
    Adr = Array(14, 15, 11, 12, 13)
    Im.Visible = False 'masque tout
    X = [C6].Left: Ymax = [C6].Top + Im(1).Height
    For i = 1 To Im.Count
        If Range("B" & Adr(i - 1)) Then
            If n Then X = X + Im(n).Width
            n = i
            Im(i).Left = X: Im(i).Top = Ymax - Im(i).Height
            Im(i).Visible = True
        End If
    Next
End Sub

Par contre, afin d'améliorer encore la réponse de Dranred, est-il possible d'interdire la jonction de l'image 98 si l'image 80 n'est pas sélectionnée ?
Je n'en vois vraiment pas l'intérêt.

A+
 
En fait l'image 98 ne peut pas être joint à la 4217 il faut une condition c'est que l'image 80 soit sélectionné aussi
Bon il suffit d'ajouter :
VB:
If Range("B" & Adr(3)) = False Then Range("B" & Adr(4)) = False
pour obtenir :
VB:
Sub AfficherMasquerJoindreShapes()
'Cette macro est affectée à chaque case à cochuer
    Dim Im, Adr, X#, Ymax#, i, n
    Set Im = ActiveSheet.Shapes.Range(Array("Image 43", "Image 67", "Image 4217", "Image 80", "Image 98"))
    Adr = Array(14, 15, 11, 12, 13)
    If Range("B" & Adr(3)) = False Then Range("B" & Adr(4)) = False
    Im.Visible = False 'masque tout
    X = [C6].Left: Ymax = [C6].Top + Im(1).Height
    For i = 1 To Im.Count
        If Range("B" & Adr(i - 1)) Then
            If n Then X = X + Im(n).Width
            n = i
            Im(i).Left = X: Im(i).Top = Ymax - Im(i).Height
            Im(i).Visible = True
        End If
    Next
End Sub
 
Bon il suffit d'ajouter :
VB:
If Range("B" & Adr(3)) = False Then Range("B" & Adr(4)) = False
pour obtenir :
VB:
Sub AfficherMasquerJoindreShapes()
'Cette macro est affectée à chaque case à cochuer
    Dim Im, Adr, X#, Ymax#, i, n
    Set Im = ActiveSheet.Shapes.Range(Array("Image 43", "Image 67", "Image 4217", "Image 80", "Image 98"))
    Adr = Array(14, 15, 11, 12, 13)
    If Range("B" & Adr(3)) = False Then Range("B" & Adr(4)) = False
    Im.Visible = False 'masque tout
    X = [C6].Left: Ymax = [C6].Top + Im(1).Height
    For i = 1 To Im.Count
        If Range("B" & Adr(i - 1)) Then
            If n Then X = X + Im(n).Width
            n = i
            Im(i).Left = X: Im(i).Top = Ymax - Im(i).Height
            Im(i).Visible = True
        End If
    Next
End Sub
merci pour votre réponse, j'étais absent quelques jours et je n'ai aps pu voir votre solution, je la test ce jour
 
merci pour votre réponse, j'étais absent quelques jours et je n'ai aps pu voir votre solution, je la test ce jour
Concernant ta commande :
If Range("B" & Adr(3)) = False Then Range("B" & Adr(4)) = False
pourrais-tu me l'expliquer, comment cela fonctionne, car j'ai dans mon fichier d'origine plusieurs CONDITIONS ?
Peut-on mettre cette commande les unes derrière les autres ?
merci
 
Bonjour aspect,
VB:
If Range("B" & Adr(3)) = False Then Range("B" & Adr(4)) = False
Adr(3) vaut 12 et Adr(4) vaut 13 donc l'expression peut s'écrire :
VB:
If Range("B12") = False Then Range("B13") = False
ce qui se traduit par : si la case en A12 est décochée on décoche la case en A13.

A+
 
- 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
Retour