IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ou stocker des images pour les utiliser dans un USERFORM?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Ou stocker des images pour les utiliser dans un USERFORM?
    Bonjour à tous,

    J'ai besoin d'un Userform qui afficherait l'image de l'article choisi en fonction
    des contrôles utilisés.

    Je sais faire quand j'utilise des images stocker dans un répertoire.

    Par contre je souhaierai que le fichier soit indépendant et donc stocker les images sur une feuille.

    J'ai collé 10 vignettes dans une page mais je ne trouve pas comment les récupérer dans l'Userform....

    Auriez-vous une idée?
    Ou peu-être ce n'est tout simplement pas possible...

    Merci de votre aide

    Tham

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553

  3. #3
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Merci EnqueEnque,

    Non en effet je connaissais pas ce contrôle complémentaire.

    Je regarderai ça en détail mais effectivement cela doit répondre à mon besoin.

    Par contre je me pose une question,
    Si j'envoie un fichier utilisant un contrôle complémentaire que l'utilisateur n'a pas dans sa version Excel, est ce que cela va fonctionner ou alors il doit l'installer en pre-requis?

    Merci

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Bonne question. A laquelle je ne saurais répondre.

    Si tu actives la référence dans ton classeur elle le suivra à moins que l'utilisateur ait une version "chelou" d'excel.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Ok je testerai,

    par contre je ne sais pas si finalement cela répond à mon besoin car je n'arrive toujours pas à récupérer l'image stockée sur une feuille Excel...

    Une idée?

    Merci

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    C'est la galère....

    Voilà ça marche...
    Module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Sub SavePictureAs(strPicName As String, ByVal strFile As String, strFormat As String)
     
    Dim wsTemp As Worksheet, chtObj As Chart, pObj As Picture
    Dim dblWidth As Double, dblHeight As Double
     
    ActiveSheet.Shapes(strPicName).Select
    Set pObj = Selection
    dblWidth = pObj.Width: dblHeight = pObj.Height: pObj.Copy
     
    Application.ScreenUpdating = False
     
    Set chtObj = Charts.Add: Set wsTemp = Sheets.Add
    chtObj.Location Where:=xlLocationAsObject, Name:=wsTemp.Name
    wsTemp.Range("A1").Select
     
    With wsTemp.ChartObjects(1)
         .Top = 0
         .Left = 0
         .Width = dblWidth
         .Height = dblHeight
         .Activate
         .Chart.Paste
         .Interior.ColorIndex = 1
         .Chart.Export Filename:=strFile, FilterName:=strFormat
    End With
     
    Application.DisplayAlerts = False: wsTemp.Delete
    Application.DisplayAlerts = True: Application.ScreenUpdating = True
     
    End Sub
    Userform:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    Fname = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
    SavePictureAs "Image 1", Fname, "GIF"
    UserForm1.Image1.Picture = LoadPicture(Fname)
    End Sub
    Et si le temps de latence ne te plait pas... Désolé mon gars, this is not possible.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Essayez la piste suivante où les images sont stockées dans un second UserForm
    1) Créez un UserForm1 avec une Image1, un Label1, un Label2
    2) Copiez le code suivant dans la fenêtre de code du UserForm1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub Label1_Click()
    Dim MonImage As MSForms.Image
    Dim i&
    i& = CLng(Me.Label1.Caption)
    i& = i& + 1
    If i& > UserForm2.Controls.Count Then i& = 1
    Me.Label1.Caption = i&
    Set MonImage = UserForm2.Controls(i& - 1)
    Me.Image1.Picture = MonImage.Picture
    End Sub
     
    Private Sub UserForm_Initialize()
    With Me
      .Label1.Caption = 1
      .Label1.BackColor = &HC0FFFF
      '---
      .Label2.Caption = "Cliquez la zone jaune pour faire défiler"
      '---
      .Image1.Picture = UserForm2.Image1.Picture
    End With
    End Sub
    3) Créez un UserForm2 avec plusieurs contrôles Image (surtout pas d'autre contrôle), ce sera le conteneur d'images
    4) Par le biais de la propriété Picture, chargez les images désirées
    A noter : aucun code n'est présent dans ce UserForm2

    Adaptez ou faites évoluer selon votre besoin.
    Je mets le classeur exemple en pièce jointe pour faciliter.

  8. #8
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Malinx le linx! Encore merci pour tes astuces légendaires, les miennes pâlissent à coté.

  9. #9
    Membre confirmé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Points : 520
    Points
    520
    Par défaut
    bonjour PM02017, EngueEngue et le forum

    PM02017 le lien du fichier ne peux pas etre ouvert chez moi voici un apercu
    http://cjoint.com/?CKikDTrPcSz de la raison

    mais une fois recréer les usf grâce au code donné c'est magnifique le fonctionnement
    Merci pour cette solution que je garde très précieusement

    Pascal

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    @ grisan29
    PM02017 le lien du fichier ne peux pas être ouvert chez moi
    Bonjour,

    Pour pouvoir m'y retrouver dans mes archives, je nomme mes classeurs avec un nom très explicite (en l'occurrence : "Stocker des images dans un UserForm conteneur pour les utiliser dans un UserForm maître.xlsm") qui peut être très long. Par la suite, je zippe le classeur pour pouvoir le mettre en pièce jointe.

    Si, après l'avoir téléchargé, vous l'ouvrez directement à partir du .zip cela fait tilt car le nom du fichier est trop long (Office ne s'y retrouve pas).
    En revanche, si vous le dézipper au préalable (en faisant glisser/déposer le fichier du .zip sur le bureau) et que vous ouvrez le classeur à partir du bureau, il n'y a plus de problème du moins chez moi.
    Faites la démarche et tenez moi au courant du résultat.

    Bonne journée et à plus.

  11. #11
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour,

    cf exemple en PJ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Dim f
    Private Sub UserForm_Initialize()
      Set f = Sheets("photos")
      For Each s In f.Shapes
        Me.ComboBox1.AddItem s.Name
      Next
    End Sub
     
    Private Sub ComboBox1_Change()
      Set s = f.Shapes(CStr(Me.ComboBox1))
      s.CopyPicture
      f.ChartObjects.Add(0, 0, s.Width, s.Height).Chart.Paste
      f.ChartObjects(1).Chart.Export Filename:="monimage.jpg"
      f.Shapes(f.Shapes.Count).Delete
      Me.Image1.PictureSizeMode = fmPictureSizeModeZoom
      Me.Image1.Picture = LoadPicture("monimage.jpg")
      Kill "monimage.jpg"
    End Sub
    Jacques Boisgontier
    Fichiers attachés Fichiers attachés

  12. #12
    Membre confirmé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Points : 520
    Points
    520
    Par défaut
    bonsoir PM02017
    je ne pensais pas te vexé mais le fait de mettre le fichier sur le bureau comme tu l'a dit est parfait et je peux l'ouvrir, c'est un très beau fichier que je vais garder pour plus tard

    boisgontierjacques: ton fichier est très bien et je vais le conserver également

    Pascal

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    @ grisan29
    bonsoir PM02017
    je ne pensais pas te vexé
    Je ne suis pas du tout vexé.
    Si quelque chose, dans le corps de mon message, a pu t'inciter à le croire alors je te prie de m'en excuser.
    Bonne soirée et à plus.

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/07/2015, 12h36
  2. [applet]utilser des infos pour les traiter dans une servlet
    Par jeromejanson dans le forum Applets
    Réponses: 5
    Dernier message: 07/03/2010, 23h22
  3. Réponses: 4
    Dernier message: 10/03/2009, 14h05
  4. Résolution des images pour les jeux vidéos
    Par YuGiOhJCJ dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 04/04/2006, 12h24
  5. [debutant][JNI]Stocker des objet pour les rappeler plus tard
    Par Celenor dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 28/03/2004, 01h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo