XL 2013 limite des images trop grandes pour le crop excel

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
il y a peu j'ai mis une ressource un tout petit interface pour découper une partie d'image
avant j'utilisais wiaut.dll plus précisément la librairie WIA
aujourd'hui j'utilise le crop d'excel en vba
alors ca fonctionne mais si l'image est trop grande : alors là le découpage est incohérent avec les calculs de pourcentage qui sont juste(verifié)
ça se voit tout de suite dans l’aperçu dans l'interface

quelqu'un saurait quelque chose sur ce point
ci joint 2 image identiques et le cropseur
démonstration du problème
avec l'image originale comme vous le voyez l'appercu en bas à droite n'est pas representatif de la selection dans l'interface


demo.gif



maintenant avec la même image que j'ai réduite en gardant une taille raisonnable de 944 X 549 pixels
et là on vois bien que l'apercu est la parfaite reproduction de la selection
demo.gif


les deux images et le fichier ci joint
 

Pièces jointes

  • créer une portion une image avec une portion de celle ci.xlsm
    47.3 KB · Affichages: 17
  • MSI Leopard 3413x1919.jpg
    MSI Leopard 3413x1919.jpg
    868.1 KB · Affichages: 19
  • MSI Leopard 3413x1919bis .jpg
    MSI Leopard 3413x1919bis .jpg
    187.8 KB · Affichages: 19
Solution
Bonjour patricktoulon, le forum,

J'ai fait un essai basique en prenant les valeurs visibles sur ton gif et n'ai rencontré aucun souci :
  • Crop left = 38,98809
  • Crop top = 28,04975
  • Crop right = 38,09524
  • Crop bottom = 28,57899
L'image finale correspond bien à ta sélection.
Je suppose donc que le problème ne vient pas du crop...
VB:
Sub test()
Dim shp As Shape
Dim initialHeight As Single
Dim initialWidth As Single
    Set shp = Feuil1.Shapes.AddPicture("C:\...\MSI Leopard 3413x1919.jpg", False, True, 0, 0, -1, -1)
    
    With shp
        initialHeight = .Height
        initialWidth = .Width
        .PictureFormat.CropLeft = 38.98809 / 100 * initialWidth...

TooFatBoy

XLDnaute Barbatruc
bon je confirme le .width et .height de la shape n'est pas bon
Ah ben ça alors... quelle surprise... 😅

Du coup t'as pas essayé de diviser le nombre de pixels par 4/3 (*) pour obtenir w ou h ?


(*) 4/3 n'est peut-être pas une valeur universelle. Elle dépend peut-être de la définition de l'affichage et du zoom utilisé pour le Bureau de Windows. Mais tu connais ça mieux que moi. 😉
 

patricktoulon

XLDnaute Barbatruc
bon ben le sujet est résolu
comme quoi une information simple vaut mieux que tout les grands discours et les déballage de science

excel a une limite max de taille d'image et il redimensionne automatiquement au maximum possible en gardant l'aspect ratio intègre

elle est pas dure à comprendre cette phrase non?
ca m'a pris 1 sec pour tester
 

patricktoulon

XLDnaute Barbatruc
Ah ben ça alors... quelle surprise... 😅

Du coup t'as pas essayé de diviser le nombre de pixels par 4/3 (*) pour obtenir w ou h ?


(*) 4/3 n'est peut-être pas une valeur universelle. Elle dépend peut-être de la définition de l'affichage et du zoom utilisé pour le Bureau de Windows. Mais tu connais ça mieux que moi. 😉
pourquoi voudrais tu que je fasse ça
ou tu a vu dans le code que je travaille en pixel ou autre

une dimension * (un pourcentage/100)
c'est pas plus compliqué ca peut etre en pixel en points ou en ce que tu veux

maintenant effectivement fallait il encore savoir que les images avaient une taille maxi dans excel

quand je disais que le crop avait une limite j 'était pas loin , c'est carrément excel qui l'a la limite

comme quoi je sentais bien un truc du genre
 

TooFatBoy

XLDnaute Barbatruc
pourquoi voudrais tu que je fasse ça
ou tu a vu dans le code que je travaille en pixel ou autre
C'est juste pour faire un test. Pour voir si ça donne la même chose.

Si ça marche et qu'on peut obtenir le nombre de pixels h et v, simplementen récupérant les caractéristiques de l'image, ça pourrait permettre de ne pas avoir besoin d'afficher l'image en 100 %.

