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 :

Redimensionner userForm avec listView


Sujet :

Macros et VBA Excel

  1. #21
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    j'ai remarqué que lorsque le userForm était affiché sur un écran différent avec une résolution différente
    Baisse au maximum la résolution de ton écran, redimensionne ton userfom et.ensuite redimensionne la résolution de l'écran à l'origine!

  2. #22
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    Nom : Capture.JPG
Affichages : 414
Taille : 96,3 Ko
    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

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    C'est quoi, cette image, Patrick ?
    Elle prouve quoi ?
    Une intervention de l'utilisateur, en plus ?
    Et même dans le genre, tu pourrais faire mieux (ce que j'avais fait au tout début de mes recherches, il y a de nombreuses années et que j'ai ensuite totalement rejeté. Et pour cause).

    Tu me la fais connaître, la résolution de ton écran ? (histoire que tu puisses ensuite apprécier ... )
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #24
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    tu m a demander la resolution de mon ecran pour me donner une colle ,je te l'ai donné maintenant donne moi ta colle que je suis sensé soumettre a mon module resize

    y a pas de soucis
    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

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    1) La "colle" sera le userform que je construirai à partir d'une résolution que JE choisirai de telle manière qu'elle soit très différente (pour certains de ses aspects) de la tienne. JUSTEMENT !
    Tu me la fais connaître, cette résolution, oui ou non ?

    2)
    Les articles à ce sujet ne manquent pas. Les vrais resizers non plus (mais ils sont tous payants).
    Je te suggère cette petite lecture (désolé ... elle est en anglais).
    https://www.developer.com/net/vb/art...ReSize-OCX.htm
    Elle t'apprendra les mésaventures de certains "redimensionnements" ... (du moins quelques-unes ...)
    Ce genre de procédés conduit presque systématiquement à la crise de nerfs un jour ou l'autre. La crise de nerfs de ceux qui y ont cru, puis manifestent leur colère à l'égard de celui qui le leur a fait croire !
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #26
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re quand a moi

    voila mon point de depart

    regarde bien ce que je met dans le tag des controls et pose toi la question a quoi servent chaque partie tu devrais deviner comment je m'en sert dans le resize du userform
    en l'occurrence regarde bien les 3 dernières portions inscrit dans le tag en ce qui concerne le font size
    réfléchi bien

    le pire c'est que c'est toi qui m'a signifié ce soucis aurais tu oublié ?
    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 depart(usf)
        SetWindowLongA fwa(vbNullString, usf.Caption), -16, &H94CF0080  'Api window pour mettre les boutons minimiser et maximiser et l'élasticité
        usf.Tag = usf.Width & ":" & usf.Height    'on memorise les dimention du userform dans son tag
        nofont = "ScrollBar, SpinButton, Image"    'liste des controles qui n'ont pas de font ,ajouter les controls manquants si besoins 
        For Each Ctrl In usf.Controls
            Ctrl.Tag = Ctrl.Left & ":" & Ctrl.Width & ":" & Ctrl.Top & ":" & Ctrl.Height    'on memorise les dimention des controles dans leur tag
            If Not nofont Like "*" & Left(TypeName(Ctrl), 5) & "*" Then Ctrl.Tag = Ctrl.Tag & ":" & Ctrl.Font.Size & ":" & usf.Width / Ctrl.Font.Size & ":" & usf.Height / Ctrl.Font.Size 'si il y a la propriété font alors on memorise aussi le fontsize
            If TypeName(Ctrl) = "ListBox" Then 'MEMORISATION DU COLUMNWIDTHS DE la listbox dans le tag sous la forme du string de l'array des dimentions
                tablwidth = Split(Replace(Ctrl.ColumnWidths, " pt", ""), ";")
                For i = 0 To UBound(tablwidth): tablwidth(i) = Val(tablwidth(i)): Next
                Ctrl.Tag = Ctrl.Tag & ":" & Join(tablwidth, "|")
            End If
        Next
    End Sub
    ma resolution c'est 1920X1080
    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. #27
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    ps: ton lien =" page not found"
    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

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    le pire c'est que c'est toi qui m'a signifié ce soucis aurais tu oublié ?
    Oh que non ! Je me le rappelle très bien, même. Mais ce n'en était qu'un parmi une floppée !
    Et ton code ne corrige que très partiellement cet aspect

    regarde bien ce que je met dans le tag des controls et pose toi la question a quoi servent chaque partie tu devrais deviner comment je m'en sert dans le resize du userform
    je ne regarde rien et ne cherche à rien deeviner. Il ,y a très très très longtemps que je sais que ce cheminement ne saurait conduire à quoi que ce soit de fiable.

    Tiens : maintenant que je la connais enfin, la résolution de ton écran, on va même oublier le problème des polices de caractères -->> fais ceci sur un userform sur ta propre machine
    - insère où tu veux un Frame Frame1 et, à sa gauche, un Frame Frame2
    - mets un bouton de commande commandbutton1 dans Frame1 et un nbouton de commande commndbutton2 dans Frame2
    - ajoute ailleurs sur le userform un bouton de commande Commndbutton3

    Mets maintenant ce code tout bête :
    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
    Const coef = 0.5
     
    Private Sub CommandButton3_Click()
      Frame2.Height = Frame1.Height * coef
      CommandButton2.Height = CommandButton1.Height * coef
     
    End Sub
     
    Private Sub UserForm_Activate()
      With Frame1
         .Height = 25
         .Width = 200
     
      End With
    With CommandButton1
            .Height = 25
            .Width = 200
            .Left = 0
            .Top = 0
        End With
    With Frame2
         .Height = 25
         .Width = 200
     
      End With
    With CommandButton2
            .Height = 25
            .Width = 200
            .Left = 0
            .Top = 0
        End With
    End Sub
    ouvre ton userform et regarde -->> tout va bien jusque là.
    clique maintenant sur commandbutton3 et vois ce qu'aura pu faire un redimensionnement par application d'un coefficient sur le Frame2 et son bouton. Et pour cause.

    Et ce n'est là qu'un des autres pièges existants. Je te le répète : il y en a une floppée.
    Le "redimensionnement" de contrôles a ses limites, Patrick : celles des contrôles eux-mêmes.

    Je regarde si je retrouve le lien...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    https://www.developer.com/net/vb/art...ReSize-OCX.htm
    Marche bien chez moi.
    Je vais le mettre entre balise code : copie-le au besoin et colle-le dans ton navigateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://www.developer.com/net/vb/article.php/1539661/Review-of-ReSize-OCX.htm
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #30
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    je viens de tester
    visiblement ca fait le boulot

    ca normalise le frames a 200x25 au départ ainsi que leur bouton respectif
    et le bouton 3 resize le height de la frame2 a sa moitié
    bien sur en dessous d'un seuil les caption disparaissent ca c'est normal si c'est cela que tu a voulu démontré je savais déjà d'ailleurs dans ma contrib dans un des exemple j'avais imposé un min pour le usf

    après on parle de redimensionnement de formulaire il faut donc que peit ou grand il soit lisible hein !!!

    je part du principe que le userform est lisible au départ il le sera dons en plein écran quand a la réduction non seulement il y a les limites des controls mais combien même la limite de la lisibilité aussi, des plus parfaite soit elle hein

    j'ai lu ton lien traduit en Français l'auteur semble convaincu par cet OCX reste encore quelques coquille selon lui mais acceptables, je suis dans le même esprit avec mon module

    60 boules quand même le machin hein
    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

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    bien sur en dessous d'un seuil les caption disparaissent ca c'est normal si c'est cela que tu a voulu démontré je savais déjà d'ailleurs dans ma contrib dans un des exemple j'avais imposé un min pour le usf
    C'est une plaisanterie ou quoi ?
    Et tu as également "imposé un minimum" pour tout le reste ? Tu veux que j'en fasse la liste ? -->> tu ne vas plus pouvoir dormir ...
    C'est quoi, ce truc ? Qui fait que ce soit l'interface qui doit s'adapter à lui et non lui, qui doit s'adapter à l'interface ?

    Pour ton info : les véritables resizers (ceux du marché) ne redimensionnent absolument rien, ne repositionnent rien, ne demandent aucune intervention du développeur (et encore moins de l'utilisateur) et respectent totalement et très fidèlement la totalité (proportions exactes, emplacements exacts, polices inchangées, images non distordues, etc ...). Ils font leur boulot tant en mode création (chez le développeur, qui se contente de placer l'ocx sur son formulaire. Il sera invisible en mode exécution) qu'en mode exécution (chez l'utilisateur). Ils sont comme des poulpes, extrêmement élastiques et souples (j'avais d'ailleurs attribué au mien le nom "octopus.ocx". L'acheteur en a depuis modifié le nom).

    PS : je t'ai dit que je n'allais pas faire la liste de toutes les limites, mais je vais te donner quand même un début de questionnement : explique-moi comment tu peux appliquer un coefficient de redimensionnement à ce qui ne saurait subir un redimensionnement (pense entre autres aux ascenseurs de certains contrôles, aux bordures, etc ...)

    Je te laisse maintenant à tes utopies.

    EDIT : et laisse s'il te plait tranquilles les propriétés tag. Elles peuvent avoir été utilisées à d'autres fins (les siennes) par le développeur, hein ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  12. #32
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Si avec tout cela naoufal.elbekri n'a pas résolu son problème, c'est à désespère du genre humain!

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

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour Robert

    Il ne risque pas de solutionner son problème, tel qu'exposé.
    Aucun outil au monde (que ce soit dans le domaine informatique ou tout autre domaine) ne peut transposer ainsi sur deux surfaces de ratio hauteur/largeur différents (en utilisant la totalité de chacune des deux surfaces) tout en gardant les proportions de ce qu'il transpose.

    Le lui laisser croire, c'est le tromper et lui faire perdre son temps. C'est surtout totalement insensé.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  14. #34
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 948
    Points
    2 948
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Je me penche actuellement sur le même "problème" d'apparence par rapport à la résolution d'écran.
    L'utilisateur final veut absolument et quelque soit l'écran un Userform en plein écran.

    Qu'à cela ne tienne, je travaille avec deux (ou plus) UserForm (2 suffisent pour cet exemple).

    Le premier UserForm sert de fond à "l'application", un peu comme l'application Excel tient lieu de fond à l'objet Window.
    Il doit donc être affiché en plein écran.
    Première difficulté, trouver un code universel pour cela...
    Les codes tels que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Application
        .WindowState = xlMaximized
        Width = .Width
        Height = .Height
    End With
    ou autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim lngW As XlWindowState
        With Application
            .ScreenUpdating = False
            lngW = .WindowState
            .WindowState = xlMaximized
            Me.Move 0, 0, .Width, .Height
            .WindowState = lngW
            .ScreenUpdating = True
        End With
    ne fonctionnent pas sur toutes les machines.
    Pourquoi?
    Simplement en raison de la barre des tâches Windows...

    Le second UserForm (et/ou tous les autres), sont affichés, au sein de l'userform fullscreen, avec des proportions tenant compte de :
    > la résolution de la machine de développement,
    > les dimensions de l'userform (et de ses contrôles) sur la machine de développement,
    > la résolution de la machine de l'utilisateur.

    C'est relativement simple, mais je voudrais vraiment avoir vos avis.

    Un module standard avec ce code :
    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
    Option Explicit
     
    Private Declare Function GetSystemMetrics32 Lib "User32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
     
    Public Type Dimension
        Widz As Double
        Heigt As Double
    End Type
     
    Public Type Rectangle
        Left As Double
        Top As Double
        Width As Double
        Height As Double
    End Type
     
    Public Function DisplayMonitorSizeForFullScreen() As Dimension
    Dim ppx As Double
        With CreateObject("WScript.Shell")
            ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72
        End With
        DisplayMonitorSizeForFullScreen.Widz = GetSystemMetrics32(0) / ppx
        DisplayMonitorSizeForFullScreen.Heigt = GetSystemMetrics32(1) / ppx
    End Function
     
    Public Function DisplayMonitorSize() As Dimension
        DisplayMonitorSize.Widz = GetSystemMetrics32(0)
        DisplayMonitorSize.Heigt = GetSystemMetrics32(1)
    End Function
     
    Public Function MonitorSizeDevelop() As Dimension
        MonitorSizeDevelop.Widz = 1680
        MonitorSizeDevelop.Heigt = 1050
    End Function
     
    Public Function UserFormSizeDevelop() As Rectangle
    'Faire la même chose pour chaque contrôle de l'userform2
    'on pourra stocker les données ailleurs que dans des fonctions le cas échéant...
        UserFormSizeDevelop.Width = 500
        UserFormSizeDevelop.Height = 500
        UserFormSizeDevelop.Left = 50
        UserFormSizeDevelop.Top = 75
    End Function
    un UserForm1 avec un bouton de commande CommandButton1, et ce code :
    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
    Option Explicit
     
    Private Sub CommandButton1_Click()
        UserForm2.Show 1
    End Sub
     
    Private Sub UserForm_Activate()
    Dim myDim As Dimension
        myDim = DisplayMonitorSizeForFullScreen
        With UserForm1
            .Left = 0
            .Top = 0
            .Width = myDim.Widz
            .Height = myDim.Heigt
        End With
    'Ici on peut éventuellement redimensionner les éventuels contrôles de ce UserForm...
    End Sub
    Un UserForm2 avec des contrôles dessinés dessus et ce code :
    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
    Option Explicit
     
    Private Sub UserForm_Activate()
    Dim myScreenDim As Dimension, MonitorDevSize As Dimension
    Dim Ctrl As Control
     
        myScreenDim = DisplayMonitorSize
        MonitorDevSize = MonitorSizeDevelop
        With Me
            .Height = UserFormSizeDevelop.Height / MonitorDevSize.Heigt * myScreenDim.Heigt
            .Width = UserFormSizeDevelop.Width / MonitorDevSize.Widz * myScreenDim.Widz
            .Top = UserFormSizeDevelop.Top / MonitorDevSize.Heigt * myScreenDim.Heigt
            .Left = UserFormSizeDevelop.Left / MonitorDevSize.Widz * myScreenDim.Widz
            For Each Ctrl In .Controls
                'ICI l'on va supposer que l'on a entré toutes les dimensions de chaque contrôle
                'chose que je n'ai pas fait, mais qui est relativement simple à réaliser
                'tout comme on l'a fait, par ailleurs pour l'userform (UserFormSizeDevelop)
                With Ctrl
                    .Left = .Left / MonitorDevSize.Widz * myScreenDim.Widz
                    .Top = .Top / MonitorDevSize.Heigt * myScreenDim.Heigt
                    .Width = .Width / MonitorDevSize.Widz * myScreenDim.Widz
                    .Height = .Height / MonitorDevSize.Heigt * myScreenDim.Heigt
                End With
            Next
        End With
    End Sub
    Cordialement,
    Franck

  15. #35
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    salut franck

    je ne comprends pas bien ce que tu a voulu démontrer
    capture du resultat
    Nom : vue active.jpg
Affichages : 353
Taille : 100,6 Ko

    et vue des userform au départ dans VBE
    Nom : demo.gif
Affichages : 327
Taille : 140,8 Ko
    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

  16. #36
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 948
    Points
    2 948
    Billets dans le blog
    10
    Par défaut
    Salut Patrick,

    Ce que j'ai voulu démontrer :
    Dans un nouveau classeur :
    > Insère un UserForm
    > donne lui les dimensions Width = Height = 500 en dur
    > F5 pour le visualiser ==> Là, il est bien carré.
    (retiens ce que tu as vu)

    Change ta résolution d'écran pour prendre, par exemple, 1280x1024.
    Si tu ne disposes pas de cette résolution, choisis en une dont le ratio s'éloigne de la tienne (ton ratio = 1920/1080 = 1,7777).
    Relance ton Userform ==> il n'est plus carré.

    Pour pallier à cela, il te faut passer par une conversion que je fais grâce à mes trois fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function DisplayMonitorSize() As Dimension
    Public Function MonitorSizeDevelop() As Dimension
    Public Function UserFormSizeDevelop() As Rectangle
    Seulement, ceci n'est valide que si les dimensions originelles de l'userform ne sont pas celles de ton "plein écran".

    Comme l'utilisateur final VEUT un plein écran, je travaille avec deux userforms :
    > 1 en plein écran : le "fond" de mon appli
    > 1 en taille convertie pour chaque résolution, qui conserve donc son aspect tel que je l'ai dessiné sur ma machine, avec ma résolution.

    Ce qui fait que l'appli est en plein écran et mes userforms ne sont pas déformés.

    La preuve, ma résolution est 1680x1050 (ratio 1,6), toi ton ratio est de 1,7, et pourtant mon userform carré est resté carré chez toi!
    Cordialement,
    Franck

  17. #37
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    le initialise pour redimensionner n'est pas trop indiqué "activate c'est mieux"

    d'autant plus que viens faire ce redimensionnement de taille de police ici normalement quand tu zoom un usf la taille de police est zoomée avec donc vire moi ca aussi
    Fait un test avec un userForm qui contient des listView et tu verras que le zoom ne change absolument pas la taille du texte. Faut tester avant d'affirmer.

  18. #38
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    heu ...
    oui mais l'utilisateur veux l'userform2 en plein cran il est carré a la base son écran est rectangle le userform est forcement déformé ou alors il ne rempli pas l'écran

    pour ne pas déformera les controls le zoom 100*x sur un userform suffit a modifier les controls sans les déformer mais il ne sont plus proportionnellement placés pareil

    a partir du moment ou la base n'a pas le même ratio que l'écran il y aura déformation ou redim incomplet c'est évident

    le resultat que tu obytiens avec tes controls je l'obtien comme ca


    dan un userform avec des controls dessinés dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim oldZ
    Private Sub CommandButton1_Click()
    Me.Height = 600
    Me.Width = 600
    Z = Me.Width / oldZ
    Me.Zoom = 100 * Z
    End Sub
    Private Sub UserForm_Activate()
    If Me.Height > Me.Width Then oldZ = Me.Height Else oldZ = Me.Width
    End Sub
    c'est l'inter sélection du width ou height comme base qui décidé la base de z pour le redim

    qui fait que dans n'importe quel cas les controls seront redimensionnes mais pas déformés mais en terme de dimention les proportions ne sont plus les mêmes je dis bien proportions

    comme ca qu'il soit carré ou rectangle a la base et qu'il soit carré ou rectangle a la sortie les controls reste visibles dans le userform et pas deformé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

  19. #39
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 948
    Points
    2 948
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par naoufal.elbekri Voir le message
    Fait un test avec un userForm qui contient des listView et tu verras que le zoom ne change absolument pas la taille du texte.
    Oui, et la réponse t'as été apportée sous la forme d'une hypothèse : ICI
    Un contrôle Listview n'étant pas un contrôle natif de VBA, il n'est pas impossible que VBA ne sache pas intervenir sur toutes ses propriétés, notamment celles de ses position, dimensionnement et police de caractères
    Toutefois, il faudrait que tu nous précises les deux résolutions d'écran :
    > la tienne ou tout s'affiche correctement,
    > celle ou les listview se chevauchent.
    En fait, j'ai essayé et je n'arrive pas à reproduire ce phénomène...
    Cordialement,
    Franck

  20. #40
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 948
    Points
    2 948
    Billets dans le blog
    10
    Par défaut
    Patrick :
    oui mais l'utilisateur veux l'userform2 en plein cran il est carré a la base son écran est rectangle le userform est forcement déformé ou alors il ne rempli pas l'écran
    Donc, tu conviens bien avec nous que l'utilisateur a deux choix :
    > soit le plein écran ==> tout déformé
    > soit des dimensions fixes et inférieures au plein écran ==> non déformé.
    Ma solution combinant 2 userforms satisfait tout le monde...
    Cordialement,
    Franck

Discussions similaires

  1. Redimensionnement Userform avec photos de fonds selon resolution
    Par Allanbzh dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/06/2017, 22h22
  2. [XL-2010] Imprimer userform avec controle listview
    Par BENNASR dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/12/2014, 13h56
  3. [XL-2010] Userform avec listview
    Par duplaly dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/06/2011, 04h46
  4. [XL-2010] Userform avec Listview
    Par duplaly dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/06/2011, 13h58
  5. [VB6] Problèmes avec ListView
    Par FlopErik dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/03/2003, 17h33

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