Problème affichage image avec macro Excel

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,
J'ai un PC tournant sous Windows 2007 avec Office 2007.
On m'a filé un fichier excel (trombinoscope) on des photos doivent s'afficher en face du nom.

Voilà la macro :
Function AfficherImageH(NomImage, Optional rep)
Application.Volatile
If IsMissing(rep) Then rep = ThisWorkbook.Path & "\"
Set f = Sheets(Application.Caller.Parent.Name)
Set adr = Application.Caller

AfficherImageH = ""

If Dir(rep & NomImage & ".jpg") <> "" Then
NomImage = NomImage & ".jpg"
GoTo Suite
ElseIf Dir(rep & NomImage & ".jpeg") <> "" Then
NomImage = NomImage & ".jpeg"
GoTo Suite
ElseIf Dir(rep & NomImage & ".gif") <> "" Then
NomImage = NomImage & ".gif"
GoTo Suite
ElseIf Dir(rep & NomImage & ".png") <> "" Then
NomImage = NomImage & ".png"
GoTo Suite
End If

Suite:

Temp = NomImage & "_@_" & adr.Address
Existe = False



For Each s In adr.Worksheet.Shapes
If s.Name = Temp Then
Existe = True
End If
Next s


If Not Existe Then
For Each K In adr.Worksheet.Shapes
p = InStr(K.Name, "_@_")
If Mid(K.Name, p + 3) = adr.Address Then K.Delete
Next K


If Dir(rep & NomImage) = "" Then
AfficherImageH = "Photo non disponible"
Else
Set myShell = CreateObject("Shell.Application")
If TypeName(rep) = "Range" Then
Set myFolder = myShell.Namespace(rep.Value)
Else
Set myFolder = myShell.Namespace(rep)
End If
Set myFile = myFolder.Items.Item(NomImage)
'Taille = myFolder.GetDetailsOf(myFile, 26)
'H = Val(Split(Taille, "x")(1))
'L = Val(Split(Taille, "x")(0))
'Ech = adr.Height / H
'lgcel = adr.Width
'H = H * Ech
'L = L * Ech
Set s = f.Shapes.AddPicture(rep & NomImage, True, True, adr.Left + adr.Width / 2 - L / 2 + 1, adr.Top + adr.Height / 2 - H / 2 + 1, L - 2, H - 2)
s.Name = NomImage & "_@_" & adr.Address
AfficherImageH = " "
End If
End If
End Function

Sub Tri()

Range("A2:M108").Select
Range("M108").Activate
ActiveWorkbook.Worksheets("Listing Stella").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Listing Stella").Sort.SortFields.Add Key:=Range( _
"A3:A108"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Listing Stella").Sort.SortFields.Add Key:=Range( _
"C3:C108"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Listing Stella").Sort.SortFields.Add Key:=Range( _
"D3:D108"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Listing Stella").Sort
.SetRange Range("A2:M108")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Range("A1").Select
End Sub



La PC qui a permis de créer ce fichier tourne sous Windows XP avec Office 2010 et tout marche nickel

Après plusieurs tests "msgbox" je me suis aperçu que l'erreur venait de la taille de l'image.
L'image apparait mais trop grande. Le coin supérieur gauche est centré dans la cellule.


Avez vous des idées, des solutions ?

Merci d'avance


A voir également:

7 réponses

eriiic Messages postés 25847 Statut Contributeur 7 279
 
Bonjour,

Pourquoi ces lignes sont mises en commentaire avec le ' ?
'Taille = myFolder.GetDetailsOf(myFile, 26) 
'H = Val(Split(Taille, "x")(1)) 
'L = Val(Split(Taille, "x")(0)) 
'Ech = adr.Height / H 
'lgcel = adr.Width 
'H = H * Ech 
'L = L * Ech 

C'est justement le calcul des dimensions.

Maintenant sans fichier exemple avec tout ce qu'il faut pour le faire tourner...

eric
0
Utilisateur anonyme
 
Bonjour,

En les mettant en tant que commentaire, j'ai une image disproportionnée qui apparait tandis qu'en tant que "code" j'ai le message #VALEUR qui apparait.

Après en ce qui concerne le fichier, Excel va chercher l'image dans tel dossier. Chaque image est nommée du type NOM_Prénom comme dans les cellules contenant ces caractères sur chaque ligne.
0
eriiic Messages postés 25847 Statut Contributeur 7 279
 
