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: 21
  • MSI Leopard 3413x1919.jpg
    MSI Leopard 3413x1919.jpg
    868.1 KB · Affichages: 22
  • MSI Leopard 3413x1919bis .jpg
    MSI Leopard 3413x1919bis .jpg
    187.8 KB · Affichages: 22
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...

mromain

XLDnaute Barbatruc
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
        .PictureFormat.CropTop = 28.04975 / 100 * initialHeight
        .PictureFormat.CropRight = 38.09524 / 100 * initialWidth
        .PictureFormat.CropBottom = 28.57899 / 100 * initialHeight
        .Top = 0
        .Left = 0
    End With
End Sub

Sinon, de manière générale, la ponctuation aide grandement à la lecture ;)

Ponctuation.png


A+
 

patricktoulon

XLDnaute Barbatruc
re
bonjour @mromain
j'ai bien peur que tu n'ai pas saisi la question
pour cela il faut tester les deux images pointvirgule avec l'une ça va fonctionner mais l'autre non
c'est bien beau la ponctuation virgule faut il encore que le contenu soit cohérent ;)
LOL
Mais je pense avoir un élément de réponse déjà
en fait dans les propriétés de l'image(la grande) il n'y a pas les dimensions
je suppute alors virgule que les trames de l'image ne soit pas identifiées correctement
ce ne sont que des supputations pour l'instant point;)
 
Dernière édition:

mromain

XLDnaute Barbatruc
Rebonjour patricktoulon,

j'ai bien peur que tu n'ai pas saisi la question
Peut-être as-tu mal formulé ta demande.
A la lecture du titre de la discussion et de ton premier message, j'ai eu l'impression que le crop ne fonctionnait pas sur les images de grande taille.
Le code fourni dans l'exemple au post #2 montre que le comportement du crop est identique sur les deux images que tu as fourni...
L'as-tu testé ?

Si le problème n'est pas lié au "crop sur les grandes images", peux-tu reformuler ta demande ?

A+
 

patricktoulon

XLDnaute Barbatruc
re
non ce n'est pas mal formulé
comme je l'ai dis il faut télécharger les deux images et tester les deux .
les captures animées sont plus que parlantes , on voit bien en bas à droite que la sélection retenue n'est pas la même

j'ai testé sur d'autres images de moyen tailles et je n'ai pas ce soucis
l'image de grande tailles est sensée faire 3413 pixels de large sur 1919 de haut

j'ai testé avec un autre fichier excel mais qui utilise le crop avec WIA , et je n'ai pas le soucis

d’où la supputation sur le fait que le crop des shapes /pictures d'excel est peut être limité en terme de taille d'image
 

mromain

XLDnaute Barbatruc
Re-bonjour, bonjour Bernard,

Perso, je vais en rester là...
Je n'ai pas pu résister...

oui j'ai testé en dur et aussi en utilisant la virgule avec CDBL(cropleft) etc..... au lieu de val
rien y fait , sur la grande ca ne fonctionne pas
A ce que je vois, non, tu n'as pas testé le code. Tu en as pris une partie et l'a intégré dans ton projet.

Du coup, vu que ça a l'air compliqué de tester un code fourni, tu trouveras ci-joint :
  • le fichier Exemple.xlsm qui contient le code proposé au post #2 retouché pour que tu n'aies pas à aller dans l'éditeur VBE ;
  • les 2 images que tu as fournies au post #1 renommées BIG_MSI Leopard 3413x1919.jpg et SMALL_MSI Leopard 3413x1919.jpg.

Pour le tester, il faut :
  • ne pas ouvrir l'éditeur VBE
  • cliquer une première fois sur le bouton Crop et sélectionner l'image SMALL
  • cliquer une seconde fois sur le bouton Crop et sélectionner l'image BIG

Tu devrais arriver à ce résultat, où on voit bien que le crop fonctionne de la même manière, quelle que soit la taille de l'image.

crop.png


Du coup, je reste sur la conclusion de ma première réponse :
Je suppose donc que le problème ne vient pas du crop...

Maintenant, et vu comme tu acceptes les critiques (critique au sens premier du terme, donc pas négatif), c'est sûr que j'en reste là.

Bonne soirée
 

Pièces jointes

  • Exemple.xlsm
    13.7 KB · Affichages: 23
  • SMALL_MSI Leopard 3413x1919.jpg
    SMALL_MSI Leopard 3413x1919.jpg
    187.8 KB · Affichages: 18
  • BIG_MSI Leopard 3413x1919.jpg
    BIG_MSI Leopard 3413x1919.jpg
    868.1 KB · Affichages: 17

patricktoulon

XLDnaute Barbatruc
re
bon en dur ça fonctionne les calculs sont donc bons
mais ça résout pas mon problème
j'ai modifié le code pour me coller a ton code
w et h en single (dimensions initiales )
l’opération dans le même ordre
le replace de la virgule par le point
le calcul avec val
bref ça match pas
c'est une énigme
avec tout ça j'avance pas d'un iota ni sur la raison ni sur le résultat
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

c'est une énigme
Il n'y a aucune énigme là-dedans.
Et la cause est même évidente. ;)


avec tout ça j'avance pas d'un iota ni sur la raison ni sur le résultat
Pour te permettre d'avancer je te donne la solution : tu as la réponse dans l'aide d'Excel sur le site de Microsoft (en tout cas chez moi, après avoir corrigé ton programme, ça marche) :
 
Dernière édition:

Statistiques des forums

Discussions
315 093
Messages
2 116 139
Membres
112 669
dernier inscrit
Guigui2502