Affichage controlé d'image sous excel

Résolu
fumble64 Messages postés 6 Statut Membre -  
 rhym -
Bonjour, je voudrais paramétrer l'affichage d'image sous excel en fonction de la valeur d'une cellule.
Par exemple, si a1=1; afficher photo 1 et masquer photo 2-3-4-5, si a1=2; afficher photo 2 et masquer photo 1-3-4-5

Voila, je ne sais pas si c'est réalisable sous excel ...
Je pense qu'il doit faloir créer une macro en VBA mais je voudrais, si c'est possible, que cela se fasse automatiquement, c'est à dire sans avoir besoin d'appuyer sur un bouton ou quoi que ce soit.

Si quelqu'un avait une suggestion à mon problème, ou un site qui m'explique comment faire ce serai super !

5 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Dans le code VBA de ta feuille, tu peux essayer de mettre cette macro en regardant ici éventuellement.
    Private Sub Worksheet_Change(ByVal sel As Range)
    If Intersect(sel, Range("F3")) Is Nothing Then Exit Sub
    If sel.Count > 1 Then Exit Sub
    Dim elm As Shape
    Dim nom As String
    For Each elm In ActiveSheet.Shapes
        On Error Resume Next
        nom = elm.Name
        On Error GoTo 0
        If Left(nom, 7) = "Picture" Then
            If Val(Right(nom, Len(nom) - 8)) = Val(sel.Value) Then
                elm.Visible = True
            Else
                elm.Visible = False
            End If
        End If
    Next elm
    End Sub

    Tu remplaces seulement F3 par l'adresse de ta cellule paramètre.
    Tu n'as pas de bouton et c'est la modification de ta cellule qui change aussi l'affichage.
    1
  2. fumble64 Messages postés 6 Statut Membre 3
     
    j'ai bien recopié le code dans la feuille excel et quelque chose semble se passer quand je modifie le chiffre de la cellule : la barre d'outils de gestion des boutons VBA se grise.
    Est-ce que tu pourrais m'indiquer comment je peux nommer les image pour que la macro les reconnaisse et comment je dois les nommer :
    est ce que je dois les nommer "picture1", "picture2"
    Dans tous les cas merci pour ta patience !
    0
  3. fumble64 Messages postés 6 Statut Membre 3
     
    d'accord, je viens de comprendre quel type d'images utiliser :
    il faut insérer les images via la barre d'outils des macros,
    ensuite je peux insérer des objets images,
    et je peux afficher les propriétés de chacune comprenant le nom et le choix de l'image que je veux exploiter
    me reste à savoir comment il faut que je nomme ces images, et est ce que le code que tu m'as donné limite le nombre d'images que je peux utiliser
    j'ai cru voir "7" et "8" dans le code -> qu'est ce que ça veut dire ?
    0
  4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    quel type d'images utiliser :

    Comme tu parlais de photos, je suis parti de là et comme lorsque l'on utilise le menu insertion / image / à partir du fichier on obtiens des noms automatiques sur Excel qui sont "Picture 1" "Picture 2" etc

    j'ai cru voir "7" et "8" dans le code -> qu'est ce que ça veut dire ?

    Donc le "7" correspond au nombre de caractères de "Picture" et "8" au nombre de caractères de "Picture " pour prendre le nombre suivant qui est le numéro de la photo.
    Lorsque tu insères ton image, le nom apparaît dans la zone nom et donc tu remplaces "Picture " par ton nom et tu adaptes les longueurs.

    le code que tu m'as donné limite le nombre d'images que je peux utiliser

    Tu peux mettre autant d'images que tu veux mais une seule est affichée à la fois, celle dont tu as saisis le numéro dans ta cellule de choix.

    N'hésites pas à poser les questions que tu n'as pas comprises.
    0
    1. rhym
       
      j'ai tout à fait compris ton code VBA mais seulement je voudrai que le numéro 7 et 8 correspondent à une formule de recherche.Je t'explique dans une case je fai une liste dont je choisit le nom suivant le nom choisit un numéro appariat dans ta case F3 pour que ton code marche et la jai une ligne du code qui s'affiche en jaune : If Val(Right(nom, Len(nom) - 8)) = Val(sel.Value) Then.Peut tu m'aider
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fumble64 Messages postés 6 Statut Membre 3
     
    ok trés bien !
    ça marche super bien je te remercie 1000 fois
    c'est vraiment parfait !!!!
    0