> Tous les forums > Forum Bureautique
 Images dans une FrameSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
BZH35
  Posté le 19/07/2023 @ 16:14 
Aller en bas de la page 
Petit astucien

Normal 0 21 false false false FR X-NONE X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt; mso-ligatures:standardcontextual; mso-fareast-language:EN-US;}

Bonjour,

Je suis sous Windows10 et avec Excel 2016

Ce que je souhaiterai obtenir :

Dans la Feuil1 j'ai une liste

Colonne A le type de produit (Fruit ou Légume)

Colonne B l'adresse de l'image (C:\IMAGE\le nom du fruit ou du légume")

L'userform1 qui contient la Frame1 et 1 BoutonFruit et 1 BoutonLégume

Suivant que je clique sur le BoutonFruit ou sur le BoutonLégume

Je souhaite voir dans la Frame1 les images des Fruits ou des Légumes

Sachant que le nombre de fruits ou légumes est variable.

Je ne sais pas comment ajouter dynamiquement un contrôle Image dans la Frame1 et d'y mettre l'image, en faisant une boucle sur soit les fruits soit les légumes.

Je pensais analyser comme ci-dessous :

Private SubBoutonFruit_Click()

Texte_Recherché = Fruit

Call Recherche(Fruit)

End Sub

Private Sub BoutonLégume_Click()

Texte_Recherché = Légume

Call Recherche(Légume)

End Sub

Sub Recherche(Texte)

For i = 1 to Nombre de lignes de la Feuil1

If Feuil1.cells(i,1) = Texte Alors

'Créer le Contrôle Image(i)dans la Fram1

'Récupérer l'adresse de l'image

Adresse = Feuil1.Cells(i, 2)

' Mettre l'image dans Image(i)

End If

Nex i

End Sub

Merci d'avance de vos réponses

Cordialement BZH35





[Configuration automatique à compléter]
Windows 10
Firefox 115.0

Publicité
Dudu2
 Posté le 19/07/2023 à 19:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut,

J'ai pas tout compris mais pour insérer une image dans une Frame voilà un exemple:

Dim i As Integer

Private Sub CommandButton1_Click()
Dim Img As MSForms.Image
Dim FichierImg As Variant
FichierImg = Application.GetOpenFilename("fichiers image Files (*.jpg;*.gif;*.bmp), *.jpg;*.gif;*.bmp", 1, "ouvrir un fichier")
If FichierImg = False Then Exit Sub
Set Img = Me.Frame1.Controls.Add("Forms.Image.1", "img" & Me.Frame1.Controls.Count - 1)
With Img
.Top = 100 * i
.Left = 10
.Width = 100
.Height = 100
.PictureSizeMode = 3
.Picture = LoadPicture(FichierImg)
End With
i = i + 1
End Sub

Les positions de l'image sont relative à sont Parent, le Frame Frame1.



Modifié par Dudu2 le 19/07/2023 23:08
BZH35
 Posté le 20/07/2023 à 12:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Normal 0 21 false false false FR X-NONE X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt; mso-ligatures:standardcontextual; mso-fareast-language:EN-US;}

Bonjour Dudu2,

Merci pour la rapidité de ta réponse

Je me suis empressé de créer un nouveau classeur avec un Userform, une Frame et un Bouton

Et j'ai copié ton code avec mes commentaires pour comprendre.

Tout se passe bien sauf que les images se superposent.

Aussi j'aurai souhaité mettre plusieurs images cote à cote sans dépasser la Frame quitte à passer en dessous de la première ligne d'image.

Ci-joint le fichier que j'ai fait.

https://www.cjoint.com/c/MGukik3d1uI

Bien sur je te remercie d'avance de tes explications et peut être la solution.

Cordialement BZH35

Dudu2
 Posté le 20/07/2023 à 19:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour @BZH35,

Tout se passe bien sauf que les images se superposent.

Évidemment, tu as inclus le Dim i as Interger dans le Sub. Fallait le laisser en haut du module.

