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 :

Mettre un userform et ses controls sur tout l'écran


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 106
    Points : 40
    Points
    40
    Par défaut Mettre un userform et ses controls sur tout l'écran
    Bonjour,

    J'ai un userform avec plusieurs contrôle différents (boutton, combobox etc...)

    je souhaite que le userform prenne la totalité de l'écran de l'utilisateur et que les contrôles associés s'ajuste automatiquement.

    Voici le code utiliser pour le moment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Private Sub UserForm_Initialize()
    Me.Width = Application.Width
    Me.Height = Application.Height
    End Sub
    mais il faut aussi régler les dimensions des divers contrôles et la je sèche ...

    Merci de votre aide

  2. #2
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    bah tu fait la meme chose que pour Me.

    Par exemple si tu as une combobox tu peut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Combobox1.Width = Application.Width
    Combobox1.Height = Application.Height
    le truc c'est que pr chaque truc tu va devoir adapter par exmple pr la combobox tu fera quelque chose de ce genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ComboBox1.Width = Application.Width - 40
    De même des qu'il s'agit de texte a part augmenter la police si tu augmente juste la zone texte ca ne fera pas de différence.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 106
    Points : 40
    Points
    40
    Par défaut
    J'avais penser à ca mais c'est irréalisable au vue du nombre de contrôle ....
    Je me dirigeait plus vers une variable qui serait égale à tous les contrôle
    du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim ctl as control
    ctl.width = ......
    ct.height = ......

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Une approximation
    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
    Private Sub UserForm_Initialize()
    Dim oldH As Double, oldL As Double, appH As Double, appL As Double
    Dim echH As Long, echV As Long
    Dim ctr As Control
     
    oldH = Me.Height: oldL = Me.Width
    appH = Application.Height - 5: appL = Application.Width - 10
    echH = appL / oldL: echV = appH / oldH
    Me.Height = appH
    Me.Width = appL
    For Each ctr In Me.Controls
        ctr.Left = echH * ctr.Left
        ctr.Width = echH * ctr.Width
        ctr.Top = echV * ctr.Top
    Next ctr
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 106
    Points : 40
    Points
    40
    Par défaut
    Merci de vous intéressez à mon post.
    Le code donné fonctionne partiellement. En effet, la taille d'un commandbutton s'ajuste mais le soucis se pose sur le texte des combobox et sur les optionbutton

    Il y aurait-il une astuce ? on atteint peut être les limites d'un userform à être dynamique

    pour la police, cela marche avec la propriété .fontsize (merci papou-net)
    reste plus qu'à trouver pour les optionbutton

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heuh!!!
    bonjour a tous


    si j'ai bien conpris le sujet c'est d'avoir le userform en plein ecran
    alors effectivement

    le "application.width et left vont te redimensionner le userform
    a la taille de l'application a une condition c'est que celle ci soit aussi en plein ecran sinon tu va avoir ton userform a la meme taille que la page excel

    il y a plusieur solution

    la premiere sans faire apel au apis c'est de metre l'aaplication en plen ecran avant de loader ton userform et de la remetre a l'initial a la fermeture du userform
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sub mon_userform()
    application.displayfullscreen=true
    userform1.show 0
    end sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ensuite a la fermeture du userform' donc dans son module
     
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    application.displayfullscreen=false
    End Sub
    ensuite dautres solutions se font en faisant apel au apis et c'est deja plus complexe

    ensuite si tu a un usf a la base qui ne mesure pas les meme dimension que l'ecran forcement tes controls ne vont plus etre placés corectement en tout ca eux ne changeront pas

    il te faudra donc la faire apel a une formule dans une boucle qui bouclera sur tout tes controls dailleur l'exemple de mercatog va dans mon sens

    mais la encore il va y avoir un probleme c'est que tout tes controls ne sont pas de la meme dimensions parti de la ca va etre dur qu'il ai les meme proportions qu'au depart apres le redimensionnement

    je te donne le lien de mon dernier post a se sujet dans les contributions
    tu n'a cas copier les deux code dans leur module respectif
    et ton userform sera redimentionnable avec la souris comme toute fenetres (windows)
    et les controls sont automatiquement et proportionnellement redimentionnés

    http://www.developpez.net/forums/d93...rols-userform/

    si ca peut servir

    au plaisir
    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

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    ajuste aussi le font
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each ctr In Me.Controls
        ctr.Left = echH * ctr.Left
        ctr.Width = echH * ctr.Width
        ctr.Top = echV * ctr.Top
        ctr.Height = echV * ctr.Height
        ctr.Font.Size = echV * ctr.Font.Size
    Next ctr
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 106
    Points : 40
    Points
    40
    Par défaut
    Bonjour,

    Effectivement cela devient plus complexe qu'il n'y parait, et ta solution de proposé de "zoomé" est très intéressante.

    Merci pour l'info et lien.

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re

    l'avantage de ma methode c'est que tu n'a pas besoins de nommer quelque controls que ce soit le module s'en charge tout seul et pour le font ca yest aussi en fet j'ai utilisé le meme procedé que mercatog mais le tout dans un seul module

    et comme les controls n'ont pas les meme proportions dans ce meme module
    je memorise les proportions de chaques controls par raport au userform des le depart
    parti de la dans le resize de l userform j'applique une formule tres simple

    nouvelle largeur control =nouvelle largeur userform/( anciennelargeuruserform/ancienne largeur controls) enfin tout est expliqué dans le lien que je t'ai donné

    tu ajoute un module standard dans ton fichier et tu copie tout simplement le code destiné a ce module et dans le module du userform tu copie celui qui lui est destiné tu n'a rien d'autre a faire

    j'avais fais ce code en vu d'en faire un xla pour tout mes fichiers donc tu n'a pas besoins de le retouché il marchera tres bien avec ton fichier

    maintenant il est vrai que la destination de se fichier etait de pouvoir le redimentionner avec la souris et non pas en plein ecran mais que cela te tienne

    sachant que la largeur de luserform plein ecran est egale a:

    la largeur de ta resolution de ton ecran /1.333333333333333

    et pareil pour la hauteur

    ilva etre tres simple pour toi de connaitre la dimention de ton userform

    si il faut je te fairais un petit exemple tout simple


    au plaisir et bon courage
    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

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 106
    Points : 40
    Points
    40
    Par défaut
    Je vais lire tout cela, pour bien comprendre également la méthode employé et ne pas "copier bêtement".

    Encore merci
    Au plaisir

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    si tu a besoins de plus d'explications je me fairais un plaisir de t'aider
    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. [Débutant] imprimer un control sur toute une page A4 avec print dialog
    Par Anthony_C dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 16/06/2014, 11h00
  2. Réponses: 2
    Dernier message: 08/09/2009, 23h08
  3. Afficher controle sur toute la fenetre
    Par Miko95 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/08/2009, 13h22
  4. Ajustement d'une forme sur tout l'écran
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 21/06/2005, 09h49
  5. [CSS] Background-image étirée sur tout l'écran
    Par Amnesiak dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 04/03/2005, 12h24

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