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 retrouver le nom du contrôle multipage où est stocké mon contrôle [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 164
    Points
    164
    Par défaut Comment retrouver le nom du contrôle multipage où est stocké mon contrôle
    Bonjour

    J'ai dans une frame un contrôle de type multipage.
    Dans chaque onglet, j'ai des DTpicker qui gère des dates.

    Pour initialiser ma boite avec des informations vierges, je parcours l'ensemble des contrôles et ainsi je peux mettre à jour les données.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub Init_control(Wparent As Control)
    
        Dim LCtrl As Control
        Dim LCBox As ComboBox
        Dim Lmatch As Boolean
        Dim Ldate As String
        
        For Each LCtrl In Wparent.Controls
                 ....
                
                 If TypeOf LCtrl Is MSForms.ComboBox Then
                    If .... Then
                        Set LCBox = LCtrl
                        Lmatch = LCBox.MatchRequired
                        LCBox.MatchRequired = False
                        LCtrl.Value = ""
                        LCBox.Enabled = True
                        LCBox.MatchRequired = Lmatch
                        Set LCBox = Nothing
                    End If
                 ElseIf TypeOf LCtrl Is MSForms.TextBox Then
                    If ... Then
                         LCtrl.Value = ""
                 ElseIf TypeOf LCtrl Is MSForms.Label Then
                        If .... Then
                           LCtrl.Caption = ""
                        End If
                 ElseIf LCtrl.Tag = "DATE" Then
                    If ...  Then
                       LCtrl.Value = Now()  ' <= Le problème est ici quand la page n'est pas active.
                       LCtrl.Enabled = True
                    End If
                 End If
        Next LCtrl
    End Sub
    Le souci survient lorsque j'ai un DTPicker sur un page non visible, dans ce cas là il y a une erreur remontée par le code VBA.

    Je souhaite donc savoir s'il est possible de trouver le parent d'un contrôle et ainsi pouvoir vérifier son état.

    D'avance merci pour votre aide ou vos pistes de réflexion.

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Bonjour
    as-tu essayé d'utiliser la propriété Name de la propriété Parent du contrôle dont il s'agit ?

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 164
    Points
    164
    Par défaut
    Bonjour

    Merci pour ce retour mais je ne trouve pas la propriété parent dans les objets que je manipule.

    Même sur une comboBox il n'y a pas la propriété parent

    Où alors j'ai loupé une étape.

    A+

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Merci pour ce retour mais je ne trouve pas la propriété parent dans les objets que je manipule.
    Et pour cause. Cette propriété ne figure pas dans celles affichées en mode création. Pourquoi y apparaîtrait-elle dans les propriétés alors qu'il est par exemple clair que tarzan est le fils de la maman de tarzan
    Elle est bel et bien présente et accessible en mode exécution.

    J'ai par contre de grandes difficultés à comprendre le sens de ta démarche. Elle n'en aurait un que si, en mode exécution (et via une fonction de l'Api de Windows), tu as "transporté" le contrôle d'un parent à l'autre !
    Un objet qui en cache un autre n'est pas pour autant le parent de cet objet.

  5. #5
    Membre habitué
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Janvier 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2007
    Messages : 255
    Points : 164
    Points
    164
    Par défaut
    ok autant pour moi.

    il fallait que je passe par un objet intermédiaire pour que la propriété soit utilisable.

    Merci pour le réponse et je mets le bout de code qui me sauve ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Dim Lparent As Control
     
        Set Lparent = LCtrl.Parent
        If TypeOf Lparent Is MSForms.Page Then
            Lparent.Visible = True
        End If
        Set Lparent = Nothing
     
       ' Et maintenant ma page est à coup sûr visible :)

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 11/10/2018, 12h17
  2. Réponses: 1
    Dernier message: 23/07/2011, 13h13
  3. Réponses: 0
    Dernier message: 29/07/2009, 12h07
  4. Réponses: 17
    Dernier message: 03/10/2005, 11h16

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