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 :

Nom de l'userform actif en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 3
    Par défaut Nom de l'userform actif en VBA
    Bonjour,
    je crée plusieurs userforms de manière dynamique avec plusieurs contrôles dans les différents userforms.
    Mon soucis , c'est que je ne sais pas retrouver d'une façon informatique le nom de l'usf.

    Par exemple : dans chaque userform (usf1, usf2,usf3,usf4) j'ai un combobox (cmd1,cmd2,cmd3,cmcd4) et lorsque je clique sur l'un des combobox, l'userform en question s'active (barre de titre change de couleur) et je ne sais pas récupérer son nom par une instruction. Comment pourrai-je l'obtenir ?

    Avez-vous une idée ?

    Merci

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Comme le code activé par le ComboBox devrait être situé dans le module du UserForm qui le contient, l'expression:

    devrait renvoyer le nom du UserForm en question.

  3. #3
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonsoir,

    Je ne trouve pas ton énoncé très clair :

    Citation Envoyé par Beginner37 Voir le message
    Lorsque je clique sur l'un des combobox, l'userform en question s'active
    Si un clic active un UserForm précis, comment est-il possible que déterminer le nom de celui-ci pose un problème ? Pour l’activer, il faut bien être capable d’utiliser ce nom ou une propriété quelconque du UserForm concerné. A partir de là, on doit pouvoir en retrouver le nom !

    Tout est créé de façon dynamique, y compris donc le code permettant qu’un clic sur le Combo active le UserForm. Quel est ce code, ou comment est-il généré.

    Enfin tu parles de Combo nommé cmd1, cmd2. Le nom évoque plutôt des CommandButtons.

    S’il s'agit de Combo, que contiennent-ils : en principe une liste, et quelle est la relation entre l’élement choisi dans la liste et le UserForm activé ?

  4. #4
    Membre éclairé Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Par défaut re
    bonjour,
    je dirai Userform(numero). caption
    ou userform(numero).name

    tom

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    En plus des solutions proposées, il y a aussi la propriété Parent disponible pour les contrôles
    envoie le nom du userform qui contient le contrôle ComboBox1
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 34
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Bonjour

    En plus des solutions proposées, il y a aussi la propriété Parent disponible pour les contrôles
    envoie le nom du userform qui contient le contrôle ComboBox1
    Bonjour,
    Cela ne marche pas si le contrôle est déjà inclus dans une autre structure genre Page1 (de MultiPage).
    C'est vrai que si l'on envoie l'objet Userform en paramètre d'entrée d'un Sub ou Function, l'appel de son nom ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Sub maRoutine(UF As UserForm)
       MsgBox "Nom du Userform transmis : " & UF.Name
    end Sub
    Ce code déclenche l'erreur 438 ("Propriété ou méthode non gérée par cet objet").
    Il faudrait tester si le nom du parent de l'objet est l'une de ces sous structure, et remonter au parent suivant (tant que l'on est dans ce cas de sous structure).
    @+
    Paul

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par paoloadv Voir le message
    C'est vrai que si l'on envoie l'objet Userform en paramètre d'entrée d'un Sub ou Function, l'appel de son nom ne marche pas:
    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim usf As New UserForm1
      Call maRoutine(usf)
    End Sub
    Public Sub maRoutine(UF As Object)
       MsgBox "Nom du Userform transmis : " & UF.Name
    End Sub

  8. #8
    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
    bonjour
    Attention !!!! avec le ".parent"!!!!
    si la combobox est dans une frame,un multipage ou autre container

    le parent retourné sera le contenair

    il faut remonter jusqu'au userform

    edit

    j'en ai retrouvé une
    exemple
    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
    19
    20
    21
    22
    Private Sub hhh_Click()
        Set u = forme(hhh)
        MsgBox u.Name
    End Sub
    '
    Private Sub UserForm_Activate()
        hhh.List = Array(1, 2, 3, 4)
    End Sub
    '
    Private Function forme(ctrl As Object) As Object
        Dim u As Object
        Set u = ctrl.Parent
        Do
            Select Case True
            Case TypeName(u) = "Frame": Set u = u.Parent
            Case TypeName(u) = "Page": Set u = u.Parent.Parent
                'case ' autre container a incrémenter ici!
            Case Else: Exit Do
            End Select
        Loop
        Set forme = u
    End Function
    quelque soit le parent container de la combobox c'est le userform 1er parent qui sera retourné
    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

Discussions similaires

  1. nom d'un UserForm fonction d'une valeur case
    Par fantii dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/01/2008, 18h35
  2. Récupérer le Nom de l'objet Actif
    Par Freiya dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 17/12/2007, 18h36
  3. Récupérer le nom du sous-formaire actif
    Par Le Capitaine dans le forum IHM
    Réponses: 4
    Dernier message: 29/01/2007, 23h30
  4. Nom et Chemin d'un fichier VBA Excel
    Par dorschner dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/12/2006, 18h29
  5. Forcer le nom d'un graphique excel en vba
    Par NiKoS29 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/01/2006, 17h25

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