XL 2010 Insérer une image avec condition.

guy72

XLDnaute Impliqué
Bonjour,
Comment puis-je insérer une image (Nommée Rosée) à un endroit bien préci, si dans la cellule G31, le nombre devient plus grand que 21 ?
=Si(G31>21; "image Rosée";:))
Exemple ci-dessous

Rosée.jpg
 

patricktoulon

XLDnaute Barbatruc
re
exemple
imaginons que tu veuille faire apparaitre ton eclair en D26:D27 si G32 >21
dans la cellule d26 tu va mettre cette formule
=imginsert(G31;D26:D27)

dans un module standard

tu va mettre ces deux fonctions
l'une c'est pour aller chercher l'image sur ton disque dur et l'autre c'est pour la centrer en respectant son aspect ratio

bien sur il faudra que tu modifie le chemin de ton image
VB:
Public Function ImgInsert(cel As Range, place As Range)
   Dim X, ImG
   If cel > 21 Then
        Set ImG = ActiveSheet.Pictures.Insert("C:\Users\patricktoulon\Desktop\Rosee.png")
        ImG.Name = "eclair"
        X = Dimension_Position2(place, ActiveSheet.Shapes(ImG.Name), 100)
        ImG.Left = X(0)
        ImG.Top = X(1)
        ImG.Width = X(2): ImG.Height = X(3)
    Else
        On Error Resume Next
        ActiveSheet.Shapes("eclair").Delete
        Err.Clear
    End If
    ImgInsert = ""


End Function

Function Dimension_Position2(rng As Range, shap, Optional marge As Double = 0)
    DoEvents
    Dim Wr#, Hr#, W#, H#, L#, T#, Ratio#
    Ratio = Application.Min(rng.Width / shap.Width, rng.Height / shap.Height)
    W = shap.Width: H = shap.Height
    Wr = (W * Ratio) '* ((100 - marge) / 100)
    Hr = (H * Ratio) '* ((100 - marge) / 100)
    T = rng.Top + (rng.Height - Hr) / 2
    L = rng.Left + (rng.Width - Wr) / 2
    Dimension_Position2 = Array(L, T, Wr, Hr)
End Function
nous y voila
maintenant testons
demo.gif


on pourrait faire la même chose en mettant dans la feuille une copie originale de l'image et masquée et placer une copie par la formule aussi
bref comme tu vois c'est simple
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin