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 :

comment désigner une combobox d'un userform à partir d'un module


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 23
    Par défaut comment désigner une combobox d'un userform à partir d'un module
    Bonjour à tous,
    après des recherches dans ce forum je n'arrive pas à trouver la réponse à mon petit problème :
    je souhaite pouvoir utiliser une même procédure dans plusieurs userform notamment pour initialiser une combobox . Je n'arrive pas à désigner en vba cette combobox, sachant que je transfère le nom de l'userform appelant à la procédure sous forme d'une variable "appelant"string public .
    j'ai essayé plusieurs déclarations dans le module du genre :

    Msforms.Combobox1(appelant).clear réponse " membre de méthode ou de données introuvable"
    ou Userform(appelant).combobox1.clear réponse "incompatibilité de type"
    ou MSForms(appelant).combobox1.Clear réponse "variable ou procédure attendue et non un projet"

    là je bloque ... si qq'un peut me dépanner
    Cordialement à tous les membres du forum

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Est-il si difficile de comprendre qu'un objet n'est pas une chaîne de caractères ?

    Voilà comment je vais te répondre. Par un exemple avec un bouton de commande placé sur un userform

    Appel depuis ailleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UserForm1.CommandButton1.BackColor = vbRed
    UserForm1.Show 0
    ou encore ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim F As UserForm, c As MSForms.CommandButton
    Set F = UserForm1
    Set c = F.CommandButton1
    c.BackColor = vbRed
    UserForm1.Show 0
    ou encore ainsi (via une procédure paramétrée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    agir UserForm1, UserForm1.CommandButton1
     
    Private Sub agir(F As Object, c As MSForms.CommandButton)
      c.BackColor = vbRed
      F.Show 0
    End Sub
    Entre autres. Comprends et adapte comme tu le souhaites ...

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 23
    Par défaut objet et zone de texte
    bonjour Unparia, d'abord merci d'avoir prêté attention à ma demande

    non à priori je ne confond pas, mais peut-être ai-je mal formulé ma question ?
    mon besoin est d'initialiser des userforms comprenant un combobox identique.
    Pour éviter de reproduire le code je souhaite mettre une procédure publique dans un module.
    Cette procédure doit pouvoir s'exécuter en sachant quel userform l'a appelé afin de nommer la bonne combobox pour faire un clear et recharger les items.
    C'est cette désignation paramétrée du combobox que je n'arrive pas à faire fonctionner.
    Donc je ne souhaite pas modifier la forme du combo mais intervenir sur son contenu.
    Dans le userform je sais faire, pas de pb .
    Cordialement et encore merci pour le coup de main

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Donc je ne souhaite pas modifier la forme du combo mais intervenir sur son contenu.
    Oui ? Et ? mon exemple était un exemple. Le mécanisme est le même, quelle que soit la propriété à modifier (couleur ou autre) !ù
    Pour éviter de reproduire le code je souhaite mettre une procédure publique dans un module.
    Hé bien --->> une procédure paramétrée déclarée Publique dans un module standard ! Où est le problème ?
    Cette procédure doit pouvoir s'exécuter en sachant quel userform l'a appelé afin de nommer la bonne combobox pour faire un clear et recharger les items.
    Hé bien ! --->> lui passer, parmi les paramètres que l'on veut passer, également celui de l' "appelant" ! Là non plus, je ne vois pas où est la difficulté ...

    Mais on va pouvoir être plous précis, sur la base d'autres précisions.
    Tu dis :
    Dans le userform je sais faire, pas de pb .
    Voyons ce que tu écrirais dans le userform lui-même. (code)
    Et montre-nous (en commentaire) quelle est la partie de ce code qui nécessite de savoir quel aurait été l' "appelant".

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 23
    Par défaut combobox commun
    bonjour,
    ci après la méthode que je comptais employer :
    code dans l'userform "totocréa", le combobox s'appelle Famille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public famillenew, appelant As String
      Public ws As Worksheet
     
      Private Sub UserForm_Initialize()
                ...... 
     
    '  ********  initialisation de la liste des familles  --------
        Set ws = Sheets("Paramètres")
        initfamille (appelant)
    dans le module

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub initfamille(appelant)
    Application.EnableEvents = False
     
       Lignemax = ws.Range("F" & Rows.Count).End(xlUp).Row
        ......
       UserForms(appelant).Famille.Clear
    ...---> là je bloque (voir mon 1er message)

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/10/2015, 21h42
  2. [XL-2007] Alimentation de la ComboBox d'un UserForm à partir d'une plage de donnée
    Par Loukassit0 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/02/2012, 18h22
  3. [XL-2003] Affichage de donnes a partir d'une combobox dans un UserForm
    Par natab dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/07/2011, 13h37
  4. Réponses: 4
    Dernier message: 04/05/2009, 12h12
  5. comment alimenter une combobox à partir d'une requete
    Par joe12260 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/02/2009, 16h21

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