Il m'a fallu beaucoup de temps pour obtenir ce travail (jusqu'à ce que je l'ai essayé DoEvents
)
Sub FadeInFadeOut()
Dim r As Range
Set r = Selection
ActiveSheet.Shapes("Rectangle 1").Select
Selection.ShapeRange.Fill.Transparency = 1
For i = 1 To 100
Selection.ShapeRange.Fill.Transparency = 1 - i/100
DoEvents
Next
For i = 1 To 100
Selection.ShapeRange.Fill.Transparency = i/100
DoEvents
Next
r.Select
End Sub
Il fonctionne sur un AutoShape je place sur la feuille.
REMARQUE:
Vous devez régler la pour régler le fade-in/fade-out vitesse.
EDIT # 1:
Voici un code indésirable (basé sur l'enregistreur) pour laisser tomber une forme automatique sur une feuille et de le remplir avec une image:
Sub PicturePlacer()
Dim sh As Shape
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 312.75, 176.25, 266.25, 129.75). _
Select
Selection.Name = "Sargon"
Application.CommandBars("AutoShapes").Visible = False
Range("G4").Select
ActiveCell.FormulaR1C1 = "123"
Range("G5").Select
ActiveSheet.Shapes("Sargon").Select
Selection.ShapeRange.Fill.Transparency = 0.56
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
Selection.ShapeRange.Fill.BackColor.RGB = RGB(255, 255, 255)
Selection.ShapeRange.Fill.UserPicture "C:\Users\garys\Pictures\babies.jpeg"
End Sub
Rappelez-vous Nommez la forme et utilisez ce nom dans tous les codes qui font référence à cette forme.
Vous pouvez utiliser l'API SetLayeredWindowAttributes pour définir la transparence d'un formulaire. Il faut cependant un hWnd, donc je ne pense pas que ce soit possible avec une image. –
Avez-vous la même erreur si vous utilisez à la place de la méthode '.Picture.Insert', celle de' .Shapes.AddPicture'? –