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 :

créer label automatique à l'ini d'un usf


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Divers
    Inscrit en
    Février 2017
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Divers

    Informations forums :
    Inscription : Février 2017
    Messages : 282
    Points : 89
    Points
    89
    Par défaut créer label automatique à l'ini d'un usf
    Bonsoir,

    je voudrais initialiser un userform et créer automatiquement les labels sur base d'un tableau
    ex :
    A1 txt1
    A2 Txt2

    B1 Or1
    B2 OR2

    Je voudrais label 1 = txt 1 et etc

    Merci de m'orienter..

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

    Le plus simple serait de les créer tous et de les rendre visibles si vous en avez besoin.

  3. #3
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonjour,
    Citation Envoyé par rossemma Voir le message
    je voudrais initialiser un userform et créer automatiquement les labels sur base d'un tableau
    C'est tout à fait possible de le faire avec un code dans ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                Set obj = Me.Controls.Add("Forms.Label.1", "nom" & numéro, True)
                With obj
                    .Left = 'position gauche
                    .Top = 'position  haut
                    .Caption = 'intitulé de ta rubrique
              End With
    Tu définis la variable 'obj' par exemple : Dim obj As Control
    tu adaptes les rubriquess soulignées à ton cas
    et tu peux initialiser toutes les propriétés de tes contrôles (taille,police,etc) de même que leur position que tu dois bien sûr adapter.

    Tu peux insérer ainsi tous tes titres et bien sûr rajouter les textbox ou combobox de saisie afférents.

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Je voudrais label 1 = txt 1 et etc
    Voilà un "etc" bien inquiétant, surtout si pléthorique ...
    Les contrôles Labels n'étant que des étiquettes (non éditables), il parait bien plus sage d'utiliser en leurs lieu et place une listbox, plutôt que de charger un userform d'une énorme quantité de labels
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    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,

    dans l'exemple, les entetes de ListBox sont crées avec des labels.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub EnteteListBox()
      x = Me.ListBox1.Left + 8
      Y = Me.ListBox1.Top - 12
      For i = 1 To NbCol
        Set lab = Me.Controls.Add("Forms.Label.1")
        lab.Caption = Rng.Offset(-1).Cells(1, i)
        lab.Top = Y
        lab.Left = x
        x = x + Rng.Columns(i).Width * 1.1
        temp = temp & Rng.Columns(i).Width * 1.1 & ";"
      Next
      temp = Left(temp, Len(temp) - 1)
      Me.ListBox1.ColumnWidths = temp
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Bonjour …

    « Voilà un "etc" bien inquiétant, surtout si pléthorique ... »
    Salut unparia, il est vrai qu’une éruption de boutons peut générer des alarmes inquiétantes donc, on peut s’amuser à réduire leur nombre comme dans l’exemple suivant :

    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
    Option Explicit
    Dim dc As Byte, n As Byte, L As Integer, t As Byte
    Private Sub UserForm_Initialize()
      Me.Height = 160
      dc = [Bd].Columns.Count
      Lst.ColumnCount = dc
      For n = 1 To dc: Lst.ColumnWidths = [Bd].Columns(n).Width: Next
      Lst.Width = 80 * dc + 80: Usf.Width = Lst.Left + Lst.Width + 80
      Lst.RowSource = [Bd].Address
      Col.List = Application.Transpose([Bd].Rows(0))
    End Sub
    Private Sub Lst_Click()
      L = Lst.ListIndex + 1
      Me.Height = 200
    End Sub
    Private Sub Col_Click()
      If Lst.ListIndex < 0 Then Exit Sub
      t = Col.ListIndex
      Modif = Lst.List(Lst.ListIndex, t)
    End Sub
    Private Sub Modif_Change()
      Change.Visible = Modif <> ""
    End Sub
    Private Sub Change_Click()
      If MsgBox("Accepter ?", vbYesNo, "Attention, la base sera changée !") = vbNo Then
         Modif = ""
      Else
        [Bd].Item(L, t + 1) = Modif.Value
        UserForm_Initialize
      End If
    End Sub
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2003] Affichage Label automatique
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/10/2010, 10h33
  2. Créer calendrier automatique (sp)
    Par helrick dans le forum SQL
    Réponses: 12
    Dernier message: 23/07/2010, 08h43
  3. Créer xml automatique
    Par Gabie dans le forum Windows
    Réponses: 6
    Dernier message: 28/12/2009, 21h13
  4. Label automatique pour les sections
    Par Spack dans le forum Mise en forme
    Réponses: 2
    Dernier message: 08/06/2008, 19h28
  5. label automatique de diagrammes
    Par Invité dans le forum VBA Word
    Réponses: 5
    Dernier message: 25/10/2007, 10h30

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