Excel : Afficher une image et condition SI

JB_A Messages postés 307 Statut Membre -  
 cjard1 -
Bonjour,

J'ai une formule de type : SI(F40=1;"Oui";SI(F40=2;"Non";SI(F40=0;"";)))

et au lieu d'afficher Oui ou Non, j'aimerais afficher une image en différente en fonction de la valeur de F40.

Avez vous une idée de la syntaxe / formule à utiliser.

Merci par avance de votre réponse
Configuration: Excel 2000

3 réponses

  1. wilfried_42 Messages postés 912 Statut Contributeur 245
     
    Bonjour J_BA, Raymond

    Cette formule doit le faire :
    =Si(A1="OUI";Image("Monfichier.jpg";"MonChemin");image(""))

    le 2eme critère est optionnel, si les images sont dans le même répertoire que le classeur

    Mais avant : (je triche raymond, rassure toi, la fonction d'affichage d'image n'existe pas dans Excel)
    tu vas dans le VBA : Click droit sur le nom de l'onglet / Visualiser le code
    tu changes de fenêtre et tu arrives Sur VBA
    Menu Insertion / Module
    et tu fais un copier coller des lignes ci-dessous
    Function Image(img_nom As Variant, Optional chemin As String = "") As String
        ' Declaration des variables
        Dim ref As Range, sh As Shape, drap As Boolean
        ' ref : la cellule qui provoque la fonction
        ' sh : les shapes
        ' Drap : drapeau definissant si la shape est trouvée
        Application.Volatile ' defini une fonction qui se recalcule automatiquement
    ' teste le type de variable soit une cellule soit une valeur alphanumerique
        Select Case TypeName(img_nom)
            Case "Range" ' c'est une reference cellule
                Image = img_nom.Value
            Case "String" ' c'est une valeur alphanumerique
                Image = img_nom
            Case Else ' c'est une erreur
                Image = "#ERROR"
                Exit Function
        End Select
    ' le chemin est un parametre optionnel, s'il est omis, la valeur est le chemin du classeur
        If chemin = "" Then chemin = ThisWorkbook.Path
    ' le chemin ne se termine pas forcemment par \ je le rajoute
        If Right(chemin, 1) <> "\" Then chemin = chemin & "\"
        Set ref = Application.Caller ' affectaction à ref de la cellule qui lance la fonction
        If ref.MergeCells = True Then Set ref = Range(ref.MergeArea.Address)
        drap = False ' initialisation du drapeau
        For Each sh In ref.Worksheet.Shapes ' je passe en revue toute les shapes
    ' je teste son nom construite plus bas pour savoir si c'est la bonne shappe
            If "Img-" & ref.Address = Left(sh.Name, Len(ref.Address) + 4) Then drap = True: Exit For
        Next
        If drap = True Then ' c'est la bonne shape
    ' je teste maintenant si c'est la meme que celle de la formule pour ne pas refaire le traitement
    ' Le gain de temps n'est pas negligeable
           If "Img-" & ref.Address & "-" & Image = sh.Name Then GoTo fin ' egalité parfaite, je sors
        End If
        On Error Resume Next ' controle d'erreur, si la shape n'existe pas encore, l'instruction suivante provoque une erreur
        sh.Delete ' je detruits la shap
        If Image = "" Then Exit Function ' la valeur est à "" alors pas de shape à affecter
    ' j'inserre la shape, avec l'image en lui mettant les tailles necessaires pour la cellule
        Set sh = ref.Worksheet.Shapes.AddPicture(chemin & Image, True, True, ref.Left, ref.Top, ref.Width, ref.Height)
        sh.Name = "Img-" & ref.Address & "-" & Image ' je definis son nom pour la trouver plus tard
    fin:
        Image = "Img" & ref.Address ' j'affecte un nom pour resultat
    End Function

    La fonction adapte la taille de l'image à la taille de la cellule, si ce sont des cellules fusionnées, elle en tient compte

    Cordialement
    Wilfried

    ps: n'oubliez pas de mettre votre fil sur résolu quand vous obtenez ce que vous cherchez. Merci
    23
    1. Pictave
       
      Alors là, chapeau l'artiste ! Merci beaucoup, c'est formidable le savoir de certains.
      Bravo et merci encore.
      0
    2. cjard1
       
      Bonjour,
      Super le tuyau, cela fonctionne bien à mon niveau, par contre, une fois que l'image est apparue elle ne s'enlève pas si la valeur de la cellule ne correspond plus, il y a t-il moyen de l'enlever si changement de valeur dans la cellule ?
      0