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 :

Stocker les propriétés d’un label (Userform) dans un module [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 19
    Par défaut Stocker les propriétés d’un label (Userform) dans un module
    Bonjour à tous,
    J’ai un Userform contenant des Label(s) avec une mise en forme qui se répète. Je vous mets un petit bout de code :
    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
    Private Sub UserForm_Initialize()
    'bouton suivant1
    UserForm1.Label4.ForeColor = RGB(70, 70, 70) 'couleur texte dark grey
    UserForm1.Label4.BackColor = RGB(211, 240, 224) 'couleur bouton green
    UserForm1.Label4.BorderColor = RGB(134, 191, 160) 'couleur contour dark green
     
    'bouton suivant2
    UserForm1.Label9.ForeColor = RGB(70, 70, 70)
    UserForm1.Label9.BackColor = RGB(211, 240, 224)
    UserForm1.Label9.BorderColor = RGB(134, 191, 160)
     
    'bouton suivant3
    UserForm1.Label15.ForeColor = RGB(70, 70, 70)
    UserForm1.Label15.BackColor = RGB(211, 240, 224)
    UserForm1.Label15.BorderColor = RGB(134, 191, 160)
    End Sub
    Comme vous pouvez le constater c’est toujours la même mise en forme (seul le label change). Alors je me demandais si c’était possible de stocker les propriétés de cette mise en forme dans un module et l’appeler sans avoir à tout remarquer. J’ai tenté un truc mais ça ne marche pas du tout lol ! Si quelqu’un connait une technique je suis preneur 😊

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Couleur_Label (Texte As String)
    UserForm1.Texte.ForeColor = RGB(70, 70, 70)
    UserForm1.Texte.BackColor = RGB(211, 240, 224)
    UserForm1.Texte.BorderColor = RGB(134, 191, 160)
    End sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Couleur_Label (Label4)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Romain.Frc Voir le message
    Bonjour,

    Dans un module de classe baptisé cLabel

    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
     
    Option Explicit
     
    Public WithEvents mLabel As MSForms.Label
     
     
    Sub MefLabels(LabelEnCours2 As MSForms.Label)
     
      Set mLabel = LabelEnCours2
     
      With mLabel
     
           .BorderStyle = fmBorderStyleSingle
           .ForeColor = RGB(70, 70, 70) 'couleur texte dark grey
           .BackColor = RGB(211, 240, 224) 'couleur bouton green
           .BorderColor = RGB(134, 191, 160)  'couleur contour dark green
     
     
      End With
     
    End Sub
    Dans votre 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
     
    Option Explicit
     
    Dim Ctl As MSForms.Control
    Dim CollectionLabels As Collection
     
     
     
    Private Sub UserForm_Initialize()
     
    Dim LabelEnCours As MSForms.Label
    Dim cControl As CLabel
    Set CollectionLabels = New Collection
     
       For Each Ctl In Me.Controls
     
          If TypeOf Ctl Is MSForms.Label Then
             Set cControl = New CLabel
             cControl.MefLabels Ctl
             CollectionLabels.Add cControl
          End If
     
       Next
     
    End Sub
    Pièce jointe 584112

    Pour en savoir plus sur les modules de classe, voir les tutos de P FAUCONNIER et d'Emmanuel TISSOT :

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 19
    Par défaut
    Bonjour Eric et merci pour votre contribution,

    J'ai appliqué la méthode, la mise en forme se fait bien sur tous mes boutons suivants. Mais le souci c'est que tous les autres labels (nom, prénom etc...) se retrouvent aussi modifiés ^^
    Nom : Capture.JPG
Affichages : 189
Taille : 19,9 Ko

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour le Fil

    On peut aussi ajouter une méthode dans l'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
    Option Explicit
    Private Sub UserForm_Initialize()
      'bouton suivant1
      Me.InitLabel Me.Label4
      'bouton suivant2
      Me.InitLabel Me.Label9
      'bouton suivant3
      Me.InitLabel Me.Label15
    End Sub
    Sub InitLabel(lbl As msforms.Label)
      lbl.ForeColor = RGB(70, 70, 70)
      lbl.BackColor = RGB(211, 240, 224)
      lbl.BorderColor = RGB(134, 191, 160)
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 19
    Par défaut
    Bonjour Patrice,

    Cette méthode fonctionne parfaitement, merci beaucoup !!

    problème résolu

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Romain.Frc Voir le message
    Au cas où, il suffit de mettre une valeur dans la propriété tag des labels que vous souhaitez distinguer.
    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
     
     
    Private Sub UserForm_Initialize()
     
    Dim LabelEnCours As MSForms.Label
    Dim cControl As CLabel
    Set CollectionLabels = New Collection
     
       For Each Ctl In Me.Controls
     
          If TypeOf Ctl Is MSForms.Label And Ctl.Tag = "A" Then
             Set cControl = New CLabel
             cControl.MefLabels Ctl
             CollectionLabels.Add cControl
          End If
     
       Next
     
    End Sub

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 19
    Par défaut
    Effectivement cette méthode marche également, un grand merci à vous deux !

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

Discussions similaires

  1. Changer les propriétés Caption des contrôles dans UserForm
    Par ThSPB dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/03/2011, 11h51
  2. Réponses: 1
    Dernier message: 09/11/2006, 13h34
  3. Réponses: 2
    Dernier message: 11/09/2006, 09h36
  4. [forms 6i] changer les Propriétés d’un item
    Par imedg dans le forum Forms
    Réponses: 3
    Dernier message: 27/04/2006, 16h57
  5. [forms 6i] changer les Propriétés d’un item
    Par imedg dans le forum Forms
    Réponses: 3
    Dernier message: 27/04/2006, 15h05

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