XL 2016 import image/photo dans classeur

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Avec l'aide de mapomme et l'insertion d'un code complémentaire prise dans le forum .... un grand merci au passage :)

J'ai pu adapter les codes pour importer une image ou photo dans un classeur en redimensionnant en hauteur/largeur
en respectant les proportions.

Utilité de cette action :
Pour tout nouveau client, nous demandons qu'il importe sa photo dans le classeur que nous lui envoyons.
(classeur joint pour l'exemple)

Donc, forcément, quand notre nouveau client va nous retourner son classeur avec sa photo, nous allons l'ouvrir
sur notre ordi (donc différent du sien) et il est important que la photo y soit (c'est le but LOL).

J'ai donc voulu tester si une photo importée à partir d'un ordi est bien présente quand on ouvre le même classeur sur un autre ordi.
Apparemment il y a un souci : la photo n'est pas affichée et à la place, j'ai un message comme indiqué dans le classeur joint.

je cherche et je n'arrive pas trouver le pourquoi ... ça dépasse mes petites connaissances.
Auriez-vous la solution ?

Avec mes remerciements,
Je vous souhaite un très beau WE,
Amicalement,
lionel,
 

Pièces jointes

  • import_photo.xlsm
    39.5 KB · Affichages: 17

ThomasR

XLDnaute Occasionnel
Bonjour,

pourquoi utiliser un activex et pas simplement un shape qui est fait pour cela ?

VB:
Sub AjoutImageFeuille_V03()
    Dim Shp As Shape
    Dim Fichier As String

    Fichier = "http://www.developpez.com/template/logo.gif"
    Set Shp = Feuil1.Shapes.AddPicture(Fichier, msoFalse, msoCTrue, 0, 0, 150, 70)
End Sub

Cordialement,
Thomas
 

ThomasR

XLDnaute Occasionnel
J'utilise ce truc depuis des lustres et l'image est bien dans le fichier donc cela doit fonctionner dans ton cas.
De plus il existe plein d'option pour lier l'image à une cellule ce qui peut être utile en cas de filtre, resize ou suppression de ligne.
 

job75

XLDnaute Barbatruc
Bonjour ThomasR, le forum,
pourquoi utiliser un activex et pas simplement un shape qui est fait pour cela ?
A votre avis à quoi servent les objets ActiveX ?

Une Shape peut être sélectionnée et effacée facilement, ce n'est pas le cas d'un objet ActiveX.

Vous auriez pu montrer le code complet :
VB:
Sub import_photo()
Dim F As Worksheet, fichier As Variant, s As Shape
Set F = Feuil1 'CodeName de la feuille
fichier = Application.GetOpenFilename(".jpg,*.jpg,.gif,*.gif,.jpeg,*.jpeg", , "Choisissez la photo") ' choix nom du fichier
On Error Resume Next 'si la photo n'existe pas
F.Shapes("Votre photo").Delete
Set s = F.Shapes.AddPicture(fichier, msoFalse, msoCTrue, F.[Q12].Left, F.[Q12].Top, -1, -1)
s.LockAspectRatio = msoTrue
s.Width = [Q12:R18].Width
If s.Height > F.[Q12:R18].Height Then s.Height = F.[Q12:R18].Height
s.Name = "Votre photo"
End Sub
Il est plus compliqué que celui du post #14 (et je n'ai pas mis le centrage sur Q12:R18).

A+
 

ThomasR

XLDnaute Occasionnel
Bonjour ThomasR, le forum,

A votre avis à quoi servent les objets ActiveX ?

Une Shape peut être sélectionnée et effacée facilement, ce n'est pas le cas d'un objet ActiveX.

Vous auriez pu montrer le code complet :
VB:
Sub import_photo()
Dim F As Worksheet, fichier As Variant, s As Shape
Set F = Feuil1 'CodeName de la feuille
fichier = Application.GetOpenFilename(".jpg,*.jpg,.gif,*.gif,.jpeg,*.jpeg", , "Choisissez la photo") ' choix nom du fichier
On Error Resume Next 'si la photo n'existe pas
F.Shapes("Votre photo").Delete
Set s = F.Shapes.AddPicture(fichier, msoFalse, msoCTrue, F.[Q12].Left, F.[Q12].Top, -1, -1)
s.LockAspectRatio = msoTrue
s.Width = [Q12:R18].Width
If s.Height > F.[Q12:R18].Height Then s.Height = F.[Q12:R18].Height
s.Name = "Votre photo"
End Sub
Il est plus compliqué que celui du post #14 (et je n'ai pas mis le centrage sur Q12:R18).

A+




hello,

donc pour toi un activex sert à ne pas être supprimé...
la manipulation pour supprimer un activex n'est pas plus compliqué qu'une image protégé.

Je n'ai pas mis tout le code car il n'a pas besoin de tout le code car dans son cas c'est la même shape qu'il utiliserait ...

Recherche sur google tu verras que 99% des exemples d'ajout d'image dans une sheet n'est pas en activex mais en shapes.

Je souhaitais apporter un autre point de vue, avec quelque chose de plus générique qui n'utilise pas des ocx qui pourrait créer des problèmes de compatibilité entre version d'excel (ce qui est très fréquent)

Bref, nous ne sommes pas là pour ergoter, celui qui souhaite apprendre apprendra, en espérant qu'il soit bien accompagnée.

Au plaisir,
Thomas
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Gérard, ThomasR, Le Forum,

Thomas, je viens de lire le message que tu as adressé à l'attention de Job75.

Je te remercie pour tes explications :)
Juste une précision, il n'est pas uniquement question de='empêcher la suppression de l'image.

Mon souci était que l'image était liée au fichier source et qu'elle ne s'affichait plus quand on ouvrait le classeur sur un ordi différent de celui qui contient l'image importée.

La solution de Job75 a résolu ce souci.

Bonne journée à toutes et à tous
Amicalement,
lionel,
 

Discussions similaires

Statistiques des forums

Discussions
312 217
Messages
2 086 352
Membres
103 195
dernier inscrit
martel.jg