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
    0
    1. merci Maurice mais cette Macro ne fonctionne pas;....une autre idée ?
      0
      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 

        0
        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.
          0
          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
            0
            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

              0
              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
                0
                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
                  0