Insérer une image DANS une case (et non dessus)

S

Steamboat Willie

Guest
Bonjour à tous. :)

Je suis en train de faire un trombinoscope pour ma société et on m'a demandé d'utiliser Excel.

J'aimerais savoir s'il est possible de mettre une image DANS une case plutôt que de devoir mettre chaque photo sur la feuille, recadrer la case destinataire, tenter de vaguement la centrer par rapport à cette case, etc...

J'ai fait quelques recherches, mais je n'ai rien trouvé. :(

J'espère que c'est possible... :eek:

Merci par avance,
Steamboat Willie.
 

soft

XLDnaute Occasionnel
Bonjour Willie, le forum,

Les images ne sont jamais réellement dans la cellule, si c'est pour positionner directement lors de l'insertion, on peut utiliser insertion objet / créer à partir du fichier qui va ajouter la photo 'dans' la cellule selectionnée (à partir du bord haut / gauche de la cellule).
 
S

Steamboat Willie

Guest
Merci pour l'astuce.
Je viens d'essayer : la photo ne s'affiche pas, c'est une icone d'image jpg avec le nom de l'image en dessous. :eek: On se croirait dans l'explorateur windows...
J'ai trifouillé dans les propriétés de l'objet pour afficher l'image, mais rien à faire... :unsure:

Comment est-ce que je peux faire pour afficher l'image, à la place ? :)

Steamboat Willie
 
S

Steamboat Willie

Guest
Bonjour,

Je viens de vérifier ; la case n'est pas cochée et si je la coche, l'icône n'est pas la même. Il utilise une icône internet explorer quand la case est cochée et une icône jpg quand la case est décochée. :(

Est-ce que la taille de l'image peut avoir une influence ?

Steamboat Willie.
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Steamboat Willie. Soft (Mark), bonsoir le forum,

Si je ne dis pas de bétises (ce qui est rare...) l'image sera toujours un objet rapporté par-dessus une cellule. Néanmoins, je te propose deux macros qui permettent soit :
de placer (centrée verticalement et horizontalement) et d'adapter l'image à la taille de la cellule,
soit :
d'adapter la taille de la cellule par rapport à la taille de l'image.

Dans les deux cas, tu dois importer ton image et la sélectionner, puis tu lances une des deux macros. Dans mon exemple les photos se placent dans la colonne A. Tu adapteras en modifiant la variable dest.

les macros :

Sub Macro1()
'cette maco adapte la taille photo à la taille de la cellule

'déclaration des variables
Dim dest As Range 'destination
Dim PV As Double 'Position Verticale
Dim PH As Double 'Position Horizontale
Dim L As Double 'Largeur
Dim H As Double 'Hauteur

'définit la variable dest
If Range('A1').Value = '' Then
Set dest = Range('A1') 'A1 si A1 est vide
Else 'sinon
Set dest = Range('A65536').End(xlUp).Offset(1, 0) 'La première ligne vide de la colonne A
End If

dest.Value = ' ' 'met un espace la la cellule Dest

'définition des variables
PV = dest.Top 'haut de la cellule dest
PH = dest.Left 'gauche de la cellule dest
H = dest.Height 'hauteur de la cellule dest
L = dest.Width 'largeur de la cellule dest

'placement et mise à l'échelle de l'image
On Error GoTo fin 'gestion de l'erreur via la balise 'fin' si aucune image n'est sélectionnée
With Selection
.ShapeRange.LockAspectRatio = msoTrue 'conserve le rapport Horizopntal/Vertical de l'image
.ShapeRange.Width = L 'largeur de l'image
If .ShapeRange.Height > H Then .ShapeRange.Height = H 'hauteur de l'image

.ShapeRange.Top = PV + (H - .ShapeRange.Height) / 2 'Position centrée Verticale de l'image
.ShapeRange.Left = PH + (L - .ShapeRange.Width) / 2 'Position centrée Horizontale de l'image
End With

dest.Offset(0, 1).Select 'désélectionne l'image
Exit Sub 'sort de la procédure

fin: 'balise
dest.Value = '' 'vide la cellule dest
MsgBox 'L'image doit ête sélectionnée.' 'message

End Sub

Sub Macro2()
'cette maco adapte la taille de la cellule à la taille de la photo

'déclaration des variables
Dim dest As Range 'destination
Dim PV As Double 'Position Verticale
Dim PH As Double 'Position Horizontale
Dim L As Double 'Largeur
Dim H As Double 'Hauteur

'définit la variable dest
If Range('A1').Value = '' Then
Set dest = Range('A1') 'A1 si A1 est vide
Else 'sinon
Set dest = Range('A65536').End(xlUp).Offset(1, 0) 'La première ligne vide de la colonne A
End If

dest.Value = ' ' 'met un espace la la cellule Dest

'définition des variables
PV = dest.Top 'haut de la cellule dest
PH = dest.Left 'gauche de la cellule dest
H = Selection.Height 'hauteur de la cellule dest
L = Selection.Width 'largeur de la cellule dest

'placement de l'image
On Error GoTo fin 'gestion de l'erreur via la balise 'fin' si aucune image n'est sélectionnée
With Selection
.ShapeRange.Top = PV 'Position Verticale de l'image
.ShapeRange.Left = PH 'Position Horizontale de l'image
End With

'mise à l'échelle de la cellule
dest.RowHeight = H
If dest.ColumnWidth < L Then dest.ColumnWidth = H * 0.2285

dest.Offset(0, 1).Select 'désélectionne l'image
Exit Sub 'sort de la procédure

fin: 'balise
dest.Value = '' 'vide la cellule dest
MsgBox 'L'image doit ête sélectionnée.' 'message

End Sub
 
S

Steamboat Willie

Guest
:woohoo: ouaiiis, des macros !!! :woohoo:

L'idée, c'est effectivement de pouvoir centrer les images dans une cellule et d'adapter la cellule à l'image.

En plus, avec ça, je vais pouvoir faire un tit outil qui permettra de mettre le trombino à jour sans mon aide. :p

Merci beaucoup, je vais tester ça de suite. :)

Steamboat Willie.
 

Discussions similaires

Statistiques des forums

Discussions
312 587
Messages
2 090 009
Membres
104 344
dernier inscrit
nesrine