Je regarde et t'envoie le code.

Dudu2
 Posté le 20/07/2023 à 20:12 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Option Explicit

Private Const MaxLargeurImage = 150
Private Const MaxHauteurImage = 100
Private Const EspaceSéparation = 4

'Lorsque l 'on clique sur le bouton CommandButton1
Private Sub CommandButton1_Click()
Dim NbImagesHorizontalement As Integer
Dim NbImagesVerticalement As Integer
Dim NbImagesMax As Integer
Dim NbImagesEnFrame As Integer
'Déclaration du contrôle Image
Dim image As MSForms.image
'Déclaration du fichier Image
Dim Fichierimage As Variant

NbImagesHorizontalement = Int(Me.Frame1.Width / (MaxLargeurImage + EspaceSéparation))
NbImagesVerticalement = Int(Me.Frame1.Height / (MaxHauteurImage + EspaceSéparation))
NbImagesMax = NbImagesHorizontalement * NbImagesVerticalement
NbImagesEnFrame = Me.Frame1.Controls.Count

If NbImagesEnFrame >= NbImagesMax Then
MsgBox "Le cadre ne peut plus accueillir d'image !"
Exit Sub
End If

'Sélection du fichier image à partir de la boite de dialogue
Fichierimage = Application.GetOpenFilename("fichiers image Files (*.jpg;*.jpeg;*.gif;*.bmp), *.jpg;*.jpeg;*.gif;*.bmp", _
1, "Ouvrir un fichier")

'Si il y a rien ALORS sortie de la procédure
If Fichierimage = False Then Exit Sub

'SINON : Ajout du contrôle Image et y charge l'image sélectionnée
Set image = Me.Frame1.Controls.Add("Forms.Image.1", "image" & Me.Frame1.Controls.Count)

'Formatage et position de l'image
'Les positions de l'image sont relative à sont Parent, le Frame Frame1.
With image
.Top = Int(NbImagesEnFrame / NbImagesHorizontalement) * (MaxHauteurImage + EspaceSéparation)
.Left = (NbImagesEnFrame Mod NbImagesHorizontalement) * (MaxLargeurImage + EspaceSéparation)
.Width = MaxLargeurImage
.Height = MaxHauteurImage
.PictureSizeMode = 3
.Picture = LoadPicture(Fichierimage)
End With
End Sub



Modifié par Dudu2 le 21/07/2023 09:00
BZH35
 Posté le 21/07/2023 à 08:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Dudu2

Grand merci de ta réponse.

Je viens de la mettre dans un nouveau fichier et ça fonctionne exactement à se que je souhaitais.

Maintenant je vais décortiquer chaque ligne pour enrichir mes connaissance en vba.

Il est vrai qu'étant autodidacte à 75 ans...bientôt 76, je ne connais pas toutes les subtilités de VBA.

Merci encore pour ta réactivité.

Prend soin de toi

Très cordialement BZH35

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
Gel douche Tahiti Coco 2x250mL
3,30 € 4 € -18%
@Amazon
Hub USB C 5 en 1 UGREEN (HDMI 4K, 1xUSB 3.0, 2xUSB 2.0, 1xUSB C PD 100W)
14,71 € 25,99 € -43%
@Amazon
Ecran 27 pouces Titan Army P27GR (QHD, IPS, 180 Hz, 1 ms, HDR10)
149,99 € 199 € -25%
@Geekbuying
Remorque de vélo Vevor (capacité de charge de 45 kg, pliable)
74,24 € 115 € -35%
@Amazon
28 recharges de lames de rasoir Gillette Fusion5 (5 lames)
64,90 € 84,90 € -24%
@Amazon
Boîtier PC moyen-tour MSI MAG Forge 120A Airflow (fenêtre acrylique, 6 ventilateurs RGB)
63,55 € 80 € -21%
@Amazon

Sujets relatifs
Aucun sujet pertinent lié trouvé
 > Tous les forums > Forum Bureautique