Microsoft 365 Image stockée dans une feuille à l'initialisation du userform

meyscal

XLDnaute Occasionnel
Bonjour à tous,

j'aimerais savoir s'il était possible selon vous d'afficher une image dans un ctrl image d'un userform à l'initailisation.
L'image à la base n'existe pas, j'ai un bouton qui permet de la charger et de la coller dans une plage de cellules fusionnées en adaptant à la forme de la sélection.

J'ai réussi à bidouiller pour que mon image soit affichée dans le ctrl image lors de son insertion mais ensuite elle n'est plus visible.
Ce que j'aimerais c'est qu'elle y reste.

Voilà comment je vois les choses :

1. j'insère une image en cliquant un bouton que je renomme "Signature-bénéficiaire.jpg" = juste une image blanche avec écrit "EXEMPLE"
2. cette image est affichée dans UF dans le ctrl image
3. lors de l'insertion de l'image par l'utilisateur cette image "EXEMPLE" (qui s'appelle donc "Signature-bénéficiaire.jpg") est supprimée et remplacée par la signature avec le même nom
4. celle-ci (la signature) se retrouve donc affichée dans le ctrl image à la place de l'autre

Pour info dans ma feuille j'ai des OptionButton (x6) et des CheckBox (x3) + une image pour l'en-tête du document. Ceux-ci étant considérés comme des objects également, la nouvelle image insérée sera en 11ème position.

Voici mon code pour l'instant et merci par avance !

PS : je sais qu'il n'est pas souhaitable de mettre des images dans un Excel mais il n'y en aura pas des tonnes. 4 signatures sous forme d'images (selon fonction) + 1 pour l'en-tête.

VB:
Private Sub CommandButton12_Click()
Sheets("Document").Range("J50:L53").Select
Dim ficimg As String, Ad As String
Ad = Selection.Address
MsgBox ("L'image doit être au format JPG"), vbOKOnly, ("ATTENTION !")
ficimg = Application.GetOpenFilename(".jpg,*.jpg", , "Choisissez l'image") ' choix nom du fichier
If ficimg = "Faux" Then Exit Sub
Me.chemin = ficimg
Me.Image7.PictureSizeMode = fmPictureSizeModeZoom
Me.Image7.Picture = LoadPicture(ficimg)
Set Image = ActiveSheet.Shapes.AddPicture(ficimg, False, True, ActiveCell.Left, ActiveCell.Top, Range(Ad).Width, Range(Ad).Height)
With Image
.LockAspectRatio = False ' proportions d'origine lorsque vous la redimensionnez
.Placement = xlMoveAndSize
End With
Selection.Name = "Signature_bénéficiaire"
Me.Label5.Visible = True
Me.Label4.Visible = True
End Sub
 
Solution
Ici, c'est un peu plus mieux
VB:
Private Sub CommandButton1_Click()
Noms = Array("toto", "titi")
vQui = InputBox("Identification du Signataire?")
vSig = Application.Match(vQui, Noms, 0)
If Not IsError(vSig) Then
Label1.Picture = Array(Image1.Picture, Image2.Picture)(vSig - 1)
Else
MsgBox "Vous n'êtes pas autorisé à signer ce document!", vbCritical
Exit Sub
End If
End Sub

meyscal

XLDnaute Occasionnel
Bonjour Lolote83,

merci pour le lien je ne tombais que sur des liens morts jusqu'ici alors que le site de Jacques Boisgontier m'a déjà tellement aidé !
Bon là pour le coup je me suis dit que cette solution conviendrait bien à mon besoin : http://boisgontierj.free.fr/pages_site/lesimages.htm#CopieChampForm
Mais ça ne fonctionne pas, le ctrl image reste blanc.
J'ai mis la photo de la signature en transparence pour que voyiez le tableau derrière.
Fichier joint
 

Pièces jointes

  • Classeur1.xlsm
    72.5 KB · Affichages: 14

meyscal

XLDnaute Occasionnel
Re bonjour,
Je ne comprends pas car même chez moi cela ne fonctionne pas.
Je regarderais ce week end si j'ai le temps
Prendre le temps de parcourir le lien donné, il regorge de ressource
@+ Lolote83
Oui Merci Lolote83 ! :D
Comme dit je connais déjà et triste j'étais que le site ait changé ... mes anciens favoris ne fonctionnant plus.
Grâce à toi c'est en cours de résolution !

