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

VBA Discussion :

Redimensionnement automatique des controls dans un userform


Sujet :

VBA

  1. #1
    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 Redimensionnement automatique des controls dans un userform
    bonjour a tous
    apres avoir galéré a essayé de comprendre les exemples de userform a redimentionnement automatique

    j'ai trouvé une solution qui ma fois me semble tellement simple avec si peu de code que je pense qu'elle a sa place dans les sources

    j'ai utilisé la fonction redim preserve pour memoriséer les coordonnées et la taille des controls dans l'userform

    j'utilise l' api user32 pour rendre l'elasticité q'ont toutes les fenetres windows et les deux bouton manquants cruellement au cadre des userforms(reduire,et minimiser) ce qui me permet de redimensionner l'userform avec la souris
    et les trois boutons (reduire,minimiser,fermer)
    pour ce qui ont windows seven le aero snake marche aussi
    bon jusque la rien de nouveau

    ensuite dans la fonction resize de l'userform je boucle sur tout les controls
    de l'userform
    et je leur applique une operation tres simples voici le code du resize
    il faut savoir que largeur_usf et hauteur_usf sont des variables public qui sont memorisé a l'initialise de l'userform

    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
     
    Private Sub UserForm_Resize()
    On Error Resume Next
    i = 0
    For Each ctrl In Me.Controls
    i = i + 1
    'largeure du control=largeure usf actuelle divisée par entre parenthezes  largeur usf de depart divisée par largeur de depart du control
    ctrl.Width = Me.Width / (largeure_usf / largeurbouton(i))
    'hauteur du control = hauteur usf actuelle divisée par entre parenthezes  hauteur usf de depart divisée par hauteur de depart du control
    ctrl.Height = Me.Height / (hauteure_usf / hauteurbouton(i))
    'le left du control = largeur usf actuelle divisée par entre parenthezes  largeur usf de depart divisée par le left de depart du control
    ctrl.Left = Me.Width / (largeure_usf / leftbouton(i))
    'le top du control = hauteur usf actuelle divisée par entre parenthezes  hauteur usf de depart divisée par le top de depart du control
    ctrl.Top = Me.Height / (hauteure_usf / topbouton(i))
    'le top du control = hauteur usf actuelle divisée par entre parenthezes  hauteur usf de depart divisée par le top de depart du control
    ctrl.FontSize = ((Me.Height + Me.Width) / 8) / (fontbouton * 2)
    Next
    largeur = Me.Width  '////////////////////////////////////////////
                        '///affiche les dimensions dans les textbox//
    hauteur = Me.Height '////////////////////////////////////////////
     
    Me.Repaint 'repeint le userform pour effacer les traces des anciens emplacement des control(du a la puissance de la carte graphique)
    End Sub
    si on eleve les lignes vertes qui me servent a expliquer les fonctions
    vous verrez qu'il ne reste pas beaucoup de code hihihihi!!!

    je vous laisse le soin de juger
    je suis pas contre des ameliorations si le coeur vous en dis bien que le sujet a été traité tant de fois

    je met le fichier exemple avec.....
    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
      1  2

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut

    Je viens de tester ton fichier, excellent travail

    Philippe
      0  0

  3. #3
    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
    merci depuis que je me suis inscrit pour pouvoir creer mes propre application pour mon entreprise je me suis passionné pour le vba et j'ai laisser carément tomber le html et le vbs

    en tout cas si j'ai progressé c'est grasse a dvp un site exelent pas facile avec les debutants mais en tout cas ca marche


    il me manque une seule chose dans ce fichier

    c'est de pouvoir (savoir surtout) declarer le nom de l'userform en variable de type string et toujour en public a fin de me servir des la meme macro(determine) pour nimporte quel userform
    ainsi en faire un xla
    et hop encore moins de code hihihihi!!! et tout mes userforms pourront avoir ces options en appelant simplement le la macro du xla aurait tu une idée sur la question j'ai bien essayé plein de truc mais je n'y suis pas arrivé

    ce petit fichier pourrait etre un addins interressant a mon avis



    merci....

    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
      0  2

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    salut

    Quelque-chose doit m'échapper (probablement) .
    je ne comprends pas la raison pour laquelle n'est pas tout simplement utilisée la propriété Zoom de l'userform. Elle est faite pour cela et permet non seulement d'ajuster la taille et la position des contrôles, mais également celle des polices de caractères.
    Il suffit dès lors ;
    - de relever les dimensions de l'écran de la machine de développement (et de les mémoriser en mode création)
    - de relever les dimensions (au démarrage) de l'écran de la machine cliente
    - d'en déduire un coefficient correcteur K à appliquer aux propriétés Top, Left, Width et height de l'UserForm
    - d'écrire (exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
      k = 0.7
      Me.Zoom = k * 100
      Me.Move Me.Left * k, Me.Top * k, Me.Width * k, Me.Height * k
    End Sub
    une autre manière de calculer K est plus astucieuse (car corrige à la fois en fonction des dimensions de l'écran et de la résolution en vigueur) et consiste :
    - à relever la position et la taille relatives (pourcentages) de l'userform sur la machine de développement, ainsi qu'une seule, à son choix, de ces données, en valeur absolue (et mémoriser en dur)
    - à relever, au démarrage sur la machine cliente, les dimensions de l'écran et appliquer à l'userform la position et la taille relatives (pourcentages mémorisés)
    - calculer le K correctif constaté
    - l'appliquer comme montré plus haut.

    Le principe à appliquer serait très sensiblement le même (même méthode mêmes calculs, mais "in vivo") dans le cas d'adaptation à une réduction des dimensions de l'userform, par code direct ou par "poignées" rajoutées par code.
      0  1

  5. #5
    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
    bonjour

    je ne connais pas la fonction zoom
    je vais essayé ton procédé si ca marche
    purée de purée yen a un qui a trouver un code plus leger hihihihihi!!!!


    au plaisir .....

    et puis j'oubliais


    0.7 n'est certainement pas bon puisque la resolution en vigeur c'est
    taille= resolution*0.75
    ou
    taille= resolution/1.333333333333333

    enfin cela dis je vais potassé ton idée



    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
      0  2

  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 re
    ok je revien donc

    ta solution peut etre interressante l'ors de l'initialyse de l'userform
    pour avoir l'userform plein ecran directement a la resolution de l'ecran
    apres ca aucun interret dans le sens ou le redimentionnement dans mon cas est aleatoire puisque je me sert de l api user 32 pour recuperer l'elasticité des fenetres windows avec la souris


    voila 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
      0  2

  7. #7
    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
    apres test

    on est loin de la pretention esconté de ton code, bien que pourtant la formule est bien pensée

    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
      0  2

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    salut

    montre ce que tu as écrit pour utiliser Zoom. J'interviendrai alors.
      0  1

  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
    hihihi!!!

    regarde un peu ce que ca donne pour avoir mon userform plen ecran avec mon portable au depart

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub UserForm_Initialize()
     
      k = 2.93
      Me.Zoom = k * 100
      Me.Move Me.Left * k, Me.Top * k, Me.Width * (k * 1.86), Me.Height * k
    TextBox1 = Me.Width
     
    End Sub
    resultat des courses rien que pour trouver 1.86 qui correspond au multiplicateur de la hauteur pour trouver la largeur ca fait deja un inconnu il faut deja faire apel au api

    sachant que mon exemple que j'ai fourni avec l api user 32 ca se fait automatiquement


    toutca toutca pour dire que si je veux appliquer ta formule je vais bien plus coder que dans mon exemple

    mais ta formule est interessante quand meme
    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
      0  2

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    mais, ami :
    - tout est dans la détermination de k
    - il te faut bien évidemment faire appel à plusieurs fonctions de l'Api de Windows
    - oui : le code final (fonctions de l'Api incluses) sera assez (pourra paraître assez) fastidieux. Il sera mis dans un module, une fois pour toutes, mais :
    a) - oui : le résultat sera toujours parfait, barre de titre incluse et toutes les polices avec (il te faut y penser)
    b) - tous les contrôles seront également redimensionnés ( TOUS ) et repositionnés comme il le faut, etc...
    En un mot : c'est ce que ferait un resizer
    on pourrait d'ailleurs créer un usercontrol (ocx) et alors : l'insérer simplement sur l'userform et (silencieusement) il ferait tout ce travail-là, sans autre code que le sien propre.
    Voilà !
    Mais je te laisse maintenant là à moins que tu n'aies envie d'aller plus loin et dans un tel cas et seulement si tu t'en sens l'envie : j'accepterais d'y aller pas à pas avec toi.
    Amitiés.
      0  2

  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
    je suis tout ouie

    car effectivement si dès le depart on arrive à determiner lek pour le me.width
    et un autre k pour le me.height

    car ta solution de départ redimensionne le width de la même manière que le height ce qui est inutile finalement puisque 4/3 pour l'ecran classique et 16.9eme ou 21.9eme ect. par definition n'ont pas la même dimension


    donc resultat
    il faut calculer par les api le k1 et k2 de facon à respecter les proportions de l'ecran

    et ça c'est une autre paire de manches

    enfin meme si on y arrive je suis pas sur qu'il y ait moins de code à la fin que le code que j'ai deposé

    mais je reste interessé

    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
      0  1

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    mais je reste interessé
    Sazlut

    après réflexion, je pense que je me suis "planté". N'en parlons donc plus.
    Bravo pour ton travail intéressant.
      1  1

  13. #13
    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
    bonjour a tous

    et voila apres avoir un peu buché sur la question j' ai fini par trouver

    j'ai transformer la partie utilisant les api pour le redimentionnement dabors en module standard et ensuite en xla comme promi

    toujour le meme principe j'ai simplement ajouter le nom de l'userform en variable objet et en public dans le module standard a l'activation de l'userform
    la variable prend le nom de l'userform

    apelle la routine "determine" qui memorise les propriete des controls et calcule l'operateur qui va servir a determiner leur height et width respectif
    et dans le resize de l'userform apelle la routine "redimentionnement" qui va diviser le userform height et width actuel par les operateurs precedement enregistrés enfin c'est encore plus simple que la premiere version livrée un peu plus haut

    sans pretention aucunne il serait bien de placer ce xla dans les sources

    en plus une chose que j'ai remarqué c'est que quand je coche le xla dans les references dans un nouveau classeur et que je l'enregistre la prochaine fois que j'utilise ce classeur le xla est activé meme si j avais decoché le xla dans les options et dans les references ce qui peut avoir des avantages

    ci joint le code module trois boutons du xla qui peut etre toujours placé dans un module standard dans le classeur utilisé et le code du module userform

    le code du XLA

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
     
    '***************************************************
    '**créé par patricktoulon alias chamalin1@msn.com***
    '***************************************************
    'declararation des variables public qui vont servir dans le userform resize _
    et qui vont etre determinées par la routine "determine"
    Public largeurbouton(), hauteurbouton(), leftbouton(), topbouton(), tcaractere(), couleurbouton(), couleurtext() As Long
    Public ctrl As Control
    Public maform As Object
    Public i, largeure_usf, hauteure_usf As Long
    'apel a  l'api user 32 pour les proprieté
    Private Declare Function GAW Lib "user32" Alias "GetActiveWindow" () As Long
    Private Declare Function GWL Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SWL Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Const GWL_STYLE As Long = -16
    'ajoute le full option au style
    Private Const WS_FULL_OPTION = &H70000 'Les 3 boutons et l'elasticité
      Sub troisbouton()
         Whdl = GAW 'Acquisition du Handle de la Userform
        forme = GWL(Whdl, GWL_STYLE) 'Acquisition propriétés
        SWL Whdl, GWL_STYLE, forme Or WS_FULL_OPTION 'toute les options(trois bouton et elasticité)
    TextBox1 = GAW
    End Sub
    Sub determine()
    hauteure_usf = maform.Height
    largeure_usf = maform.Width
    i = 0
    For Each ctrl In maform.Controls
    i = i + 1
    ReDim Preserve largeurbouton(i)
        largeurbouton(i) = maform.Width / ctrl.Width
    ReDim Preserve hauteurbouton(i)
        hauteurbouton(i) = maform.Height / ctrl.Height
    ReDim Preserve topbouton(i)
        topbouton(i) = maform.Height / ctrl.Top
    ReDim Preserve leftbouton(i)
        leftbouton(i) = maform.Width / ctrl.Left
    ReDim Preserve tcaractere(i)
       tcaractere(i) = ctrl.Width / ctrl.Font.Size
    Next
    End Sub
    Sub redimentionnement()
    On Error Resume Next
    i = 0
    For Each ctrl In maform.Controls
    i = i + 1
    ctrl.Width = maform.Width / largeurbouton(i)
    ctrl.Height = maform.Height / hauteurbouton(i)
    ctrl.Left = maform.Width / leftbouton(i)
    ctrl.Top = maform.Height / topbouton(i)
    ctrl.Font.Size = ctrl.Width / tcaractere(i)
    Next
    maform.Repaint 'repeint le userform pour effacer les traces des anciens emplacement des control _
    (du a la puissance de la carte graphique la plus part du temp)
    End Sub
    et le code qu'il faut metre dans le userform:

    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
     
     
    Private Sub UserForm_Activate()
    Set maform = Me 'variable object  declaré en public dans le module sandard
     
    determine'routine de memorisation des propriétés des controls
    troisbouton'routine servant a ajouter les deux boutons manquants et l'elasticité
    End Sub
     
     
    Private Sub UserForm_Resize()
    redimentionnement' routine recalculant les nouvelles propriété des controls 
    End Sub
     
    ci joint le XLA en zip en piece attachée

    voila

    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
      0  1

  14. #14
    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
    bonjour a tous


    Voila le projet abouti concernant le redimentionnement automatique des controls dans le userform et choix multiple sur les options de la caption
    ainsi que la fonction mouse_in_out
    1° je fait appel a l'api user32 dll(dll comune de windows) pour redéfinir les propriété de la fenetre "userform"

    2°a ) je donne a la variable public et long "optioncaption" une des valeurs proposées en vert en haut du module userform
    2°b ) je donne a la variable public et long "optioncaptionmoins" une valeur du a un calcul tres simple exemple (ce que je veux pas - ceque je veux ) hihihihi ca c'est trop drole!!!!
    puisque chaque option a une valeur et puisque la totale des option est egale a "&EH70000" je met a optioncaption le total des options que je veux et a optioncaptionmoins le total de ce que je ne veux pas
    les valeur proposées sont inscrites dans la user32dll et il y en a bien d'autres
    2°b) j'attribu a la variable public et de type objet(("maform")) l'userform lui-même de facon a ne pas etre obligé de nommer luserform dans les routines
    en vu de me servir de la meme routine pour tout les userforms
    2°d) dans le initialyse de l'userform j'ai placé l'appel de la routine qui va appliquer les propriétés pour les avoir a l'ouverture de l'userform
    j'ai volontairement changé les valeur de optioncaption et optioncaptionmoins dans chaque userform de la demo afin de vous montrer le principe cliquez sur "essayer tout les userforms et vous verrez que quand vous activer un des userform il prend les options desirées
    3° j'ai placé ce meme appel au routine dans le activate de chaque userforms de facon a les avoir sur n'importe le quels des userforms activés en meme temps
    j'y ai rajouté la routine""determine" servant a determiner les coordonnées de depart de tout les controls
    cette meme routine me sert aussi a determiner la couleur de depart de chaque boutons et a prendre en compte le module classe "mes boutons"

    4)° dans le module classe "mesboutons"

    le terme groupe bouton devien le (le bouton actif)
    dans cette routine je modifie les propriétés du bouton (font,size,backcolor,fontcolor,fontname,italic ou pas )ect,,,,
    et il y a le X et Ypar le (("ByVal X As Single, ByVal Y As Single"))dans l'enoncé de la fonction qui va me servir a determiner la position du curseur sur le bouton et avec une simple condition
    exemple : if X < 8 or X > groupebouton,width-8 then et la un appel a la routine init qui me remet les propriétés du bouton a l'initiale

    petite precision qui est néemmoins importante c'est que les variables
    effet_mouse_in_out = True
    effet_mouse_down = True


    ainsi que les routines dans le initialyse et le activate sont parfaitement (facultatives)
    ca veut dire que si vous en oubliez une ca ne perturbera pas les autres
    j'ai préféré les metres pour( la demo) vous pouvez les placer dans l'evenement d'un control ou au action
    exemple:vous pouvez les metres dans l'evenement click d'un bouton (une sorte de onoff pour les variables)
    j'ai constaté aussi puisque les userforms apres etre passé par les routinest avaient les meme propriétés que les fenetres windows un simple doubleclic sur la barre de caption(hors bouton bien entendu) les agrandi a la taille de l'ecran quand je choisi la totale bien sur

    j'espere avoir suffisament expliqué ce fichier. cela dis en regardant les module s dans l'editeur vba vous constaterez qu'il y a beaucoup de vert hihihihi! Si vous enlevez tout le vert
    vous verrez que le code est tres court ce qui était le2eme but de ce travail le 1er etant de faire un meme module pour tout les userforms patricktoulon :chamalin1@msn.com

    voila le livre le fichier avec les exemples a l'interieure


    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
      2  1

  15. #15
    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
    a la demande de spookyz je poste un exemple sans le mouse in et out

    cet exemple a les deux possibilités mode fenêtre au départ ou plein écran


    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
      0  1

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut redimensionnement automatique des controls dans un userform
    Bonjour serait-il possible d'avoir un fichier exemple, je galère un peu pour l'utiliser dans mon UserForm.
      0  0

  17. #17
    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
    bonjour brizard


    tu peux te contenter de recopier le module standard et le module userform

    il est parfaitement fonctionel

    au plaisir



    Edit::sinon tu a aussi ma nouvelle version ici tu n'a qu'a recopier le code encore une fois

    parici:http://excel.developpez.com/contribu...newversion.zip


    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
      1  1

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Points : 3
    Points
    3
    Par défaut redimensionnement automatique des controls dans un userform
    Formidable.
    Merci pour ton aide précieuse, je vais travailler là dessus.
    Cordialement
      0  0

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bonjour Patrick,

    J'ai voulu essayer ce code dans une de mes applications Excel 2003 mais j'obtiens une
    erreur 11 division par zéro et ça se bloque sur cette partie du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    leftbouton(i) = maform.Width / ctrl.Left
    J'ai testé la macro dans un nouveau classeur ou je n'ai mis qu'un UserForm
    avec un bouton, la tout fonctionne parfaitement bien !

    De quoi peut bien venir cette erreur ?
    Serait-ce parque que j'utilise un UserForm dans lequel j'ai supprimé la petite
    croix rouge de fermeture ?

    Merci d'avance
      0  0

  20. #20
    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
    bonjour a tous
    jacky
    voila une version ultra simplifié
    j'ai revisé le principe du redimentionnement du font size
    en effet ils peuvent avoir un font size différent

    au plaisir
    Fichiers attachés Fichiers attachés
    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
      1  1

Discussion fermée
Cette discussion est résolue.
Page 1 sur 5 12345 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2011, 17h12
  2. Erreur 800a9cf1 lors de l'insertion des controles dans un userform
    Par lahroussi dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/01/2010, 09h40
  3. Réponses: 0
    Dernier message: 05/02/2009, 15h10
  4. Réponses: 3
    Dernier message: 22/01/2009, 09h07
  5. [VB]inserer automatiquement des controls dans un listbox
    Par oumarsaw dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 05/04/2006, 18h22

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