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 une variable comme nom de controle ActiveX


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Par défaut Passer une variable comme nom de controle ActiveX
    Bonjour.

    J’éprouve des difficultés a coder une partie de mon programme. J'aimerais pouvoir copier la liste complète d'une combobox pour l'attribuer a une autre combobox.
    Je peux le faire via ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("test").ComboBox2.List = Sheets("test").ComboBox1.List
    Mais ce que j'aimerais bien, c'est qu'a la place de donner au compileur le nom de mes objets (combobox1,combobox2,...), je puisse utiliser des variables dans lesquelles sont contenues le nom de mes combobox (ex nomShape = "combobox" & i ; testCombo = "combobox" & i + 1).

    Donc j'arrive a un bout de code qui ressemble a ceci, mais qui ne marche pas du tout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Change()
        i = 1
        nomShape = "combobox" & i
        testCombo = "combobox" & i +1
        Sheets("test").Activate
        Sheets("test").(nomShape).List = Sheets("test").(testCombo).List
    End Sub
    Je vous le dis de suite, le compileur n'aime pas (rien que la dernière ligne est en rouge) mais je n'ai pas d'autre idée pour utiliser ces variables pour cibler mes combobox. Est ce que quelqu'un aurait une syntaxe différente a me proposer?

    D'avance merci!

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    et bien je te le dis tout de suite aussi c'est normal ta ligne en rouge (jaune l'ors de l'execution)

    tout d'abords est tu sur que tes comboboxs soient des controls activx ou des controls formulaire?????

    au cas ou ce serait bien des activX
    les activX on les attrape par la collection oleobjects
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Change()
        i = 1
        nomShape = "combobox" & i
        testCombo = "combobox" & i +1
        Sheets("test").Activate
        Sheets("test").oleobjects(nomShape).List = Sheets("test").oleobjects(testCombo).List
    End Sub
    
    
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert confirmé
    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
    Par défaut
    Bonjour,

    Si les ComboBox sont issus de la barre d'outils "Formulaire" :
    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
     
    Sub Change()
     
        Dim nomShape As String
        Dim testCombo As String
        Dim I As Integer
     
        I = 1
        nomShape = "combobox" & I
        testCombo = "combobox" & I + 1
     
        With Sheets("test")
     
            .Shapes(testCombo).ControlFormat.List = .Shapes(nomShape).ControlFormat.List
     
        End With
     
    End Sub

  4. #4
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Par défaut
    Rebonjour.

    Tout d'abord merci pour votre aide!

    Je confirme que je travaille bien sur des contrôles ActiveX.

    Visiblement je ne suis pas doué car je n'ai pas réussi a faire tourner ton bout de code en ajoutant cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("test").oleobjects(nomShape).List = Sheets("test").oleobjects(testCombo).List
    Par contre cela m'a donne de nouveaux indices et je suis parvenu a faire ce que je souhaitais grâce a a une modification de cette dernière ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set myDoc = ThisWorkbook.Sheets("test")
    myDoc.OLEObjects(nomShape).Object.list = myDoc.OLEObjects(testCombo).Object.list
    Par curiosité, j'ai aussi teste le code de Theze. Il marche correctement ^^.

    Encore un tout grand merci, vous me retirez une épine du pied, 2 semaines que je me casse les dents sur cette ligne!

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

Discussions similaires

  1. [ProC][SQL] Utiliser une variable comme nom de curseur
    Par adiGuba dans le forum Interfaces de programmation
    Réponses: 1
    Dernier message: 06/12/2006, 11h55
  2. Utiliser une variable comme nom de fichier
    Par lo00_ dans le forum MATLAB
    Réponses: 1
    Dernier message: 28/06/2006, 13h57
  3. donner la valeur d'une variable comme nom de table
    Par cladsam dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/10/2005, 15h16
  4. [Custom Tags 1.2] Passer une variable comme valeur d'attribut d'un tag jsp
    Par Pi2 dans le forum Taglibs
    Réponses: 7
    Dernier message: 16/09/2005, 14h44
  5. [curseurs] utiliser une variable comme nom de champ
    Par Christian31 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2005, 14h12

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