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+
 
bonjour,
J'utilise maintenant le VB de JOB75, qui fonctionne à merveille, j'ai juste un dernier soucis, c'est lorsque je dévalide mes boutons VRAI / FAUX, les image ne disparaissent pas, et ce malgré que j'utilise la commande:

Sub REMISE_A_ZERO_IJP900()

Sheets("IJP900 DIMENSIONS").Select
Range("B11:B35").Select
Selection.ClearContents

End Sub

mes boutons passent à FAUX uniquement.

Par contre si je coche et décoche manuellement, l'image apparait et disparait bien.

merci pour vos idées
aspect
 
Bonjour aspect,

Exécutez :
VB:
Sub REMISE_A_ZERO_IJP900()
Sheets("IJP900 DIMENSIONS").Activate
Range("B11:B35").ClearContents
AfficherMasquerJoindreShapes 'lance la macro
End Sub
Sur le fichier que j'ai déposé remplacez la 2ème ligne par :
VB:
Sheets("EQUIPEMENT").Activate
A+
 
J'ai utilisé le VB que vous m'aviez fourni à savoir:

Sub MasquerToutesImagesIJP900()
'Cette macro est affectée à chaque case à cocher
Sheets("IJP900 DIMENSIONS").Select
Dim Im, Adr, X#, Ymax#, i, n
Set Im = ActiveSheet.Shapes.Range(Array("Image 124088", "Image 124390", "Image 124391", "Image 124415", "Image 124416", "Image 124394", "Image 124395", "Image 124396", "Image 124398", "Image 124399", "Image 124400", "Image 124401", "Image 124402", "Image 124403", "Image 124405", "Image 124406", "Image 124407", "Image 124414", "Image 124409", "Image 124410", "Image 124411", "Image 124412", "Image 124413"))
Adr = Array(35, 34, 33, 31, 30, 28, 27, 22, 21, 26, 25, 24, 23, 19, 18, 11, 12, 13, 14, 15, 16, 17, 29)
Im.Visible = False 'masque tout
If Range("B11") = True Then Range("B12") = False
If Range("B12") = True Then Range("B13") = False
If Range("B18") = True Then Range("B19") = False
If Range("B21") = True Then Range("B22") = False
If Range("B25") = True Then Range("B26") = False
X = [C5].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

et ça c'est top !

par contre pour la remise à zéro, j'ai remplacé par ce que vous m'aviez suggéré.

Copiez-la sur le post #20. que veux dire cela ?
 
J'ai utilisé le VB que vous m'aviez fourni à savoir:

Sub MasquerToutesImagesIJP900()
'Cette macro est affectée à chaque case à cocher
Sheets("IJP900 DIMENSIONS").Select
Dim Im, Adr, X#, Ymax#, i, n
Set Im = ActiveSheet.Shapes.Range(Array("Image 124088", "Image 124390", "Image 124391", "Image 124415", "Image 124416", "Image 124394", "Image 124395", "Image 124396", "Image 124398", "Image 124399", "Image 124400", "Image 124401", "Image 124402", "Image 124403", "Image 124405", "Image 124406", "Image 124407", "Image 124414", "Image 124409", "Image 124410", "Image 124411", "Image 124412", "Image 124413"))
Adr = Array(35, 34, 33, 31, 30, 28, 27, 22, 21, 26, 25, 24, 23, 19, 18, 11, 12, 13, 14, 15, 16, 17, 29)
Im.Visible = False 'masque tout
If Range("B11") = True Then Range("B12") = False
If Range("B12") = True Then Range("B13") = False
If Range("B18") = True Then Range("B19") = False
If Range("B21") = True Then Range("B22") = False
If Range("B25") = True Then Range("B26") = False
X = [C5].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

et ça c'est top !

par contre pour la remise à zéro, j'ai remplacé par ce que vous m'aviez suggéré.

Copiez-la sur le post #20. que veux dire cela ?
Ok désolé j'ai compris, je n'avais pas vu l'information # en haut à droite des conversations, je viens de changer et top ça fonctionne, encore un grand merci pour vos réponses et le temps passé
aspect
 
- 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