XL 2010 [VBA] Compatibilité taille d'une image dans un Userform

Horusbk

XLDnaute Junior
Bonjour :)

Je cherche à créer un plan dynamique de mon entreprise via un userform. Je souhaite mettre en arrière-plan une image schématique de l'entreprise puis j'ajouterais par dessus des boutons de contrôle à des endroits stratégiques afin d'accéder aux liens voulus.

J'ai lu sur plusieurs forums que le format de mesure des userforms était le TWIP. J'ai donc voulu faire des conversions en centimètres afin de connaître le format de sortie de mon image et éviter des pertes de qualité lorsque cette dernière sera dans l'userform. Toutefois, un convertissant des twips en cm je me rends compte que les valeurs en cm sont extrêmement petites.... ce qui réduit grandement le format de mon image en sortie. :confused:

Je me permets de me tourner vers le forum pour avoir quelques lumières sur le meilleur moyen d'avoir une image de qualité que je pourrais ajouter en arrière-plan d'un userform tout en respectant l'échelle de l'un et l'autre. Je vous joins mon fichier de conversion au cas où (si mes calculs étaient faux :rolleyes: ).

Merci pour votre aide.
Baptiste
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonjour.
J'ai par hasard trouvé sur internet, aujourd'hui même, un truc que j'ignorais mais qui pourrait faire l'affaire: En ayant copié une image dans le presse papier depuis un logiciel comme Paint.net (gratuit), et sélectionné une propriété Picture d'un contrôle ou d'un UserForm, on peut faire Ctrl+V pour y coller l'image copiée !
Ce qui est hyper-rageant c'est de ne trouver aucun moyen de faire cela par du code ! J'ai cherché toute la journée, impossible de trouver.
J'estime hors de question de coller l'image dans un Chart temporaire, puis créer un fichier par .Export qu'on charge ensuite par un LoadPicture. Je préfère encore considérer que c'est purement et simplement impossible plutôt que d'utiliser ce seul moyen connu complètement absurde ! Mais je continuerai de chercher de temps à autres, jusqu'à ce que j'aurai fini par trouver.)
 
Dernière édition:

patricktoulon

XLDnaute Accro
re
bonjour dranreb a part l'api olecreatepictureindirecte je vois pas non plus

peut etre un bouton dans la commandbarVBE qui lancerait une sub avec des sendkeys
 

patricktoulon

XLDnaute Accro
re
Horusbk
tu n'a pas besoins de conversion et puis les userforms et controls c'est en points et non twip
tu a la proprité picturesizemode pour adapter ton image a l'userform
 

Horusbk

XLDnaute Junior
Bonjour patricktoulon,
c'est en points et non twip
J'ai bien fait de poser la question, j'avais donc trouvé des infos erronées sur d'autres forums ! :oops:
Pourriez-vous m'expliquer davantage cette api olecreatepictureindirecte ? Qu'est-ce que c'est et comment ça fonctionne ?

Bonne soirée,
Horusbk.
 

Dranreb

XLDnaute Barbatruc
Ça m'intéresse aussi, certes, mais il me semble que ce n'est pas votre problème. L'image de fond d'un UserForm y apparait comme elle apparait à l'écran en zoom 1 après l'avoir redimensionnée si nécessaire avec un logiciel de dessin, et si vous l'en copiez, vous pouvez la coller dans la propriété Picture dans la fenêtre de propriété du UserForm. Pourquoi cela ne vous suffirait-il pas ?
 

Horusbk

XLDnaute Junior
Bonsoir Dranreb,
Effectivement vous avez raison. Cette autre méthode m'intéresse dans le cas où l'image de fond qui est rendue est meilleure que celle qu'on ajoute via les propriétés de l'UserForm. En effet, les formats jpg et bmp sont pas terribles, contrairement au PNG et SVG qui ne sont malheureusement pas pris en charge :(

Bonne soirée :)
Baptiste
 

Dranreb

XLDnaute Barbatruc
Complètement d'accord avec vous pour jpg mais pas pour le bmp. Mais de toutes facçon ce que je vous propose c'est de ne pas passer par un fichier du tout mais de copier une image dans le presse papier et de faire Ctrl+V après avoir sélectionné la propriété Picture de l'UserForm dans sa fenêtre de propriété, et non d'y utiliser la flèche pour choisir un fichier.
 

Horusbk

XLDnaute Junior
Ah je pensais que le bmp n'était pas terrible, je vais essayer dans ce format dans ce cas. Parmi ceux acceptés est-ce le moins pire ?
ce que je vous propose c'est de ne pas passer par un fichier du tout mais de copier une image dans le presse papier et de faire Ctrl+V après avoir sélectionné la propriété Picture de l'UserForm dans sa fenêtre de propriété
En passant par un fichier, il faut que ce dernier soit en permanence sur le chemin source afin que l'image affichée il me semble ?
 