Je ne fais que ça depuis tout à l'heure.
Ce que je regrette toujours c'est le manque de pédagogie et d'explications mais ça ira bientôt mieux car j'utilise mes droits à la formation pour me perfectionner en programmation !

Bon WE
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, @Lolote83, re @meyscal


On peut faire comme suit
Dans un userform, on insère 4 contrôles images et un Label
dans lesquels on stocke une image
On insère également 4 OptionButton dans un contrôle Frame
Et on colle ce code dans le code de l'Userform
VB:
Private Sub OptionButton1_Click()
Label1.Picture = Image1.Picture
End Sub

Private Sub OptionButton2_Click()
Label1.Picture = Image2.Picture
End Sub

Private Sub OptionButton3_Click()
Label1.Picture = Image3.Picture
End Sub

Private Sub OptionButton4_Click()
Label1.Picture = Image4.Picture
End Sub
NB: On aura au préalable invisibiliser les contrôles Image en réglant leur propriété Height et Width sur 1
et la propriété BorderStyle sur : fmBorderStyleNone

PS: test OK sur mon PC.
 

meyscal

XLDnaute Occasionnel
Re @Staple1600 et bonjour à @Lolote83

Merci c'est une belle solution et ça me plaît bien. Le seul souci c'est que l'utilisateur devra placer du coup lui même l'image dans le ctrl image si j'ai bien compris et chacune des 4 personnes aura accès à celui de l'autre personne ?

Je voyais ça différemment du coup, en tout cas pas les 4 mêmes dans le même userform mais si déjà on peut le faire pour 1 seul = le bénéficiaire, ce sera déjà bien.

Depuis hier ma réflexion a avancé et je ne trouve pas déconnant que les responsables s'identifient et chargent eux-mêmes leur signature à chaque fois ...

Pardon au forum et @Lolote83 si c'est pas clair pour vous mais @Staple1600 me comprend je pense
 

Staple1600

XLDnaute Barbatruc
Re

Ce n'est qu'une piste
Non dans mon exemple, c'est le concepteur du classeur qui inclue les 4 images (donc signatures)

Et l'utilisateur final ne peut pas changer l'image
(Sauf il va farfouiller dans le code VBA)

On peut imager que la signature change automatiquement selon qui utilise le classeur.

Et les signatures ne sont pas visibles dans l'userform (comme précisé dans le message#6)

PS: Je ne sais pas si je comprends ou si je ne comprends pas.
Pour ce qui me concerne, je passe mon samedi le cul sur ma chaise parce qu'il pleut et vente dehors.
Et quitte à être assis autant l'être devant une feuille Excel ;) à tenter de répondre à des questions sur le forum.
 

meyscal

XLDnaute Occasionnel
Ok peut être avais-je mal compris alors.
Ce que je veux dire c'est juste qu'il faut sécuriser pour pas que le bénéficiaire puisse mettre les signatures des autres dans tous les champs.

Farfouiller dans le code VBA non je ne pense pas même si bogue, le spécialiste (avant moi) savait faire une formule somme et c'était du coup le king.

Donc moi je suis Dieu lol. Et comme t'as vu mon(mes) code(s) bah toi tu es maître de l'univers 😂, etc ...

Bref tant que tu peux me garantir un semblant de sécurité, je prends.
Même si j'ai conscience que cette sécurité est tout relative.
 

Staple1600

XLDnaute Barbatruc
Re

Excel n'est pas un outil secure

Mais on peut imager un truc du genre
(là encore ce n'est qu'un test)
On ajoute un CommandButton
avec un code dans ce style
VB:
Private Sub CommandButton1_Click()
Noms = Array("toto", "titi")
vQui = InputBox("Identification du Signataire?")
vSig = Application.Match(vQui, Noms, 0)
Label1.Picture = Array(Image1.Picture, Image2.Picture)(vSig - 1)
End Sub
Mieux vaut ne pas saisir autre chose que toto ou titi lors du test ;)
 

Staple1600

