Excel - VBA - Photo sous condition

Bonjour,
j'essaye de finaliser une macro permettant de rendre visible une photo d'une série de Cellules sous conditions, je m'explique:
Si la cellule "L2" de la FEUILLE1 contient "X", dans ce cas l'IMAGE5 sera visible sur laFEUILLE2, sinon l'image ne doit pas être visible sur la FEUILLE2. Voici le code créé à base de source diverses, mais cela ne fonctionne pas (le mode Debug s'active)

Quelqu'un pourrait m'aider ? Merciiiii

Sub Photo()
If ActiveSheet.Range("L2") = "X" Then Sheets ("FEUILLE2") .Shapes("Picture5").Visible = True Else Sheets ("FEUILLE2") .Shapes("Picture5").Visible = False
End If
End Sub

8 réponses

  1. bonjour

    je vois un truc comme ca
    Sub Photo()
       If UCase(Range("L2").Value) = "X" Then
             Sheets("FEUILLE2").ActiveSheet.Shapes("Picture5").Visible = True
          Else
             Sheets("FEUILLE2").ActiveSheet.Shapes("Picture5").Visible = False
       End If
    End Sub
    

    A+
    Maurice
    1. merci Maurice mais cette Macro ne fonctionne pas;....une autre idée ?
      1. Contributeur
        Bonjour,

        Il faut connaitre le numéro du shape comme ceci:

        Sub shapes_count()
           Dim intCounter As Integer
            Dim intShapeCount As Integer
            Dim img As Object
          Set img = Worksheets(1).Shapes ' feuille a adapter
           intShapeCount = img.Count
          If intShapeCount > 0 Then
                For intCounter = 1 To intShapeCount
                    MsgBox img.Item(intCounter).Name
                     MsgBox "Shape n° " & (intCounter)
         Next intCounter
            Else
                 MsgBox "No Shapes"
            End If
         End Sub


        Ensuite mettre ceci:

        Dim  myDocument 
        Set myDocument = Worksheets(1) ' feuille a adapter
        myDocument.Shapes(26).Visible = True 'N° shape a adapter 

        1. Merci "Le Pivert",
          Il y a certainement une bonne idée mais certaines choses m'échappe (je ne suis pas spécialiste VBA)

          * Je ne vois rien qui lie le code à la condition mentionnée (coller l'image SI la cellule L2 contient "X") ?

          * Qu'entendez-vous par " Ensuite mettre ceci:" Les trois lignes de codes doivent elles être mise dans le même module que les 15 précédentes ? Si oui, pourquoi après le End Sub ?

          * Concernant le Shape: s'agit-il de l'image ? si oui, je connais la référence c'est "Picture5" sinon, de quoi s'agit-il exactement ?

          Désolé si questions basiques, mais suis en apprentissage.....

          d'avance merci pour votre support.
          1. Contributeur
            Il faut mettre un numéro de shape!!!

            Avec la 1ère macro tu as ton numéro de shape, ensuite tu mets ton code:

            Sub Photo()
            Dim  myDocument 
              If UCase(Range("L2").Value) = "X" Then
                 Set myDocument = Worksheets(2) ' feuille a adapter
            myDocument.Shapes(26).Visible = True 'N° shape a adapter     
             Else
                     Set myDocument = Worksheets(2) ' feuille a adapter
            myDocument.Shapes(26).Visible = False'N° shape a adapter   End If
            End Sub
            1. Contributeur
              Le End If est mal positionné

              Sub Photo()
              Dim  myDocument 
                If UCase(Range("L2").Value) = "X" Then
                   Set myDocument = Worksheets(2) ' feuille a adapter
              myDocument.Shapes(26).Visible = True 'N° shape a adapter     
               Else
                       Set myDocument = Worksheets(2) ' feuille a adapter
              myDocument.Shapes(26).Visible = False'N° shape a adapter  
               End If
              End Sub

              1. Merci Le Pivert.
                Concernant le nr de Shape, vu que j'ai une photo variable (collée en "linked picture" - dont l'image se met automatiquement àjour en fonction du contenu des cellules) et cette image est référencée comme Picture8 par Excel, dois-je écrire le code comme suit ?

                Si non, comment dois-je procéder afin d'obtenir/déterminer quel est le Nr de Shape lié à cette photo ?

                D'avance merci

                Sub Photo()
                Dim myDocument
                If UCase(Range("L2").Value) = "X" Then
                Set myDocument = Worksheets("FEUILLE2") ' feuille a adapter
                myDocument.Shapes(Picture8).Visible = True 'N° shape a adapter
                Else
                Set myDocument = Worksheets("FEUILLE2") ' feuille a adapter
                myDocument.Shapes(Picture8).Visible = False'N° shape a adapter
                End If
                End Sub
                1. Contributeur
                  Tu lance cette macro:

                  Sub shapes_count()
                     Dim intCounter As Integer
                      Dim intShapeCount As Integer
                      Dim img As Object
                    Set img = Worksheets(2).Shapes ' feuille a adapter
                     intShapeCount = img.Count
                    If intShapeCount > 0 Then
                          For intCounter = 1 To intShapeCount
                              MsgBox img.Item(intCounter).Name
                               MsgBox "Shape n° " & (intCounter)
                   Next intCounter
                      Else
                           MsgBox "No Shapes"
                      End If
                   End Sub


                  Tu vas avoir un MsgBox t'indiquant le nom de la Picture et toute de suite après un MsgBox avec le N° de la shape

                  Tu mets ce N° dans le code que je t'ai donné.

                  Tu as bien vu qu'avec ton code avec Picture8 cela ne fonctionnait pas