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 :

Utiliser des données saisies comme nom d'objet


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 120
    Points : 77
    Points
    77
    Par défaut Utiliser des données saisies comme nom d'objet
    Bonjour à tous,

    Je souhaite manipuler des objets dont le nom est saisi dans une feuille excel.
    Exemple :
    J'ai une feuille avec en A1 : "Formgen.CommandButton2.Enabled" et en A2 : "True".
    Je souhaite pouvoir définir la propriété enabled à true en écrivant un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1") = Range("A2")
    mais évidemment ça ne fonctionne pas.

    Avez vous une idée ?

    Merci

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir,

    Une piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub CommandButton1_Click()
     
        'en A1 = CommandButton2
        'en A2 = False
        Me.Controls(Range("A1").Value).Enabled = Range("A2").Value
     
    End Sub
    par contre, tu ne peux pas utiliser le nom de la propriété dans un Range comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub CommandButton1_Click()
     
        'en A1 = CommandButton1
        'en A2 = False
        'en A3 = Enabled <-- ceci ne fonctionne pas !
        Me.Controls(Range("A1").Value).Range("A3").Value = Range("A2").Value
     
    End Sub
    Hervé.

  3. #3
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Tchebichef, Hervé, bonjour le forum,

    Mêmes remarques qu'Hervé... Mais comme dans l'exemple A1 contient aussi l'UserForm, par exemple UserForm1.CommandButton1, je me suis cassé les dents avec ce code qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim U As UserForm
    Dim CTRL As Control
     
    Set U = Split(Range("A1"), ".")(0)
    Set CTRL = U.Controls(Split(Range("A1"), ".")(1))
    Si quelqu'un a une piste je suis preneur...
    J'ai essayé de rentrer dans VBE mais j'ai le message suivant :
    Erreur d'exécution : '1004': L'accès par programme au projet Visual Basic n'est pas fiable. (Excel 2010 64 bits - Seven pro 64 bits)
    À plus,

    Thauthème

    Je suis Charlie

  4. #4
    Invité
    Invité(e)
    Par défaut
    Split retourn un array pas UF!
    Il faut faire comme controls mais avec userforms
    Dernière modification par AlainTech ; 07/09/2014 à 14h30. Motif: Suppression de la citation inutile

  5. #5
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    Merci Robert pour ta réponse. J'avais essayé mais le problème est que UserForms renvoie la collection des Userforms chargés (Load) et que dans le cas de Tchebichef il ne l'est peut-être pas...
    À plus,

    Thauthème

    Je suis Charlie

  6. #6
    Invité
    Invité(e)
    Par défaut Désolé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set uf = UserForms.Add("UserForm1")

  7. #7
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    Merci encore une fois Robert pour ta réponse. Je n'ai plus de bug mais ça ne fonctionne pas comme j'aurais pensé. Regarde, si tu as le temps, le petit fichier exemple :
    Fichiers attachés Fichiers attachés
    À plus,

    Thauthème

    Je suis Charlie

  8. #8
    Invité
    Invité(e)
    Par défaut
    je regarderai mais là on est en train de polluer le poste de Tchebichef !
    Dernière modification par AlainTech ; 07/09/2014 à 14h31. Motif: Suppression de la citation inutile

  9. #9
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    Heu... Pas sûr, je pense que la réponse devrait aussi l'intéresser, puisqu'il est à l'origine de ma question.
    À plus,

    Thauthème

    Je suis Charlie

  10. #10
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub Macro1()
    Dim U As Object
    Dim CTRL As Object
    Set U = UserForms.Add(Split(Range("A1"), ".")(0))
    Set CTRL = U.Controls(Split(Range("A1"), ".")(1))
    CTRL.Caption = "Coucou"
    Debug.Print CTRL.Name
    Debug.Print UserForm1.CommandButton1.Caption
    CTRL.Visible = Range("B1").Value
    U.Show
    End Sub

  11. #11
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonsoir le fil, bonsoir le forum,

    Woaw ! Merci beaucoup Robert... Grâce à toi ça marche !
    À plus,

    Thauthème

    Je suis Charlie

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/01/2015, 21h47
  2. utiliser une variable comme nom d'objet! est-ce possible?
    Par Rusty2096 dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 07/06/2009, 15h33
  3. Réponses: 1
    Dernier message: 12/12/2007, 10h35
  4. Utiliser des variables dans les noms d'objet
    Par Torkan dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/03/2007, 23h54
  5. Exposition d'un objet en utilisant des données externes
    Par ocroquette dans le forum OpenGL
    Réponses: 2
    Dernier message: 21/11/2005, 21h49

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