Re,

il faudrait voir pourquoi myFolder.GetDetailsOf(myFile, 26) est utilisé, il n'a pas l'air prévu pour ramener les dimensions d'une image sous la forme "800x600" (?), ce qui est attendu par la suite du code.
Peut-être qu'une autre méthode peut te les ramener, il faudrait trouver laquelle.

C'est dit sous toutes réserves vu que je n'utilises pas cet objet...
Je ne peux pas t'aider plus, désolé.

eric
0
michel_m Messages postés 18903 Statut Contributeur 3 317
 
Bojour,

source partielle de ton code
http://boisgontierjacques.free.fr/

je l'avais utilisé comme base de W avec des images de différentes tailles et je n'avais pas eu de problème...


mais sans voir le fichier ...
pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe (format XL97-2003) sur
http://cijoint.fr/

sans les photos mais indique nous les tailles (hauteur, largeur) et le type (.png, jpg...)
Michel
0
Utilisateur anonyme
 
Merci pour vos réponses

Lien du fichier : http://www.cijoint.fr/cjlink.php?file=cj201107/cij9jBYcj8.xls

Les photos sont en jpg et de dimensions : 187*250.
0
michel_m Messages postés 18903 Statut Contributeur 3 317
 
Ok, merci; j'essaierai une autre méthode demain
0
michel_m Messages postés 18903 Statut Contributeur 3 317
 
bonjour,

n'aie pas peur, je pense à ton trombinoscope... avec une méthode j'espère plus simple
toutefois, tes cellules devront être dans les m^mes proportions que le photos pour ne pas déformer les visages...
ci joint petite démo pour mettre une photo remplissant une cellule que je vais bidouiller pour ton affaire
https://www.cjoint.com/?3GgsdZUH8ka
a demain, j'espère
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 19571 Statut Contributeur 5 136
 
Salut le fil,

Deux propositions à visiter sur cette discussion
0
michel_m Messages postés 18903 Statut Contributeur 3 317
 
bonjour,

C'est fait! j'attends un coucou de PaulCézanne...
0
Utilisateur anonyme
 
@Mike-31 : Il y a de ça mais je ne trouve pas ce que je veux dedans :s

@michel_m : "Coucou" ^^ !! Tu es sur quel version de Windows ?
0
michel_m Messages postés 18903 Statut Contributeur 3 317
 
xp, pourquoi?
0
Utilisateur anonyme
 
Sur 2 version de Windows XP avec Office 2010 la macro fonctionne sans problème !
Sur 2 PC tournant sous Widows 7 avec Office 2007, ça beug, ça vient peut être de la
0
michel_m Messages postés 18903 Statut Contributeur 3 317
 
bonjour,
question Windows: mystère, la démo a été réalisée sous XP-2000 st sans pb avec XP-2007, config actuelle... peut-^tre voir dans le forum "windows" puisque c'est la version 7 qui pose pb

concernant trombi (il aurait peut-être été + intéressant de le réaliser ss Access)
-réalisé sous 2007 enregistré au format 2003 (portabilité)
-j'ai ajouté une colonne pour le type d'image (jpg, jpeg, png....) pouvant être améliorée avec une validation de données
-Le bouton Tri crée sur sa lancée le trombinoscope
-il faut que le rapport hauteur- largeur des cellules soit le même que celui des photos ==> tâtonnement (mes images ne le sont pas toutes)
- ne supprimes ni ajoutes des lignes et colonnes aux 2 feuilles m^me si elles ne servent plus à rien (couleur jaune)
- j'ai été très gêné par le XML qui traine sur le classeur (curiosité: pourquoi du xml)

le trombi proposé à adapter:
modifié voir + bas


Edit 9:25h: j'oubliais! les noms & prénoms sont sensibles à la casse
source images: print master
0
michel_m Messages postés 18903 Statut Contributeur 3 317
 
bonjour,

j'avais repris cette discussion à la demande d'Eric partant en ouacances... mais ça n'a pas l'air d'intéresser PaulCézanne: aucun écho depuis jeudi 19h20 ...


https://www.cjoint.com/?3GkwRDyZ4Jx
0
Utilisateur anonyme
 
Waouuuh!! Je viens de regarder et c'est franchement extra !! Ca marche impec !!
Par contre je voulais savoir s'il était possible de rajouter un champ pour la photo à la fin de chaque ligne sur la feuille 1 ?

Merci beaucoup
0