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 :

Passer le nom d'une TextBox en paramettre d'une procedure [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Par défaut Passer le nom d'une TextBox en paramettre d'une procedure
    Bonsoir,
    mon soucis est assez basique mais je m'arrache les cheveux car je n'arrive pas à faire ce que je veux.
    Je veux gerer la couleur de de differentes textbox de mon userform et comme cette gestion de couleur se fait lors de plusieurs evenement de mon formulaire et que le traitement est identique au niveau de cette gestion de couleur, j'aimerai faire une fonction GestionCouleur que j'appellerai dans mes differents evenements. Sauf que j'ai une erreur dans mon appel mais je ne sais pas ou???
    Voici ma fonction, où TxtName est le nom de mes textbox que je passe en paramettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub GestionCouleur_1050(TxtName As String)
        If TxtName.Value > 10 And TxtName.Value < 50 Then TxtName.Value.BackColor = RGB(255, 255, 255) 'normal
        If TxtName.Value >= 50 Then TxtName.BackColor = RGB(255, 0, 0) 'Rouge
        If TxtName.Value <= 10 Then TxtName.BackColor = RGB(0, 255, 0) 'vert
    End Sub
    Voici un exemple de procedure où j'appelle ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Cmd_GSMS_Click()
        Txt_GSMS.Value = Val(Txt_GSMS.Value) + Val(Txt_AddGSMS.Value)
        'gestion couleur
        GestionCouleur_1050(Txt_GSMS)
    End Sub
    Une idée?
    Merci infiniment par avance!

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Plusieurs petits trucs à modifier

    1. Le nom de la TextBox, passé en paramètre dans ta fonction, doit être de type String, donc soit tu ajoutes des doubles quotes si tu introduits directement le nom
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      GestionCouleur_1050("Txt_GSMS")
      soit tu fais appel à la propriété Name de ta TextBox
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      GestionCouleur_1050(Txt_GSMS.Name)
    2. Dans ta fonction, il y a une petite erreur dans la première condition de couleur
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      "...Then TxtName.Value.BackColor =..." --> "...Then TxtName.BackColor =..."
    3. Vu que ta fonction se trouve en dehors de l'object UserForm, tu dois préciser à quel UserForm sont liées les TextBox
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      Sub GestionCouleur_1050(TxtName As String)
      With UserForm1.Controls(TxtName) '<-- nom du UserForm (UserForm1) à adapter
          If .Value > 10 And .Value < 50 Then
              .BackColor = RGB(255, 255, 255)
          ElseIf .Value >= 50 Then
              .BackColor = RGB(255, 0, 0)
          Else
              .BackColor = RGB(0, 255, 0)
          End If
      End With
      End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 194
    Par défaut
    Avec le code de fring, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub GestionCouleur_1050(TxtName As String)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub GestionCouleur_1050(ByRef TxtName As TextBox)
    Puis quand tu veut appeler ta procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' soit
    GestionCouleur_1050 Txt_GSMS
    ' soit
    Call GestionCouleur_1050(Txt_GSMS)

  4. #4
    Membre confirmé Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Par défaut
    Bonsoir,
    Merci pour vos réponses qui m'ont bien aidé. Les solutions proposées ne m'étaient pas surprenantes, j'avais déjà essayé mais je pense que ça ne passait pas à cause de ma fonction (sans les with) et de mes if...

    Toutefois, Golork, le Byref ne passe pas du tout ainsi que l'appel de la fonction comme tu me le suggères. C'est étonnant car j'avais essayé cela aussi et je ne comprends pas pourquoi ça ne passe pas

    @bientôt

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/06/2015, 18h59
  2. Réponses: 6
    Dernier message: 24/05/2013, 16h25
  3. passer une textbox en parametre d'une procedure sub
    Par gilles_906 dans le forum VB.NET
    Réponses: 3
    Dernier message: 02/04/2011, 15h11
  4. Passer le nom d'un textBox en paramètre
    Par Poussy-Puce dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2006, 17h30
  5. Mettre une date par defaut dans une textBox.
    Par yaumme dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/12/2005, 22h39

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