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 :

Identifier label puis lien avec textbox [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 65
    Points : 34
    Points
    34
    Par défaut Identifier label puis lien avec textbox
    Bonjour,

    J'ai un userform avec plein de textbox, chacune son label au dessus, et je cherche un code ou une routine pour que dès qu'on clique sur un label, le format (backcolor) du textbox correspondant change. A noter que pour le textbox "TextboxLambda" son label sera "LabelLambda".

    J'ai essayé avec un code utilisant ActiveControl mais j'ai l'impression qu'un label ne peut pas être un contrôle actif...
    En creusant on dirant qu'une solution serait les modules de classe mais je ne sans pas du tout utiliser cela...

    Merci de votre aide !

  2. #2
    Membre expérimenté Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 724
    Points : 1 454
    Points
    1 454
    Par défaut
    Bonjour,
    Dans le UserForm, vous double clicquez sur le Label Nom par exemple et vous entrez la nouvelle couleur du TextBox qui lui est "dédié".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub LblNom_Click()  'Mon label s'appelle LblNom et le TextBox rattaché est TxtNom. Il vous faut 
    remplacer par les noms que vous avez choisi
    TxtNom.BackColor = &H93FFFF
    End Sub
    Nom : Capture d’écran 2022-09-25 à 07.16.39.png
Affichages : 150
Taille : 14,2 KoNom : Capture d’écran 2022-09-25 à 07.16.50.png
Affichages : 151
Taille : 16,6 Ko
    On a deux vies, la deuxième commence quand on se rend compte qu'on n'en a qu'une.
    Confucius

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 65
    Points : 34
    Points
    34
    Par défaut
    Bonjour et merci pour ta réponse, je me suis mal exprimé, ce que je cherche c'est une routine ou un boucle pour ne pas avoir à écrire ce code pour mes 50 textboxes.
    Pour que dès que je clique sur "labelX" alors "textboxX" change de format.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai essayé avec un code utilisant ActiveControl mais j'ai l'impression qu'un label ne peut pas être un contrôle actif...
    Un Label n'est en effet pas un ActiveControl. Pourquoi ne voulez-vous pas simplement changer la couleur du TextBox dès que celui-ci a le focus ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 65
    Points : 34
    Points
    34
    Par défaut
    L'idée est de pouvoir marquer les textboxes que l'on voudra recharger la fois suivante, et ne pas en afficher certaines. Pour cela je change la couleur du textbox, qui changera la couleur de la cellule excel concernée, et lors du chargement du résumé, il n'affichera que les cellules qui sont en couleur.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne vois pas d'autres solutions que de traiter cela avec un module de classe.
    Je voir si j'ai un exemple dans mes cartons
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    Pour l'exemple un UserForm nommé UserForm1 avec deux TextBox nommés txtName et txtFirstName et deux Label nommés lblName et lblFirstName
    Lorsque l'on clique sur un Label, le TextBox ayant le même suffixe prend la couleur jaune ou blanche (Toggle)

    Code du module de classe nommé clsLabel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Explicit
    Public WithEvents clsLbl As MSForms.Label
     
    Private Sub clsLbl_Click()
     With clsLbl.Parent.Controls("txt" & Mid(clsLbl.Name, 4))
     .BackColor = IIf(.BackColor = vbYellow, vbWhite, vbYellow)
     End With
    End Sub
    Code du 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
    Option Explicit
    Dim Coll As Collection
     
    Private Sub UserForm_Initialize()
      SetClass
    End Sub
     
    Private Sub SetClass()
      Dim myClass As clsLabel
      Set Coll = New Collection
      Dim ctrl As Control
      For Each ctrl In Me.Controls
        If TypeName(ctrl) = "Label" Then
           Set myClass = New clsLabel: Set myClass.clsLbl = ctrl
           Coll.Add myClass
           Set myClass = Nothing
        End If
      Next
    End Sub
    Personnellement, je créerais mes TextBox et Label à l'aide d'un module de classe

    Nom : 220925 dvp Class Module With Label Click and Color TextBox.png
Affichages : 152
Taille : 6,4 Ko
    Fichiers attachés Fichiers attachés
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 65
    Points : 34
    Points
    34
    Par défaut
    Wahou ça marche bien et effectivement ça demande peu de code, ça a l'air sympa ces modules de classes, je vais essayer de regarder des tutos!

    Par contre dans mon cas un bug intervient si on clique sur un label qui n'est pas associé à un textbox. Comment peut on dire de ne rien faire s'il n'y a pas de textbox correspondant au label ?

    Merci beaucoup!

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    Hello,
    Citation Envoyé par mosar3 Voir le message
    Par contre dans mon cas un bug intervient si on clique sur un label qui n'est pas associé à un textbox. Comment peut on dire de ne rien faire s'il n'y a pas de textbox correspondant au label ?
    Dans la classe, il faut tester si le contrôle TextBox associé au label existe. Exemple :

    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
     
    'Nom des labels : LabelXX - Nom des textbox : TextBoxXX 
    Option Explicit
    Public WithEvents clsLbl As MSForms.Label
    Private Sub clsLbl_Click()
     If Not WidgetExists("TextBox" & Mid(clsLbl.Name, 6)) Then Exit Sub
     With clsLbl.Parent.Controls("TextBox" & Mid(clsLbl.Name, 6))
     .BackColor = IIf(.BackColor = vbYellow, vbWhite, vbYellow)
     End With
    End Sub
     
     
    Private Function WidgetExists(ByVal Name As String) As Boolean
        On Error Resume Next
            WidgetExists = Not clsLbl.Parent.Controls(Name) Is Nothing
        On Error GoTo 0
    End Function
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 65
    Points : 34
    Points
    34
    Par défaut
    C'est top merci beaucoup !

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    ça a l'air sympa ces modules de classes, je vais essayer de regarder des tutos!
    Quelques liens sur le sujet (FAQ, Tutoriels, Exemples)

    1. FAQ Les modules de classe
    2. Access : Modules de classes
    3. Création et utilisation de classes personnalisées en VB 6.0 et VBA (partie 1)
    4. Office et les modules de classes
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Installation sur PC puis lien avec ACCESS pour intranet
    Par Debutant10 dans le forum Installation
    Réponses: 1
    Dernier message: 02/11/2011, 11h11
  2. [Débutant] Bouton ayant un lien avec Console et Textbox
    Par Gabriel7878 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/12/2010, 18h17
  3. problèmes requête sql, dont lien avec la valeur d'un textbox
    Par Drone dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 12/02/2009, 17h28
  4. [VB6] Composer un LONG avec TextBox et Label
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 18/05/2006, 14h06

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