Problème affichage image avec macro Excel

Résolu
Utilisateur anonyme - 3 juil. 2011 à 15:10
 Utilisateur anonyme - 11 juil. 2011 à 23:31
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 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 261
Modifié par eriiic le 3/07/2011 à 19:40
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
4 juil. 2011 à 22:55
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 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 261
4 juil. 2011 à 23:56
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 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
Modifié par michel_m le 5/07/2011 à 11:26
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
5 juil. 2011 à 16:52
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 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
5 juil. 2011 à 18:31
Ok, merci; j'essaierai une autre méthode demain
0
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
6 juil. 2011 à 18:06
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 18393 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 5 mai 2025 5 129
6 juil. 2011 à 19:56
Salut le fil,

Deux propositions à visiter sur cette discussion
0
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
7 juil. 2011 à 15:29
bonjour,

C'est fait! j'attends un coucou de PaulCézanne...
0
Utilisateur anonyme
7 juil. 2011 à 16:06
@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 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
7 juil. 2011 à 17:00
xp, pourquoi?
0
Utilisateur anonyme
7 juil. 2011 à 19:22
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 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
Modifié par michel_m le 10/07/2011 à 22:49
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 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
Modifié par michel_m le 11/07/2011 à 09:10
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
11 juil. 2011 à 22:38
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