XLDnaute Barbatruc
Ici, c'est un peu plus mieux
VB:
Private Sub CommandButton1_Click()
Noms = Array("toto", "titi")
vQui = InputBox("Identification du Signataire?")
vSig = Application.Match(vQui, Noms, 0)
If Not IsError(vSig) Then
Label1.Picture = Array(Image1.Picture, Image2.Picture)(vSig - 1)
Else
MsgBox "Vous n'êtes pas autorisé à signer ce document!", vbCritical
Exit Sub
End If
End Sub
 

meyscal

XLDnaute Occasionnel
Bonjour @Staple1600, @Lolote83 et le forum,

après avoir testé et discuté avec la présidente de l'association :
ils ne souhaitent pas procéder de cette manière. Chaque bénéficiaire aura son propre programme qui abritera uniquement sa signature.

Les autres signataires auront un bouton dans leur accès avec mdp (là je n'ai qu'à dupliquer l'existant) et signeront chaque document de cette manière.
Du coup la seule chose qui me pose problème à ce jour est de pouvoir garder visible l'image de la signature dans le ctrl image après récupération sur le DD.

Pour le moment je n'arrive à l'afficher qu'après le chargement mais aussitôt avoir quitté l'userform celle-ci n'est plus visible.
A noter qu'il serait bien d'avoir la possibilité de modifier cette signature (par exemple en cas de mariage) ou si celle-ci ne rens pas bien à l'impression du document. Dans ce cas de figure l'idéal étant de supprimer l'ancienne au préalable pour éviter d'alourdir inutilement le fichier.
 

Staple1600

XLDnaute Barbatruc
Bonjour

@meyscal
Rappelle-moi combien de temps Madame La Présidente a passé devant un classeur Excel ?
;)

Pour le moment je n'arrive à l'afficher qu'après le chargement mais aussitôt avoir quitté l'userform celle-ci n'est plus visible.
Mais puisque tu dis
A noter qu'il serait bien d'avoir la possibilité de modifier cette signature (par exemple en cas de mariage) ou si celle-ci ne rens pas bien à l'impression du document
Pas besoin que l'image soit stockée
L'utilisateur (puisqu'il aura son propre programme) cliquera sur un bouton pour insérer l'image de son choix

???
Chaque bénéficiaire aura son propre programme qui abritera uniquement sa signature.
Les autres signataires auront un bouton dans leur accès avec mdp (là je n'ai qu'à dupliquer l'existant) et signeront chaque document de cette manière.

Si chacun a son propre classeur, pas besoin de mot de passe, non ?
 

meyscal

XLDnaute Occasionnel
Bonjour

@meyscal
Rappelle-moi combien de temps Madame La Présidente a passé devant un classeur Excel ?
;)


Mais puisque tu dis

Pas besoin que l'image soit stockée
L'utilisateur (puisqu'il aura son propre programme) cliquera sur un bouton pour insérer l'image de son choix

???
Chaque bénéficiaire aura son propre programme qui abritera uniquement sa signature.


Si chacun a son propre classeur, pas besoin de mot de passe, non ?
Hello @Staple1600

On veut éviter que des filous puissent récupérer les signatures des personnes décisionnaires et passent directement par la Trésorerie qui ne fait que mettre en place les virements une fois que les signatures sont sur le document.
L'association en question vient en aide à des gens démunis et les aide dans leur réinsertion mais certains ont des passifs d'escrocs ... et on ne sait jamais.
Oui le mot de passe est plus là pour une impression de sécurité va-t-on dire, on a pas mal de personnes d'un certain âge qui sans ça ne seront pas partantes pour sauter le pas même avec les meilleurs arguments du monde.
D'un autre côté le mdp sera demandé à la validation/extraction du doc donc ça s'apparente à une signature électronique et ça garantit que la personne en a bien fait la demande.

Enfin, je viens ici pour avoir de l'aide sur des choses que j'ai des difficultés à réaliser seul, pas pour débattre de la façon dont on veux mettre cela en place. La stratégie et la logique nous appartiennent. L'aide que je viens chercher ici se base donc sur la forme et non sur le fond ;)

Merci de ta compréhension
 

Discussions similaires

Statistiques des forums

Discussions
314 708
Messages
2 112 100
Membres
111 417
dernier inscrit
LYTH