C'était juste pour essayer de trouver une autre solution. 😉
 

patricktoulon

XLDnaute Barbatruc
ben bien sur que non justement
puisque l'image est reduite
le width fait 3413 pixel
3413 pixel / par(4/3)=2559.55 points

j'ai même pas besoins de faire le calcul en pixel de la shape sur feuille
a vu d'oeuil ça ne peut pas être bon
y a qu'a compter le nombre colonne que couvre l'image a 60 de large par colonne ca doit faire entre 750 et 800 points

800*(4/3) ca fait 1066 , 6666666......pixels

allez je fait le test
elle fait 792 on est loin des 2559.55 points quelle devrait faire

1679605650902.png
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
excel a une limite max de taille d'image et il redimensionne automatiquement au maximum possible en gardant l'aspect ratio intègre
Je ne comprends pas exactement ce que tu veux dire par là, mais si tu exécutes en pas-à-pas ton code initial (celui du fichier de #1) avec la grande image, tu verras que si tu étires la shape aux dimensions originelles de ladite image, tu obtiens alors les bonnes valeurs pour tes w et h.

Et si tu utilises la solution donnée par @mromain, c'est encore mieux puisque ladite image s'ouvre directement à la bonne dimension. Donc pas besion de faire un micmac avec deux shapes. 😉



ben bien sur que non justement
puisque l'image est reduite
j'ai même pas besoins de faire le calcul en pixel de la shape sur feuille
Non mais t'es vraiment sérieux là ?
Est-ce que j'ai dit qu'il fallait que tu calcules le nombre de pixels de la shape sur la feuille ???

Si tu lis ce que j'ai écrit, et non ce que tu as envie de me faire dire pour essayer une fois de plus faire croire que j'ai tord et que malgré tes erreurs tu as raison, tu verras que je disais de prendre les dimensions dans les données de l'image et non de l'affichage.

Donc 3413/(4/3) = 2559,55.
Est-ce que ce n'est pas justement la valeur qu'il faut utiliser pour ton w ?
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
excel a une limite max de taille d'image et il redimensionne automatiquement au maximum possible en gardant l'aspect ratio intègre

elle est pas dure à comprendre cette phrase non?
ca m'a pris 1 sec pour tester
Effectivement cette phrase n'est pas dur à comprendre, mais elle est visiblement fausse puisqu'on peut étirer l'image de 3413x1919 à ses dimensions réelles (donc 100 %) en tirant sur les poignées. Et ça aussi ça prend une seconde à tester. 😉
 

TooFatBoy

XLDnaute Barbatruc
Je viens enfin d'allumer mon PC et j'ai pu tester de nouveau.
J'ai utilisé une image un peu plus grande : 8150 x 5433 pixels.

Il n'y a pas de problème pour afficher l'image en taille réelle dans la Shape, donc il faudra chercher une image plus grande pour voir s'il y a vraiment une limite.

[edit]
Avec une image de 17259 x 2804 pixels, pas non plus de problème pour ouvrir l'image en taille réelle la shape.
Ca marche aussi avec une image de 13548 x 4716 pixels.
La limite doit être encore plus haute que ça.
[/edit]




En revanche, là où il semble y avoir réellement une limite, c'est dans le LoadPicture de la Function copyTo(shap As Object) puisque ça plante sur la ligne
VB:
Image2.Picture = LoadPicture(FicTmp)
car le fichier n'est en fait pas créé sur le Bureau.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re

bonjour
j'ai utilisé la lgne de mromain
en passant par addpicture(chemin,false ,true,true) l’image est insérée a sa taille originale
il fallait simplement savoir que insertpicture dimensionnait l'image a l'insertion c'est tout
mon problème est résolu avec cette seule ligne
 

TooFatBoy

XLDnaute Barbatruc
j'ai utilisé la lgne de mromain
en passant par addpicture(chemin,false ,true,true) l’image est insérée a sa taille originale
il fallait simplement savoir que insertpicture dimensionnait l'image a l'insertion c'est tout
mon problème est résolu avec cette seule ligne
OK. Alors c'est parfait. 👍



Sache tout de même qu'il y a peut-être un pb avec les grosses images : chez moi le fichier WMF n'est pas créé sur le Bureau quand l'image est trop grosse. Mais ça vient peut-être de mon PC qui date de Jean-Claude...

Bonne journée
 

Statistiques des forums

Discussions
312 209
Messages
2 086 271
Membres
103 168
dernier inscrit
isidore33