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 :

Convertir une chaine en nom d'objet


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut Convertir une chaine en nom d'objet
    Bonjour à tous,

    Dans mon exemple, Je n'arrive pas à convertir TextBoxN en nom d'objet.
    (Je débute en VBA)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub TextBox10_Change()
    TextBoxN = Me.ActiveControl.Name
    ...
    ...
    TextBoxN.Value = 0
    End Sub
    Si je fais une MsgBox (TextBoxN), j'ai bien le message "TextBox10".
    Quelqu'un peut-il m'aider ?

    Cordialement

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour

    Pour te donner un idée de l’instanciation d'une variable control
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Ctl As Control
     
    Set Ctl = Me.ActiveControl
     
    Msgbox Ctl.Name

  3. #3
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    Merci beaucoup.

    J'ai maintenant un message d'erreur quand j'execute la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function TextBoxChange(CTL1 As Control)
     Select Case CTL1.Value
         Case ""
            CTL1.Value = 0
         Case 0 To 99
            Calcule_Tout
         Case Else
            CTL1.Value = 0
            MsgBox ("Caractère interdit !")
     End Select
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub TextBox10_Change()
      Dim CTL As Control
      Set CTL = Me.ActiveControl
      TextBoxChange (CTL)   'j'ai le message 424 objet requis
    End Sub
    Je ne peux pas vérifier la valeur de CTL dans une fonction ?

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Une fonction sert a retourner une information. La tienne ne retourne rien. Remplaces la par une procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub TextBoxChange(CTL1 As Control)
     Select Case CTL1.Value
         Case ""
            CTL1.Value = 0
         Case 0 To 99
            Calcule_Tout
         Case Else
            CTL1.Value = 0
            MsgBox ("Caractère interdit !")
     End Select
    End Sub
    Et l'appeler comme cela

  5. #5
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    Merci, ça fonctionne très bien, mais ce que je n'arrive toujours pas à trouver, c'est comment transformer une chaine de caractères en nom d'objet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a="Label"
    b="14"
    c= a & b 
     
    C.Caption="Ok"
    J'ai une erreur d'execution 404 (objet requis)

    Cordialement

  6. #6
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Bonjour,
    et bonjour Jérôme,

    Si tu es dans un USF

    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    a="Label"
    b="14"
     
    Me.Controls(a & b).Caption="Ok"
    Tu dis

    Bon courage

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

Discussions similaires

  1. [11g] Convertir une chaine en nom de colonne
    Par breizou dans le forum SQL
    Réponses: 6
    Dernier message: 09/09/2013, 11h35
  2. Convertir une chaine de caractère en nom de controle
    Par craesys dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/08/2008, 18h57
  3. Réponses: 6
    Dernier message: 14/06/2006, 15h27
  4. Convertir une chaine en format heure
    Par Lars dans le forum ASP
    Réponses: 3
    Dernier message: 24/05/2005, 11h44
  5. Convertir une chaine UTF8 en ISO-8859-1
    Par eods dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/08/2004, 16h57

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