Excel - VBA - Photo sous condition

Fermé
Misterbean1 Messages postés 53 Date d'inscription vendredi 13 mai 2011 Statut Membre Dernière intervention 22 août 2017 - 15 janv. 2015 à 11:07
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 15 janv. 2015 à 18:20
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
A voir également:

8 réponses

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
Misterbean1 Messages postés 53 Date d'inscription vendredi 13 mai 2011 Statut Membre Dernière intervention 22 août 2017 1
15 janv. 2015 à 15:26
merci Maurice mais cette Macro ne fonctionne pas;....une autre idée ?
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
15 janv. 2015 à 15:37
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
Misterbean1 Messages postés 53 Date d'inscription vendredi 13 mai 2011 Statut Membre Dernière intervention 22 août 2017 1
Modifié par Misterbean1 le 15/01/2015 à 15:58
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
15 janv. 2015 à 17:09
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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
15 janv. 2015 à 17:11
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
Misterbean1 Messages postés 53 Date d'inscription vendredi 13 mai 2011 Statut Membre Dernière intervention 22 août 2017 1
15 janv. 2015 à 17:23
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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
15 janv. 2015 à 18:20
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