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 :

Objet "Image" dans un Userform [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 42
    Points : 31
    Points
    31
    Par défaut Objet "Image" dans un Userform
    Bonjour à tous,

    J'ai un userform dans lequels j'ai inséré des objets "image".

    Je voudrais, via des variables, modifier les attributs de cet objets, à savoir son positionnement et ses dimensions.

    voici mon code actuel (qui se trouve dans le dit userform) :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Sub variables()
        'Dimensions des objet "image"
        Dim larg1, haut1 As Integer
        larg1 = 300    'largeur simple
        haut1 = 200   'hauteur simple
     
        'position des angles supérieurs gauche des objets "images" de gauche à droit puis de haut en bas (5 x 3)
        Dim anglex1  As Integer
        Dim angley1  As Integer
        anglex1 = 500
        angley1 = 40
    End Sub
     
    Private Sub UserForm_activate()
        ' Plein écran de l'Userform 4
        With UserForm4
            .StartUpPosition = 3
            .Width = Application.Width
            .Height = Application.Height
            .Left = 0
            .Top = 0
        End With
     
        ' Mise en page automatique de chaque objet "image"
        With Image1
            .Width = larg1
            .Height = haut1
            .Left = anglex1
            .Top = angley1
        End With
     
        ' Insertion d'une image dans un objet "image"
        Set g = Sheets("ANO Secu").ChartObjects(1).Chart
            Fichier = ActiveWorkbook.Path & "\" & "graphe.bmp"
            g.Export Filename:=Fichier, FilterName:="bmp"
            Image1.Picture = LoadPicture(Fichier)
            ' Ajustement automatique de l'image dans l'objet "image"
            Me.Image1.PictureSizeMode = fmPictureSizeModeStretch  
     End Sub
    Quand j'ouvre mon userform, rien ne s'affiche.
    Par contre, quand je ne passe pas par les variables comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        With Image1
            .Width = 300
            .Height = 200
            .Left = 500
            .Top = 40
        End With
    ... tout s'affiche correctement.

    J'ai absolument besoin de passer par des variables car j'ai de très nombreux objets images et j'aimerais modifier régulièrement tous les attributs de manières identiques sans avoir à me taper les objets un par un.

    Merci d'avance.

  2. #2
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je pense que c'est une histoire de déclaration.

    Dim déclare au sein de la procédure sub et dès que tu quittes cette procédure les variables se vident !!!

    donc tu as plusieurs solutions :
    1 - tu passes en paramètre tes variables
    2 - tu déclares avec Public dans un module à l'extérieur de "sub" et "Function" (c'est pratique et disponible dans toutes tes "sub" de ton classeurs c'est ce que je fais)
    3 - tu peux déclarer avec Dim à l'extérieur de sub et Function et dans ce cas c'est disponible au sein du module ou page Userform

    Moi personnellement je préfère la 2ème solution que je trouve plus simple

    tu dis

    A+

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, tu pourrais t'inspirer de Visualisation d'une liste de fichiers PDF dans une UserForm via IExplorer pour le redimensionnement

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Salut Igloobel.

    Merci pour tes réponses.
    J'ai procédé selon ta 2ème méthode (qui s'avère être très utilisée apparement).
    Néanmoins, je me retrouve avec le même problème.

    J'ai donc écrit ce code dans un module que je viens de créer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        'Dimensions des objet "image"
        Public larg1, haut1 As Integer
        'position des angles supérieurs gauche des objets "images" 
        Public anglex1  As Integer
        Public angley1  As Integer
     
        larg1 = 300    'largeur simple
        haut1 = 200   'hauteur simple
        anglex1 = 500
        angley1 = 40
    Du coup je me retrouve avec une erreur qui apprait :
    Erreur de compilation
    Instruction incorrecte à l'extérieur d'une procédure

    Peux tu m'aider à ce sujet?

    Kiki29, merci pour ton lien qui est très interessant, je vais d'ailleurs m'en inspirer. Mais j'aimerais quand même savoir pourquoi mes variables ne fonctionnent pas

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Bonjour
    Le message est pourtant clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    larg1 = 300    'largeur simple
        haut1 = 200   'hauteur simple
        anglex1 = 500
        angley1 = 40
    Des initialisations de variables, donc, ne saurait se trouver que dans une procédure (celle de ton choic ... évènementielle, par exemple ...mais UNE PROCEDURE..
    C'est là le B.A.BA

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    tu peut pas lettre cela comme ca dans un module quel qu'il soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'Dimensions des objet "image"
        Public larg1, haut1 As Integer
        'position des angles supérieurs gauche des objets "images" 
        Public anglex1  As Integer
        Public angley1  As Integer
     
        larg1 = 300    'largeur simple
        haut1 = 200   'hauteur simple
        anglex1 = 500
        angley1 = 40
    la partie dimension ok quoi integer avec 300 fait pas bon ménage
    mais cette partiel la ne doit pas etre en hat de module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     larg1 = 300    'largeur simple
        haut1 = 200   'hauteur simple
        anglex1 = 500
        angley1 = 40
    ou alors se serai comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const=  larg1 as long = 300    'largeur simple
    const= haut1 as long = 200   'hauteur simple
    const=  anglex1  as long = 500
    const= angley1  as long =40
    mais sans les "dim" ou "public"

    mais cela implique que tu ne peux plus les changer en cours de route

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Bonjour et merci à tous,

    Grace à vous, et à mes moults essais infructueux, j'ai enfin compris la différence entre les constantes et les variables, l'interet de les mettre sans des procédures, comment elels s'initialisaient, etc, etc...

    J'ai donc réussi à avoir le resultat que je souhaitais obtenir.

    Un grand merci !!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] La methode range de l'objet global à échoué macro dans un userform
    Par diude54 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/02/2013, 11h38
  2. [VBA-Form]Quel objet rajouter pour dessiner dans une userform?
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/09/2008, 10h37
  3. [VBa-E] Object Ole "image bitmap" dans une Userform?
    Par gootsu dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/07/2006, 14h24

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