Image dans une cellule

  • Initiateur de la discussion Initiateur de la discussion Magistos
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magistos

XLDnaute Nouveau
Bonjour,

J'aimerais tout d'abord savoir si il est possible d'intégrer une image à l'intérieur d'une cellule et que cette image suive les dimensions de cette cellule si elle vient à être redimensionnée ?

Et ensuite, supposons que je dispose de plusieurs images.
Quelle formule dois-je utiliser pour que, lorsque je tape 1 en A1, l'image 1 apparaisse dans une autre case définie, lorsque je tape 2 en A2, l'image 2 remplace la première dans la même case, et ainsi de suite ?
C'est à dire une condition mais avec des images pour faire plus court.

Je vous remercie d'avance pour votre aide.

Bien cordialement
 
Re : Image dans une cellule

Bonsoir Robert,

En effet, je n'ai pas pris connaissance des discussions similaires. Je crois avoir avoir compris pour ce qui est de l'insertion de l'image dans la cellule.
Cependant pour ce qui est de mon second problème, j'avoue ne pas très bien avoir compris les démarches..
 
Re : Image dans une cellule

Bonsoir le fil, bonsoir le forum,

Imaginons que tu renommes tes x images {1, 2, 3, ..., x} en les sélectionnant une par une et en remplaçant leur nom par défaut Image x par x dans la zone de nom. Imaginons que la cellule de saisie soit la celllule A1. Le code ci-dessous t'affichera l'image 1, si tu tapes "1" en A1. L'image 2 si tu tapes "2" en A1 etc.
Le code :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim im As Shape 'déclare la variable im (IMage)

If Target.Address <> "$A$1" Then Exit Sub 'si le chan gement a lieu ailleurs qu'en A1, sort de la procédure
Application.ScreenUpdating = False 'masques les rafraîchissements d'écran
If Target.Value = "" Then 'condition : si A1 est effacé
    For Each im In ActiveSheet.Shapes 'boucle sur toutes les objets Shape de l'onglet actif
        im.Visible = False 'masque l'objet
    Next im 'prochain objet de la boucle
End If 'fin de la condition
For Each im In ActiveSheet.Shapes 'boucle sur toutes les objets Shape de l'onglet actif
    If im.Name = CStr(Target.Value) Then 'condition : si le nom de l'objet est egal à la valeur de la cellule A1 (convertie en texte)
        im.Visible = True 'affiche l'objet im
    Else 'sinon
        im.Visible = False 'masque l'objet im
    End If 'fin de la condition
Next im
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
Mais si tu daignes mettre un fichier exemple ça sera plus facile à expliquer...
 
Re : Image dans une cellule

Bonjour Robert,

J'avoue ne pas vraiment maîtriser tout ce qui concerne le codage que tu viens d'indiquer.

Tu trouveras ci-joint, un fichier exemple. Je souhaiterais que, selon le chiffre indiqué en A1, l'image en C2 change par exemple.

Je te remercie par avance pour ton aide.
 

Pièces jointes

Re : Image dans une cellule

Bonjour Magistos, bonjour le forum,

En pièce jointe ton fichier modifié. Tape une valeur entre 1 et 4 en A1 pour afficher l'image. Efface la valeur en A1 pour masquer toutes les images. Ecrit "tout" en A1 pour afficher toutes les images. Attention, une fois affichées individuellement elles se retrouvent toutes empilées dans C2 et redimensionnées par rapport à C2.
Tu peux rajouter autant d'images que tu les souhaites mais il faut les renommer en incrémentant le numéro en F1. Si tu rajoutes une nouvelle image, tu la sélectionnes et la renomme (valeur affichée en F1) + 1. Tape ensuite cette valeur dans A1. Etc.
le code modifié :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim im As Shape 'déclare la variable im (IMage)

If Target.Address <> "$A$1" Then Exit Sub 'si le chan gement a lieu ailleurs qu'en A1, sort de la procédure
Application.ScreenUpdating = False 'masques les rafraîchissements d'écran
If Target.Value = "" Then 'condition : si A1 est effacé
    For Each im In ActiveSheet.Shapes 'boucle sur toutes les objets Shape de l'onglet actif
        im.Visible = False 'masque l'objet
        Range("F1").Value = im.Name
    Next im 'prochain objet de la boucle
End If 'fin de la condition
If Target.Value = "tout" Then 'condition : si A1 est effacé
    For Each im In ActiveSheet.Shapes 'boucle sur toutes les objets Shape de l'onglet actif
        im.Visible = True 'masque l'objet
        Range("F1").Value = im.Name
    Next im 'prochain objet de la boucle
    Exit Sub
End If 'fin de la condition
For Each im In ActiveSheet.Shapes 'boucle sur toutes les objets Shape de l'onglet actif
    If im.Name = CStr(Target.Value) Then 'condition : si le nom de l'objet est egal à la valeur de la cellule A1 (convertie en texte)
        'taille de l'image
        im.Width = Range("C2").Width 'définit la largeur de l'image
        If im.Height > Range("C2").Height Then im.Height = Range("C2").Height 'si la hauteur de l'image est supérieure à la hauteur de C2, redéfinit la hauteur de l'image
        'centrage de l'image
        im.Top = Range("C2").Top + ((Range("C2").Height - im.Height) / 2) 'définit le haut de l'image (au centre vertical de C2)
        im.Left = Range("C2").Left + ((Range("c2").Width - im.Width) / 2) 'définit la position gauche de l'image (au centre horizontal de C2)
        'affichage de l'image
        im.Visible = True 'affiche l'objet im
    Else 'sinon
        im.Visible = False 'masque l'objet im
    End If 'fin de la condition
Next im
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
Le fichier :
 

Pièces jointes

Re : Image dans une cellule

Bonjour à tous

d'intégrer une image à l'intérieur d'une cellule et que cette image suive les dimensions de cette cellule si elle vient à être redimensionnée

Outre ce qui a été dit par Robert 🙂 et JB 🙂, juste pour l'histoire du dimensionnement avec la cellule, il est impératif de mettre ce code (à force je le connais par coeur 😱):

Code:
selection.placement = xlmoveandsize
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
743
Retour