Afficher un screen d'une feuille Excel dans un UserForm
Bonsoir à tous,
Cela fait un moment que je tourne pour pouvoir lire une zone d'une feuille Excel dans une Imagebox ou autre chose dans un Userform.
J'ai beau chercher sur le net, mais je ne trouve rien d'adéquat a ce que je cherche. J'ai penser ( je ne sais pas si c'est possible) a faire un screen automatique d'une zone de nom que j'ai nommé ici "Exemple1" de la feuille 4, pour quelle s'affiche dans une Imagebox.
Merci d'avance pour votre aide.
Cordialement
Bonsoir Minakashi,
On n'est pas obligé de passer par un Userform pour connaître une zone d'une feuille particulière.
On peut utiliser l'appareil photo, Menu Insertion, sous-menu Caméra.
Il permet de sélectionner à partir d'une feuille des données existantes sur une autre feuille.
Et de les avoir toujours présentes même si ces données changent.
Bonjour Cellus,
Le truc c'est que je dois absolument afficher un screen d'une zone de nom dans un UserForm, c'est juste une question de pratique de mon projet. J'ai pas trouver l'appareil photo...
Merci.
Cldt.
A nouveau,
Ok, ci-dessous un code réalisé pour utilisation dans un Userform.
Note: Adapter la zone à copier pour l'image. Changer aussi le Chemin par celui réel (ici le répertoire Images).
Sub KopImg()
Dim MyChart As Chart, NomImage As String
'Récupération du texte d'une cellule ou nom prédéfini pour l'image
NomImage = "Tablo"
'Fin d'une Rangée en colonne E
Dlig = Sheets("Datas").Range("E" & Rows.Count).End(xlUp).Row
'Copie des cellules cible sur 2 colonnes. A adapter selon besoin
Range("E3:F" & Dlig).CopyPicture Appearance:=xlScreen, Format:=xlPicture
'Copier l'image selon nom souhaité avec mensurations
ActiveSheet.Paste: Selection.Name = NomImage
Haut = ActiveSheet.Shapes(NomImage).Height
Large = ActiveSheet.Shapes(NomImage).Width
'Copie sur l'ordinateur à adapter selon le dossier personnel avec nom de l'image
'Application.UserName
Chemin = "C:\Users\Pseudo" & "\Pictures\" & NomImage & ".jpg"
With ActiveSheet
Set MyChart = .ChartObjects.Add(0, 0, Large, Haut).Chart
'Réalise l'export avec l'objet Chart puis supprime ce dernier
With MyChart
.Parent.Activate
.ChartArea.Format.Line.Visible = msoFalse 'Ligne du cadre non visible
.Paste
.Export Filename:=Chemin
.Parent.Delete
End With
End With
Set MyChart = Nothing
ActiveSheet.Shapes(NomImage).Delete
Range("A20").Select 'Ou tout autre cellule
End SubPuis dans le code de l'Userform. Soit l'initialiser pour récupérer l'image. Ou Passer par un bouton de commande.
Ci-dessous exemple avec le bouton de commande. La propriété SizeMode du contrôle Image est sous format Stretch
Private Sub CommandButton1_Click()
UserForm1.Image1.Picture = LoadPicture("C:\Users\Pseudo\Pictures\Tablo.jpg")
End SubBonjour Cellus,
Merci beaucoup pour ta réponse ! alors voila j'ai fais un test mais j'ai une erreur dans le code, je pense pourtant l'avoir bien modifier.
Pourrais tu y jeter un œil stp? je t'envoie mon fichier en pièce jointe, il faut aller dans la feuille "BaseDeDonnées" > Recherche d'un Produit > Livraison > utiliser le bouton "Visualiser le Bon de Livraison"
Merci encore.
Cordialement.
Bonsoir Minakashi,
Non, tu ne l'as pas bien adapté. De plus tu as Option Explicit en haut de ton code.
Et il te faut donc typé les variables utilisées.
Voir ci-dessous le code adapté à ton besoin.
Private Sub CommandButton2_Click()
Dim MyChart As Chart, NomImage, Chemin As String, Haut, Large As Double
'Récupération du texte d'une cellule ou nom prédéfini pour l'image
NomImage = "BonLivraison"
'Copie colonnes A à M jusqu'à ligne 37
'Dlig = Sheets("BonDeLivraison").Range("M" & Rows.Count).End(xlUp).Row
Range("A1:M37").CopyPicture Appearance:=xlScreen, Format:=xlPicture
'Copier l'image selon nom souhaité avec mensurations
ActiveSheet.Paste: Selection.Name = NomImage
Haut = ActiveSheet.Shapes(NomImage).Height
Large = ActiveSheet.Shapes(NomImage).Width
'Copie sur l'ordinateur à adapter selon le dossier personnel avec nom de l'image
'Application.UserName
Chemin = "C:\Users\mazouzy\Desktop" & "\ImagesESO\" & NomImage & ".jpg"
With ActiveSheet
Set MyChart = .ChartObjects.Add(0, 0, Large, Haut).Chart
'Réalise l'export avec l'objet Chart puis supprime ce dernier
With MyChart
.Parent.Activate
.ChartArea.Format.Line.Visible = msoFalse 'Ligne du cadre non visible
.Paste
.Export Filename:=Chemin
.Parent.Delete
End With
End With
Set MyChart = Nothing
ActiveSheet.Shapes(NomImage).Delete
'Range("Exemple1").Select 'Ou tout autre cellule
Range("A1").Select
FrmVisuLivraison.Show (1) 'Ouverture en non-modal
End SubL'initialisation du formulaire de visualisation se fera ainsi
Private Sub UserForm_Initialize()
FrmVisuLivraison.Image1.Picture = LoadPicture("C:\Users\mazouzy\Desktop\ImagesESO\BonLivraison.jpg")
End SubNote: Il te manque un End if dans ce code. A corriger donc.
Sub OuvrirFrmLivraison()
If Feuil4.Range("B22") = "" Then
frmBonLivraison.Show
Else
FrmRecherche.Show
End If 'Insérer ce End if afin d'éviter le débogage
End SubJe n'ai pas trop regardé l'ensemble du programme. Mais le code Screen ajouté répond à ta demande.
Bonjour,
A oui je comprend mieux, merci infiniment Cellus.
Passe une bonne journée