jeff1494
XLDnaute Occasionnel
Bonjour à toutes et tous;
Je rencontre le problème suivant :
J'ai un fichier Excel avec un tableau contenant 8 colonnes, et dans la deuxième colonne j'ai la description d'un objet, le but est d'insérer la photo de l'objet dans le commentaire de la cellule. Les photos sont préfixées avec la constante "OBJ" et est suivi d'un numéro d'ordre séquentiel.
J'ai une macro que j'ai récupéré qui a pour but d'insérer une image de l'objet dans le commentaire de la cellule où on est positionné. Cette image est au format "jpg", et soit avec une orientation "portrait" ou "paysage" suivant le cas.
La macro fonctionne parfaitement bien, dans le sens que je sélectionne la photo voulue depuis un dossier qui se trouve dans le même répertoire que le fichier Excel, et qu'elle est insérée dans de le commentaire de la cellule sélectionnée.
Mon problème est que l'orientation d'origine de la photo n'est pas respectée. Ce qu'elle que soit la macro utilisée (Individuelle, ou en "masse").
Pour appeler les macros je passe par le menu du ruban "Outil de saisie" juste après l'Accueil.
J'ai deux macros une pour un ajout individuel de photo (AjoutImage), et l'autre pour un ajout en "masse" de photos (AjoutLotImages).
Le résultat est le même quelle que soit la macro utilisée.
En résolvant le problème sur la première macro je pourrait ensuite régler le problème sur la deuxième.
Par exemple la première photo est en format "portrait" mais elle se retrouve en format "Paysage" dans le commentaire.
En fait toutes les images semblent faire un quart de tour vers la droite (sens horaire).
Voici la macro pour un ajout individuel de photo que j'utilise :
Je subodore que mon problème est lié à la taille de l’image, mais je n'en suis pas sûr. J'ai un peu de mal à suivre tous les détails.
Cela se passerait-il dans la partie "(re-)dimensionnement"?
Donc si une personne qui serait prête à m'aider pouvait m'expliquer ce qui ne va pas j'en serais ravi.
A toutes fins utiles je vous joins un fichier ZIP qui contient les images (dossier "Jpg") ainsi que mon fichier Excel.
Aucune donnée n'est ni sensible, ni confidentielle.
D'avance je remercie chaleureusement toute personne qui m'aidera.
Bonne journée à toutes et tous.
Je rencontre le problème suivant :
J'ai un fichier Excel avec un tableau contenant 8 colonnes, et dans la deuxième colonne j'ai la description d'un objet, le but est d'insérer la photo de l'objet dans le commentaire de la cellule. Les photos sont préfixées avec la constante "OBJ" et est suivi d'un numéro d'ordre séquentiel.
J'ai une macro que j'ai récupéré qui a pour but d'insérer une image de l'objet dans le commentaire de la cellule où on est positionné. Cette image est au format "jpg", et soit avec une orientation "portrait" ou "paysage" suivant le cas.
La macro fonctionne parfaitement bien, dans le sens que je sélectionne la photo voulue depuis un dossier qui se trouve dans le même répertoire que le fichier Excel, et qu'elle est insérée dans de le commentaire de la cellule sélectionnée.
Mon problème est que l'orientation d'origine de la photo n'est pas respectée. Ce qu'elle que soit la macro utilisée (Individuelle, ou en "masse").
Pour appeler les macros je passe par le menu du ruban "Outil de saisie" juste après l'Accueil.
J'ai deux macros une pour un ajout individuel de photo (AjoutImage), et l'autre pour un ajout en "masse" de photos (AjoutLotImages).
Le résultat est le même quelle que soit la macro utilisée.
En résolvant le problème sur la première macro je pourrait ensuite régler le problème sur la deuxième.
Par exemple la première photo est en format "portrait" mais elle se retrouve en format "Paysage" dans le commentaire.
En fait toutes les images semblent faire un quart de tour vers la droite (sens horaire).
Voici la macro pour un ajout individuel de photo que j'utilise :
VB:
'Callback for BtnAddImage onAction
Sub AjoutImage(control As IRibbonControl)
'X1c_131 Ajouter une image dans un comentaire de cellule (XLOneClick G.CHARRAULT)
Dim PicturePath As String 'Chemin c'acces au fichier. Récupéré avec GetOpenFilename
Dim MaxWidth As Integer
Dim MaxHeight As Integer
Dim pic As Object
MaxWidth = 450
MaxHeight = 350
' Ci après on va demander à l'utilisateur de choisir un fichier 'GetOpenFilename'
PicturePath = Application.GetOpenFilename("images(*.jpg;*.bmp;*.png;*.gif), *.jpg;*.bmp;*.png;*.gif", , "Sélectionner une image")
'cas ou l'utilisateur annule sa recherche
On Error Resume Next
'on définit une image pour en déduire les dimensions
Set pic = ActiveSheet.Pictures.Insert(PicturePath)
If Err.Number <> 0 Then GoTo GestError
With ActiveCell
'Si il n'y a pas de commentaire, on en crée un vide
If (.Comment Is Nothing) Then .AddComment (" ")
.Comment.Shape.Fill.UserPicture (PicturePath)
'Déverrouillage du ratio
.Comment.Shape.LockAspectRatio = msoFalse
'(re-)dimensionement
If Round(pic.Height, 0) < MaxHeight And Round(pic.Width, 0) < MaxWidth Then
.Comment.Shape.Width = Round(pic.Width, 0)
.Comment.Shape.Height = Round(pic.Height, 0)
Else
If pic.Width > pic.Height Then
.Comment.Shape.Width = MaxWidth
.Comment.Shape.Height = Round(pic.Height * .Comment.Shape.Width / pic.Width, 0)
Else
ActiveCell.Comment.Shape.Height = MaxHeight
ActiveCell.Comment.Shape.Width = Round(pic.Width * .Comment.Shape.Height / pic.Height, 0)
End If
End If
'verrouillage
.Comment.Shape.LockAspectRatio = msoTrue
End With
pic.Delete
GestError:
Set pic = Nothing
End Sub
Je subodore que mon problème est lié à la taille de l’image, mais je n'en suis pas sûr. J'ai un peu de mal à suivre tous les détails.
Cela se passerait-il dans la partie "(re-)dimensionnement"?
Donc si une personne qui serait prête à m'aider pouvait m'expliquer ce qui ne va pas j'en serais ravi.
A toutes fins utiles je vous joins un fichier ZIP qui contient les images (dossier "Jpg") ainsi que mon fichier Excel.
Aucune donnée n'est ni sensible, ni confidentielle.
D'avance je remercie chaleureusement toute personne qui m'aidera.
Bonne journée à toutes et tous.