Dranreb

XLDnaute Barbatruc
Non. La source d'un contrôle Image est oubliée de toute façon. Mais vous n'avez aucun logiciel pour traiter l'image comme vous voulez puis la copier ? Les seuls défaut du bmp c'est de ne gérer ni transparence ni compression. La qualité possible est irréprochable. Je construit souvent des images calculées en bmp, parce que c'est le seul format que je sais écrire directement dans un fichier en accès direct avec des instructions Put. C'est du BitMap simple et fidèle.
 
Dernière édition:

Horusbk

XLDnaute Junior
C'est dommage pour la transparence...
Je pensais créer mon image avec Photoshop, l'exporter en bmp du coup, puis l'ajouter en background de mon userform.
Vous pensiez à une autre méthode ?
 

Dranreb

XLDnaute Barbatruc
Attention, je n'ai pas essayé dans la fenêtre de conception ! Le collage que j'ai essayé et réussi c'est dans la fenêtre de propriété, à la propriété Picture.
 

Horusbk

XLDnaute Junior
Je viens d'essayer en collant dans la fenêtre "propriété" mais ça n'a pas donné l'effet escompté puisque j'avais créé mon espace de dessin photoshop en fonction de la taille de mon userform. J'ai donc enregistré sous mon image en bmp puis je l'ai ajoutée en arrière-plan de mon userform.

La bonne nouvelle est que mon image n'est pas déformée, par contre, les contours de mes formes ne sont pas très jolies. Y-a-t-il un moyen de régler cela ? Je pense que ça vient du format d'enregistrement mais j'ai cru comprendre que c'était le meilleur pour mon problème.

VBA.PNG
(un des schéma dont j'ai besoin)

Bien cordialement,
Horusbk
 

patricktoulon

XLDnaute Accro
re
@Dranreb non ca ne marche pas en affichage ctrl+V sur le userform
et ca fonctionne sur le .picture en VBE par ce que dans cette propriété c'est un bitmap de l'image qui s y trouve même quand tu te sert du dialog de la même manière que quand tu insère une image dans un sheets c'est un bitmap sur le sheet pas l'image
 

Dranreb

XLDnaute Barbatruc
es contours de mes formes ne sont pas très jolies.
Peut être vaudrait-il mieux un contrôle image ? On peut changer l'ordre d'affichage pour qu'il soit en arrière plan par rapport à d'autres contrôles.
ctrl+V sur le userform
Qu'est ce que tu appelle sur le Userform ? J'ai dit: en cliquant sur la propriété Picture, mais pas sur le bouton de la flèche pour choisir un fichier, mais à sa gauche, puis Ctrl+V. Et je n'ai pas dit à l’exécution non plus. J'aimerais bien pouvoir le faire à l'exécution !
 

patricktoulon

XLDnaute Accro
re
J'aimerais bien pouvoir le faire à l'exécution !
peut Etre avec un object stdpicture ou Ipicture mais j'en doute

le ctrl+V dans picture dans les propriétés en mode édition insert le tableaux de bit du bitmap contenu en mémoire

avec l'api OleCreatePictureIndirect aussi qui créée un conteneur en mémoire j'ai quelque exemple que je m’était amusé a faire il y a quelque années mais le ctrl+V je suis pas sur
en effet la capture par la touche capture par exemple envoie dans le clipboard le tableau de bit du bitmap (les données de la capture )
hors le .picture quand le userform est activé attend un conteneur jpg,gif,tif,bmp ou le .picture d'un autre

Attention quand même :ne pas oublier que le bitmap peux peser très lourds (plusieurs megas )

@
Horusbk
es contours de mes formes ne sont pas très jolies.
c'est tout simplement impossible qu'il en soit autrement parce que le .picture(image ou userform ou label,etc... n'accepte pas la semie transparence
hors les formes que tu a capturé sont peut etre dessinées avec GDI drow smouse qui lisse les bords(frontieres (plein/vide)) avec la semie transparence
tu a donc dans le userform ou control le bord des motifs de l'images en dents de scie
 
Dernière édition:

Horusbk

XLDnaute Junior
Peut être vaudrait-il mieux un contrôle image ? On peut changer l'ordre d'affichage pour qu'il soit en arrière plan par rapport à d'autres contrôles
Je vais essayer.

avec la semie transparence
tu a donc dans le userform ou control le bord des motifs de l'images en dents de scie
Donc il faudrait mieux que je mette un fond de couleur avant d'exporter mon image ? Normalement je ne devrais plus avoir de problème ?

Cordialement,
Horusbk
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas