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 :

modifier la position d'un controle dans un userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 66
    Par défaut modifier la position d'un controle dans un userform
    Bonjour,
    Je souhaitais déplacer des controles dans un userform à l'aide de la procédure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub psRecalcPos()
        Dim ctl As Control
        Dim lTop As Long
        For Each ctl In form_Entete.Controls
            If ctl.TabIndex >= 14 Then
                lTop = ctl.Top + 16
                ctl.Top = lTop
            End If
        Next
    End Sub
    Cà ne marche pas ! , aucun controle n'est déplacé.
    Il semble que çà ne marche pas non plus quand je mets une valeur en dur : Pourtant si je trace le contenu de ctl.top après mise à jour, il contient bien la valeur que j'ai affecté.
    Faut-il effectuer une action complémentaire pour que le changement soit réellement appliqué ?
    (Je peux évidemment faire tous les déplacements manellement, mais j'aimerais comprendre)
    Merci.
    Excel 2003 SP2

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 66
    Par défaut Complément d'info
    Je viens de tester le code en éxécution dans le formulaire et il fonctionne. Par contre les nouvelles positions définies ne sont pas sauvegardées définitivement (dans le formulaire en mode design par exemple)

    J'ai donc essayé ce nouveau code en m'inspirant d'un sujet du tutoriel UserForm de SilkyRoad
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub psRecalcPos()
        Dim idx As Long
        Dim ctl As Object
        Dim lTop As Long
        Do While idx < form_Entete.Controls.Count
            Set ctl = form_Entete.Controls.Item(idx)
            If ctl.Top >= 200 Then
                lTop = ctl.Top + 16
                'Change la valeur définitivement
                ThisWorkbook.VBProject.VBComponents("form_Entete").Controls(idx).Properties("top") = lTop
            End If
            idx = idx + 1
        Loop
    End Sub
    (sélection par rapport à top car topindex n'est pas supporté dans object)
    et j'obtiens
    erreur d'exécution '1004'
    L'accès par programme au projet Visual Basic n'est pas fiable

  3. #3
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    SAlut
    Le fait que les position ne soient pas conservées ne vient pas d'un problème dans ton code.
    Si tu souhaite conserver ces positions, il faut stocker leur valeur quelque part dans ton tableau excel et aller les chercher au lancement de ta UF pour replacer tes composants.
    Quand tu place un composant en mode design , il sera toujours a cette place la au lancement de la UF, c'est comme quand tu rempli un champs text en mode run, si tu ferme (décharge,Unload) ta UF et que tu la rouvre (recharge, Load), l'edit sera vide de nouveau.

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 66
    Par défaut
    pour cette réponse.
    Je conserve cette solution pour les repositionnements "dynamiques" en cours d'exécution, et je vais modifier mon "design" à la mano.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/05/2013, 14h04
  2. [Débutant] Modifier la position de la page dans la fenêtre de l'application WORD
    Par veens777 dans le forum VB.NET
    Réponses: 0
    Dernier message: 06/05/2013, 01h34
  3. modifier dynamiquement un ou plusieurs controls dans une fenêtre
    Par boubou38 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 13/01/2012, 10h58
  4. modifier la position d'une image dans une galerie
    Par VIRGINIE87 dans le forum Langage
    Réponses: 8
    Dernier message: 17/02/2010, 23h53
  5. Est il possible de modifier la position d'une scroll dans iframe
    Par Mho37 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/11/2008, 11h05

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