Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres "appeler" une image lorsqu'on écrit le nom dans une cellule (feuille de calcul xlsx)

hervoul

XLDnaute Occasionnel
Bonjour,
J'aimerais pouvoir afficher une image dans une cellule lorsque j'écris son nom dans une autre cellule.

Les images sont stockées pêlemêle dans un autre onglet sur la même feuille.

Ci joint le fichier .
merci d'avance.
*PS : rien ne presse.
RVoul
 

Pièces jointes

  • RVoul.xlsx
    107.6 KB · Affichages: 16
Solution
Je me pose la question, mais comment Excel fait il pour ordonner les images? elles n'ont pas de nom...????
il prends leur ordre d'arrivée dans le fichier?
Il les numérote dans l'ordre d'arrivée dans la pile des objets Picture de la feuille, en les préfixant par Image dans la version française d'Excel. Il fait pareil avec tous les autres objets. Ensuite, rien ne vous empêche de les renommer, "à la main" ou par code.

Oneida

XLDnaute Impliqué
Bonjour,

Une facon de faire.
Il y a deux procedures pour arriver au meme point:
une simple: Insert_Image(Lig, Img), celle utilisee actuellement
une plus "elaboree" trouvee sur internet: Insert_Image1(Lig, Img)
Dans les deux cas il faut que les images soit reprises en hauteur ou/et largeur car pas pile/poil une fois redimensionnees, sauf si vous voulez vous lancez dans des calculs magiques
Oups,oubli:
Il faut renomer les images du texte que vous voulez saisir
 

Pièces jointes

  • RVoul.xlsm
    140.2 KB · Affichages: 11
Dernière édition:

Gégé-45550

XLDnaute Accro
Bonjour,
une proposition alternative,
Cordialement
 

Pièces jointes

  • RVoul (Gégé45550).xlsm
    164.9 KB · Affichages: 15

patricktoulon

XLDnaute Barbatruc
bonjour
pour placer une image ou shapes dans un range maximisé sans modifier l'aspect ratio
il y a ma fonction toute prête
VB:
Sub placeLaShapeBleue() 'test avec une shape
    Dim shap
    Set shap = ActiveSheet.Shapes("shapebleue")
    PlaceThePictureInCenterRange [C4].MergeArea, shap, 50    ' 50% de la taille de la plage de destination de 0 à 100
End Sub

Sub PlaceThePictureInCenterRange(rng As Range, Obj As Variant, Optional PercentMarge As Long = 100)     'la marge exprime un pourcentage de 1 à x%
    Dim Ratio#, Wx#, Yx#
    Wx = rng.Cells(1).MergeArea.Width * (PercentMarge / 100)
    Yx = rng.Cells(1).MergeArea.Height * (PercentMarge / 100)
    Ratio = Application.Min(Wx / Obj.Width, Yx / Obj.Height)
    With Obj
        If TypeName(Obj) = "Shape" Then .LockAspectRatio = msoTrue Else .ShapeRange.LockAspectRatio = msoTrue
        .Width = .Width * Ratio
        .Top = rng.Top + ((rng.Cells(1).MergeArea.Height - .Height) / 2)
        .Left = rng.Left + ((rng.Cells(1).MergeArea.Width - .Width) / 2)
    End With
End Sub
vous aviez les versions (anciennes mais néanmoins fonctionnelles ) ici
méthode directe et indirecte
 

hervoul

XLDnaute Occasionnel
En fait les image sont des photos d'élèves dans un trombinoscope, placées ça et là dans un onglet, mais peut être serait il plus facile de les placer dans un dossier?
Il faudrait que lorsque j'écris le nom dans la cellule, que la photo s'affiche au dessus...
Le problème étant le nombre d'images....
Renommer, prends pas mal de temps....

mais ce que j'ai vu est déjà très bien....
Of course !
Rvoul
 

hervoul

XLDnaute Occasionnel
Bonsoir, accessoirement, marquez la réponse en solution, svp.
Cordialement,
Hello,
Petite question :
L'ordre d'apparition des images est bien alpha?
Car pour éviter de taper les noms des élèves dans le code, j'ai nommé les images 1;2;3 etc...et j'insère les photos par ordre alpha et je les appelle par 1;2;3 etc...
ça semble correspondre en tout cas....
merci bien encore!
 

Gégé-45550

XLDnaute Accro
Bonjour,
L'ordre est numérique (image1, image2, etc.) ... => donc votre méthode de tri et de nommage convient parfaitement
Cordialement
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…