Excel - VBA - Photo sous condition

Misterbean1 Messages postés 53 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
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. Maurice
     
    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
  2. Misterbean1 Messages postés 53 Statut Membre 1
     
    merci Maurice mais cette Macro ne fonctionne pas;....une autre idée ?
    0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
  4. Misterbean1 Messages postés 53 Statut Membre 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
  7. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
  8. Misterbean1 Messages postés 53 Statut Membre 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
  9. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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