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...
w = .width: h = .height
.PictureFormat.CropLeft = Round(w * Val(crleft.Text) / 100) * 3.25
.PictureFormat.CropRight = w * (Val(crright) / 100) * 3.25
.PictureFormat.CropTop = h * (Val(crtop) / 100) * 3.25
.PictureFormat.CropBottom = h * (Val(crbot) / 100) * 3.25
Sub RegImage(Optional x As Long = 0)
Dim fname As Variant, imgOut
Dim Img As Object, IP As Object
If CpR.Visible = True Then
imgOut = Application.GetSaveAsFilename(InitialFileName:=Environ("userprofile") & "\DeskTop", filefilter:="image Files (*.jpg), *.jpg", Title:="ENREGISTREMENT DE LA CAPTURE")
If imgOut <> False Then
Set Img = CreateObject("WIA.ImageFile")
Set IP = CreateObject("WIA.ImageProcess")
Img.LoadFile chemin.Value
IP.Filters.Add IP.FilterInfos("Crop").FilterID
IP.Filters(1).Properties("Left") = (Img.Width / 100) * Val(cropleft.Value)
IP.Filters(1).Properties("Top") = (Img.Height / 100) * Val(croptop.Value)
IP.Filters(1).Properties("Right") = (Img.Width / 100) * Val(cropright.Value)
IP.Filters(1).Properties("Bottom") = (Img.Height / 100) * Val(cropbottom.Value)
If x = 1 Then 'si le checkbox photo d'identité est coché
IP.Filters.Add IP.FilterInfos("Scale").FilterID
IP.Filters(2).Properties("MaximumWidth") = (3.5 * 28.3465) * P_ToPx
IP.Filters(2).Properties("MaximumHeight") = (4.5 * 28.3465) * P_ToPx
End If
Ça ne prouve pas du tout que le problème vient de la dimension des images.pour vous prouver que c'est bien un probleme de taille avec le crop excel
la même avec la librairie WIA c'est un fichier qui a plus de 10 ans déjà
Elle est dans dans mon lien, dans l'exemple donné par Microsoft.Bonjour @TooFatBoy
elle est ou ta solution là ?
C'est pourtant évident : si ça merdoie c'est que le nombre de points n'est pas bon.mon croptleft est défini comme suit
largeur *coeef pourcentage --> en point
je ne vois pas ce qui pourrait être a l'encontre de ce qui est dit dans cette page
je suis curieux de savoir ce que tu a corrigé
heu il faut lire le post en entier pour comprendreC'est pourtant évident : si ça merdoie c'est que le nombre de points n'est pas bon.
Non mais t'es sérieux là ?!?mes calculs sont bons puisque ces mêmes nombres écrit en dur dans le code fonctionnent
'calcul de pourcentage de chaque cotés
Sub calculCrops()
On Error Resume Next
crleft = Replace(((calque.left - Image1.left) * 100) / Image1.width, ",", ".")
crtop = Replace(((calque.top - Image1.top) * 100) / Image1.height, ",", ".")
crright = Replace((100 - ((calque.width + calque.left - Image1.left) * 100) / Image1.width), ",", ".")
crbot = Replace(100 - ((calque.height + calque.top - Image1.top) * 100) / Image1.height, ",", ".")
End Sub
w = .width: h = .height
.PictureFormat.CropLeft = w * (Val(crleft.Value) / 100)
.PictureFormat.CropRight = w * (Val(crright.Value) / 100)
.PictureFormat.CropTop = h * (Val(crtop.Value) / 100)
.PictureFormat.CropBottom = h * (Val(crbot.Value) / 100)
Je ne me la joue pas du tout, et comme je te l'ai déjà dit ce n'est pas ma science puisque ce n'est pas moi qui ai pondu la correction de ton programme mais c'est Microsoft qui donne la solution sur le lien que je t'ai donné.il serait tant d'arrêter de te la jouer
et d'arrêtter me prendre pour ce que je ne suis pas en disant que tu a donné la solution
alors que tu n'a rien donné de concret
ta science je m'en cogne , je veux une vraie solution
Visiblement ce qui n'est pas clair pour toi malgré ma démonstration, c'est que tes w et h sont forcément faux.mais qu'est ce que tu raconte ?
je te dis que le résultat des calculs dans les textboxs sont bon mromain les a essayé en dur dans le code
je l'es ai testé dans WIA et GIMP
qu'est ce qui n'est pas clair la dedans ?
Peut-être me trompé-je, mais dans ce cas pourquoi ton programme ne fonctionne-t-il pas correctement, alors qu'après que je l'ai corrigé comme expliqué par Microsoft, il fonctionne avec tes deux images ???je souhaiterais que tu aie raison crois moi mais ce n'est pas le cas
On voit sur tes gif que, comme d'hab, tu restes encore campé sur tes positions...dis moi que j'ai tords maintenant
Je te l'ai expliqué plusieurs fois dans mes messages précédents.serieux
il n'y a pas 36 données
il y a un width et un height au départ
qu'est ce qui ne peut pas être bon dans ceci
Bsr Patrick, bonsoir TooFatBoy, le ForumJe ne me la joue pas du tout, et comme je te l'ai déjà dit ce n'est pas ma science puisque ce n'est pas moi qui ai pondu la correction de ton programme mais c'est Microsoft qui donne la solution sur le lien que je t'ai donné.
Visiblement ce qui n'est pas clair pour toi malgré ma démonstration, c'est que tes w et h sont forcément faux.
Peut-être me trompé-je, mais dans ce cas pourquoi ton programme ne fonctionne-t-il pas correctement, alors qu'après que je l'ai corrigé comme expliqué par Microsoft, il fonctionne avec tes deux images ???
Je te l'ai expliqué plusieurs fois dans mes messages précédents.
Si tu veux bien tester un truc, essaye ceci : pour calculer w et h, prends le nombre réel de pixels respectifs de l'image et divise-les par 4/3.
Et dis-moi si ça marche mieux.
Perso, j'aurais multiplié par 3/4....Si tu veux bien tester un truc, essaye ceci : pour calculer w et h, prends le nombre réel de pixels respectifs de l'image et divise-les par 4/3.
Et dis-moi si ça marche mieux.
Quitte à correcter, pourquoi ne pas "nuiter"?au lieu de jourer au chat et à la souris. Ne serait-il pas plus correct de poster le fichier qui fonctionne ?
Il me semble qu'on a déjà parlé de ce genre de choses avec le camarade PatrickToulon (c'était au sujet du calcul des heures), et qu'il n'aime pas quand on simplifie trop.Perso, j'aurais multiplié par 3/4....
Si on parle de correction dans le sens de bienséance, ne serait-il pas correct d'avant tout laisser Excel vivre sa vie de tableur ?Ne serait-il pas plus correct de poster le fichier qui fonctionne ?
Dim w As Single, h As Single, shap As Shape
With ActiveSheet
.Pictures.Insert (tbchemin)
Set shap = .Shapes(.Shapes.Count)
shap.CopyPicture
shap.Delete
.Paste
Set shap = .Shapes(.Shapes.Count)
je viens de te répondre en #28Ben oui, c'est ce que je te dis depuis le début !
La solution donnée par Microsoft sur le lien que je t'ai donné fonctionne parfaitement mais, perso, je préfère la solution donnée par @mromain