XL 2016 VBA Insertion d'une image

danielco

XLDnaute Accro
Bonjour,

J'utilise ce code pour insérer des photos :

VB:
  For Each C In Range("D3", Cells(Rows.Count, 4).End(xlUp))
    Photo = C.Value
    Set Img = ActiveSheet.Pictures.Insert(Chemin & Photo & ".jpg")
    With Img
      .Left = C.Offset(, -2).Left
      .Top = C.Offset(, -2).Top
      .Width = Larg
      If C.Height < .Height Then
        .Height = C.Height
      End If
    End With
  Next C

La ligne :

Code:
 .Left = C.Offset(, -2).Left

devrait aligner la photo sur le bord gauche de la colonne B, or ce n'est pas le cas. Qu'est-ce que j'ai fait de travers ?

Le fenêtre d'exécution donne :

?c.Address
$D$3
?C.Offset(, -2).left
161.25
?img.left
161.25

Merci d'avance.

Daniel
 
Solution
re
bon si on considère que toutes tes images pivotées ont la donnéee exif (245)
voila les model ou je prends un raccourci methode en faisant simplement un copypicture de l'image re pivoté sur le sheets pour ne pas avoir a m'ennuyer avec les left et top inversé dans le calcul
model 1 pour faineant de la calbasse ;)
VB:
Private Sub CommandButton1_Click()
    Dim fichier As Variant, img As Picture
    On Error Resume Next
    ActiveSheet.Shapes("img").Delete
    Err.Clear
    fichier = Application.GetOpenFilename("Text Files (*.jpg), *.jpg", 1, "ouvrir un fichier")
    If fichier = False Then Exit Sub
    Set img = ActiveSheet.Pictures.Insert(fichier)
    img.Name = "img"
    place_l_image_dans [C5], img...

patricktoulon

XLDnaute Barbatruc
re

en lockAspectRatio on ne redimensionne qu'un coté et pour choisir le quel ?:

il n'y a qu'une seule logique

ratioimg =img .Width / img .Height ' calcul ratio image

ratiorange =[cellule].Width / [cellule] .Height ' calcul ratio Range

if ratiorange< ratioimg then

img.width=[cellule].width

else

img.height=[cellule].height

end if
ET AUCUNE AUTRE NE SERA AUSSI SUR
est ce si difficile a comprendre?????
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
A Modeste geedee : les saluts ne sont pas ma raison de vivre.
J'aurais aimé (mais tel n'a pas été le cas) voir danielco au moins réagir à ceci :
Tout cela est bien dommage, car il aurait été conduit à du plus élégant que ce qu'il a maintenant entre les mains. ;)
Mais bon ...
il ne tenait qu'a toi de proposer "ta" correction concrète du code :
au lieu de faire preuve de de prosélytisme ...
Danielco (MVP EXCEL) qui a montré depuis de nombreuses années son sens de l'entraide sur de multiples forums
est comme tout un chacun (lorsque l'on a la tête dans le guidon) passé à coté de l'évidence.
 

danielco

XLDnaute Accro
bon danielco
prends ce fichier
clique sur le bouton et choisi un jpg avec le dialog
répète l’opération autant de fois que tu veux avec des image et forme différentes
et dit moi encore que ça marche pas
Ca marche pas ;-( :

Annotation 2020-04-07 212540.jpg

Daniel
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
re
donne moi en une autre de ces images en défaut je crois que j'ai une solution mais il faut que je teste
celle ci ayant été redressée c'est fini

par contre avant redressage elle se positionnait couché chez moi dans la feuille pas droite
:( si l'info orientation lors de la prise de vue n'est pas dans le EXIF, seul un contrôle visuel pourra te confirmer le cas ...
La configuration portrait ou paysage n'augure en aucune façon la posture du sujet.
on trouve sur le web des lecteurs de données EXIF
1586303088797.png

pour utilisation via VBA il faut utiliser des librairies spécifiques EXIF
il est même probable que les ressources XLD possèdent déjà un outil de ce type...?
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
177
Réponses
0
Affichages
156

Statistiques des forums

Discussions
312 328
Messages
2 087 319
Membres
103 515
dernier inscrit
Cherbil12345