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 :

Affichage du formulaire


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 28
    Par défaut Affichage du formulaire
    Bonjour,

    J'ai crée un formulaire dans un classeur excel qui ne s'affiche pas pareil en fonction de la personne qui l'ouvre depuis son poste.
    Ceci est un problème de résolution mais aussi affichage des caractères (certains l'ont en grand : 150%)
    J'aimerais que tout le monde puisse le voir sous une forme homogène mais je ne trouve pas le code pour le faire..
    J'ai déjà fouillé dans le forum et sur d'autres site je ne trouve rien qui réponde à ma demande

    Quelqu'un aurait une idée?

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    cela ne proviendrait pas des paramètres de Windows ?

    par exemple, l'affichage des éléments tel que ces options là :

    Nom : dvp1.png
Affichages : 396
Taille : 68,3 Ko

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 28
    Par défaut
    Si cela vient de la et également de la résolution de l'écran !
    Il y a en tout environ 5 personnes qui travaillent dessus.
    Mais personne n'a la même résolution d'écran et d'affichage des caractères donc le userform s'affiche petit pour certains et grand pour d'autres..

    Ma question est de savoir si il est possible que le userform s'affiche en fonction de ses paramètres windows?

    J'ai essayé de les convaincre de tous mettre la même résolution d'écran et d'affichage des caractères mais ça chamboule tout juste pour un fichier excel !

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    C'est tout à fait possible, mais prépare l'aspirine !

    - récupérer les API (si elles existent) pour tester le paramètre d'affichage de l'utilisateur et obtenir le %age d'agrandissement ou de réduction qu'à paramétré l'utilisateur

    - utiliser ce pourcentage pour jouer sur les paramètres suivants :
    * taille d'écriture
    * position des contrôles et du userform

    mais je suis même pas certain que l'effet soit transparent, et que j'ai bien listé tout ce qu'il faut faire


    Après, dis-toi que si un utilisateur décide de modifier ses paramètres, c'est qu'il veut lire en gros ou en petit sur son écran
    Si tu rétablis un paramètre à 100% ... tu mets ton utilisateur dans l'inconfort

  5. #5
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Bonjour.
    Effectivement, il te faudra préparer pas mal de choses qui s'adapteront en fonction des paramètres de configuration des utilisateurs.
    Ce n'est pas toujours aux utilisateurs de s'adapter, l'application doit aussi être capable de s'adapter a différentes situations.

    Rendre disponible les scrollbars du userform selon les cas ScrollBars = fmScrollBarsBoth

    Stocker les valeurs des propriétés des contrôles correspondant au réglage que tu as chez toi.
    Une petite boucle For Each sur les contrôles de ton useform pour lire et enregistrer leurs propriétés W, H, T, L dans une plage.

    Stocker également la valeur Width et Heigh d'Excel Aplication.Width ... Il faut avoir défini au préalable la propriété Application.WindowState = xlMaximized

    Une procédure Initialize du Userform au lancement pour comparer les valeurs Width et Height de l'Application toujours en state xlMaximized avec les valeurs stockées pour calculer les proportions de redimensionnement et repositionnement des contrôles.

    Ajouter éventuellement un contrôle Spin ou Scroll sur la Form pour permettre a l'utilisateur d'ajuster le zoom de l'userform. (il faut définir en mode Design les valeurs minimales et maximales de ce contrôle.)


    L'important est surtout de faire un Move sur chaque contrôle pour espacer et dimensionner proportionnellement les contrôles par rapport aux dimensions d’écran de référence etc.

    Je crois avoir quelque part les références de clés de registres à lire pour connaître les paramètres de Police d'affichage et l’écran. Si je tombes dessus, je vous le postes.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 28
    Par défaut
    Bonjour!
    Tout d'abord merci pour vos réponses.

    Cela m'a l'air vraiment compliqué et je ne suis pas un expert..
    Je pense à une commande qui prévoit que si la taille d'affichage des caractères est de 100%, alors zoomer et agrandir le userform.
    Mais je ne sais pas ce que je dois incorporer dans le If pour qu'il sache que la taille des caractères est dse 100% ...

  7. #7
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    bonjour,
    je n'ai pas eu de temps.
    Et je viens de farfouiller sans succès dans les fichiers de mon disque dur pour la clé de registre relatif a la taille d'affichage des caractères.
    Patrick, si tu passes par là, dis nous la clef correspondante si tu l'as déjà tripatouillé une fois.

    Cela m'a l'air vraiment compliqué et je ne suis pas un expert..
    Je pense à une commande qui prévoit que si la taille d'affichage des caractères est de 100%, alors zoomer et agrandir le userform
    Non ce n'est pas compliqué, à moins que tu ne te le compliques.

    Je penses d'ailleurs qu'on peut se passer de la lecture de la résolution d'écran ou de la taille de police windows, en le devinant sur les propriétés de la fenêtre d'application dont les dimensions (en cas de changement), ne correspondront pas a la valeur de reference stocké (comme expliqué 2 posts plus haut).

    Je te propose de mettre en pièce jointe un fichier exemple. Je verrais ce que je pourrais te faire.
    Copier L'userform dans un nouvel fichier vierge. Tu peux aussi effacer les codes, ils ne seront pas nécessaires.

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    La précision du dimensionnement et du positionnement des contrôles est compliqués mais tu peux déjà tester la taille de l'application et adapter celle de la Form en fonction. Ici, la Form fait la moitié de la taille de l'application et un TextBox est dimensionné et positionné mais malgré tous, la précision laisse à désirer :
    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
     
    Private Sub UserForm_Initialize()
     
        Dim Largeur As Single
        Dim Hauteur As Single
        Dim R_X As Single
        Dim R_Y As Single
     
        'récupère les dimensions de création de la Form
        Largeur = Me.Width
        Hauteur = Me.Height
     
        'les dimensions d'affichage de la Form sont la moitié de l'application
        Me.Height = Application.Height * 0.5
        Me.Width = Application.Width * 0.5
     
        'calcule le coeff. de la dimension de création par rapport à la taille d'affichage
        R_X = Largeur / Me.Width
        R_Y = Hauteur / Me.Height
     
        'défini la taille et le positionnement du TextBox
        TextBox1.Left = TextBox1.Left / R_X
        TextBox1.Top = TextBox1.Top / R_Y
        TextBox1.Width = TextBox1.Width / R_X
        TextBox1.Height = TextBox1.Height / R_Y
     
        'ceci pour tous les contrôles...
        '...
        '...
     
    End Sub
    Hervé.

  9. #9
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Bonjour,
    Salut Theze. Un plaisir de te rencontrer

    Citation Envoyé par Theze Voir le message
    Bonjour,

    La précision du dimensionnement et du positionnement des contrôles est compliqués mais tu peux déjà tester la taille de l'application et adapter celle de la Form en fonction. Ici, la Form fait la moitié de la taille de l'application et un TextBox est dimensionné et positionné mais malgré tous, la précision laisse à désirer :
    D'où ma suggestion à juguy de poster un exemple de fichier comportant ses contrôles pour avoir quelque chose sur mesure.
    Le redimensionnement des contrôles pourra être calculé sur une base proportionnelle en fonction de ce que les contrôles sont parfois et leurs déplacements, parfois en fonction de leurs dispositions sur la feuille. Chaque contrôle peut avoir une particularité qui pourrait être défini et stocké statiquement sur un taux particulier a chaque contrôle. Par exemple pour une différence de 10% ne pas bouger certains, d'autres ne seraient pas agrandis de plus de 30 % quel que soit le facteur d'agrandissement. etc.

    Il n'a pas répondu et c'est tant mieux. Car en écrivant ses lignes je me rends compte que c'est inutile.
    Ce n'est heureusement pas une page Web dont l'affichage doit être défini en fonction des appareils. J'aurais perdu mon temps.

    Ce qui devrait contenter ses utilisateurs, c'est que si les contrôles débordent, avoir les Scrolls ajustés en conséquence, ou redimensionner la feuille. Et un contrôle pour zoomer.

  10. #10
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour à toutes et tous, bonjour NVCfrm,

    Je pense qu'il faut faire quelque chose de simple et je pense aussi que si le rapport de taille est un peu différent entre deux PC ce ne doit pas être très grave !

    Donc attendons son fichier

    Hervé.

  11. #11
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut Débordement de controles ou UserForm
    Bonjour à tous.

    Il semble que juguy a pu tirer son épingle du jeu, sans avoir l'amabilité de nous en faire part.

    Pour orienter un petit peu mieux d'autres qui seraient confrontés à un problème similaire :
    Le problème correspondant à l'affichage tronqué d'un UserForm causé par une résolution d'écran ou taille d'affichage de police Windows différent des conditions de création a des solutions plus ou moins simples.

    Comme le pense Theze, il faut aborder la chose avec simplicité. Se baser sur l'application hôte de l'UserForm, est la solution la plus compatible à mon avis.

    L'exemple de code suivant nécessite au moins quatre contrôles : 1 ScrollBar, 1 Label, 2 OptionButton, 1 CheckBox nommés : ScrollZoom, LabelZoom, OptEtendue, OptNormal, CheckResizeWithZoom que vous pouvez aligner verticalement dans le coin supérieur gauche. Ajouter d'autres contrôles aux extrémités droite et bas de l'UserForm
    La valeur de l'OptionButon qui s'appelle OptNormal sera á True par défaut.

    Au démarrage, la fenêtre de l'UserForm est ajusté pour ne pas déborder quand l'un des problèmes cités survient et les ScrollBars sont disponibles pour défiler vers les zones non visibles.
    Le clic sur le bouton OptEtendue remplit la fenêtre avec l'UserForm, alors que le clic sur OptNormal restaure la fenêtre aux proportions par défaut.
    Le ScrollZoom agrandit ou reduit le zoom.
    Le CheckResizeWithZoom permet de redimensionner la feuille avec le zoom.
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    Option Explicit
     
    Private Type Ecran
        WState As Long
        ht As Double
        lt As Double
        tp As Double
        Wh As Double
    End Type
     
    Enum ScreenID
        ExcelDim = 1
        ExcelClientDim = 2
        UserFormDim = 3
    End Enum
     
    Dim l#, t#, h#, w#
    Dim screenRef(2) As Ecran, screenCur(1) As Ecran
     
    Private Sub CommandButton1_Click()
        Me.Hide
    End Sub
     
    Private Sub FenetreState()
     
        If OptEtendue.Value Then
            Me.Move 5, 5, screenCur(0).Wh - 20, screenCur(0).ht - 20
        Else
            Me.Move screenCur(1).lt, screenCur(1).tp, screenCur(1).Wh, screenCur(1).ht
        End If
        ScrollZoom.Value = 100
    End Sub
     
    Private Sub OptNormal_Click()
        FenetreState
    End Sub
     
    Private Sub OptEtendue_Click()
        FenetreState
    End Sub
     
    Private Sub ScrollZoom_Change()
        Me.Zoom = ScrollZoom.Value
        LabelZoom.Caption = "Zoom " & ScrollZoom.Value & "%"
    End Sub
     
    'Reglage_Vue :
    '    Adapte l 'UserForm sur les proportions d'ecran
    Private Sub Reglage_Vue()
        With Me
            .Move Left + l, Top + t, screenCur(1).Wh - (Width / 100 * w), screenCur(1).ht - (Height / 100 * h)
            .ScrollLeft = 0
            .ScrollTop = 0
            .ScrollHeight = screenRef(2).ht '+ 50
            .ScrollWidth = screenRef(2).Wh '+ 30
            .ScrollBars = fmScrollBarsBoth
            .KeepScrollBarsVisible = fmScrollBarsNone
    '        .Scroll 5, 5
        End With
        UpdateScreenForm
    End Sub
     
    Private Sub UpdateScreenForm()
        With screenCur(1)
            .ht = Height
            .lt = Left
            .tp = Top
            .Wh = Width
            .WState = Me.StartUpPosition
        End With
    End Sub
     
    'AppCur_Dim :
    '    Remplit la variable de type Ecran avec la valeur correspondante à l'écran de l'application
    Private Sub AppCur_Dim(surf As Ecran, Optional Conteneur As Boolean = False)
        Dim scrState&
     
        With Application
            'store prev reglages
            scrState = .WindowState
            .WindowState = xlMaximized
     
            If Conteneur Then
                surf.ht = .UsableHeight
                surf.lt = .Left
                surf.tp = .Top
                surf.Wh = .UsableWidth
            Else
                surf.ht = .Height
                surf.lt = .Left
                surf.tp = .Top
                surf.Wh = .Width
            End If
     
            'restore prev config
            .WindowState = scrState
            '
            surf.WState = scrState
        End With
     
    End Sub
     
    'StatedefaultDim :
    '   - screen : Argument remplit avec les données stockées dans le fichier
    '   - id : indique l'élément d'enumeration ScreenID
    '   Les données sont crées si elles n'éxistent pas, ou recrées si une incohérence avec le nombre de contrôles
    Private Sub StatedefaultDim(screen As Ecran, id As ScreenID)
        Dim r As Range, n
     
        On Error Resume Next
        Set r = Range("Default")
     
        If Err Then
            Err.Clear
            Set r = Sheets("Custom").Range("A1")
            If Err Then
                With Sheets.Add
                    .Name = "Custom"
                    Set r = .Range("A1:E1")
                End With
     
            End If
            Sheets("Custom").Names.Add "Default", Sheets("Custom").Range("A1:E1")
        End If
     
        If r.Rows.CurrentRegion.Rows.Count < Controls.Count + 4 _
            Or r.Rows.CurrentRegion.Rows.Count > Controls.Count + 4 Then
            Dim cnt As Control
     
            r.Worksheet.Cells.Clear
            n = Application.WindowState
            Application.WindowState = xlMaximized
            With r
                .Range("A1:E1") = Array("Ecran", "Left", "Top", "Width", "Height", "Parent")
                '
                .Cells(2, 1) = Application.Name
                .Cells(2, 2) = Application.Left
                .Cells(2, 3) = Application.Top
                .Cells(2, 4) = Application.Width
                .Cells(2, 5) = Application.Height
                .Cells(2, 7) = Application.WindowState
                '
                .Cells(3, 1) = Application.Windows(1).Caption
                .Cells(3, 2) = Application.Windows(1).Left
                .Cells(3, 3) = Application.Windows(1).Top
                .Cells(3, 4) = Application.Windows(1).Width
                .Cells(3, 5) = Application.Windows(1).Height
                .Cells(3, 7) = Application.WindowState
                '
                .Cells(4, 1) = Me.Name
                .Cells(4, 2) = Left
                .Cells(4, 3) = Top
                .Cells(4, 4) = Width
                .Cells(4, 5) = Height
                .Cells(4, 7) = Me.StartUpPosition
     
            End With
     
            Application.WindowState = n
            n = 4
            For Each cnt In Controls
                n = n + 1
                With r
                    .Cells(n, 1) = cnt.Name
                    .Cells(n, 2) = cnt.Left
                    .Cells(n, 3) = cnt.Top
                    .Cells(n, 4) = cnt.Width
                    .Cells(n, 5) = cnt.Height
                    .Cells(n, 6) = cnt.Parent.Name
                    .Cells(n, 7) = TypeName(cnt)
                End With
            Next
        End If
     
        id = id + 1
        With screen
            .ht = r(id, 5)
            .lt = r(id, 2)
            .tp = r(id, 3)
            .Wh = r(id, 4)
            .WState = r(id, 6)
        End With
     
    End Sub
     
    Private Sub UserForm_Activate()
        UpdateScreenForm
    End Sub
     
    Private Sub UserForm_Initialize()
        '
        'Dim spc_Height#, spc_Width#
        OptNormal.Caption = "Affichage normal"
        OptNormal.AutoSize = True
    	'OptNormal.Value = True
        OptEtendue.Caption = "Affichage étendu"
        OptEtendue.AutoSize = True
        CheckResizeWithZoom.Caption = "Ajuster Fenêtre avec le Zoom"
        CheckResizeWithZoom.AutoSize = True
        LabelZoom.Caption = "Zomm : 100%"
        ScrollZoom.Min = 50
        ScrollZoom.Max = 200
        ScrollZoom.Value = 100
     
        StatedefaultDim screenRef(0), ExcelDim
        StatedefaultDim screenRef(1), ExcelClientDim
        StatedefaultDim screenRef(2), UserFormDim
        AppCur_Dim screenCur(0)
     
        l = (screenCur(0).lt - screenRef(0).lt)
        t = (screenCur(0).tp - screenRef(0).tp)
        h = 100 - ((screenCur(0).ht / screenRef(0).ht) * 100)
        w = 100 - ((screenCur(0).Wh / screenRef(0).Wh) * 100)
     
        UpdateScreenForm
        Reglage_Vue
     
     
    End Sub
     
    Private Sub UserForm_Zoom(Percent As Integer)
        Static p&
        Dim wt&, ht&, i&
        Dim spc_Height#, spc_Width#
        Dim cnt As Control
     
        If CheckResizeWithZoom Then
            wt = (Width * ((Percent - 100) - p) / 100)
            ht = (Height * ((Percent - 100) - p) / 100)
            Move Left, Top, Width + wt, Height + ht
            ScrollHeight = screenRef(2).ht + (10 * Percent / ht)
            ScrollWidth = screenRef(2).Wh + (10 * Percent / wt)
     
            For Each cnt In Controls
                wt = (cnt.Width * ((Percent - 100) - p) / 100)
                ht = (cnt.Height * ((Percent - 100) - p) / 100)
                cnt.Move cnt.Left + wt, cnt.Top + ht, cnt.Width + wt, cnt.Height + ht
            Next
     
            UpdateScreenForm
     
        End If
     
        p = p + ((Percent - 100) - p)
     
    End Sub
    Bons essais !

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 28
    Par défaut
    Bonjour,

    Non non je n'ai pas encore tiré mon épingle du jeu

    Je m'en vais de ce pas tester cela !

    Merci pour vos réponses

  13. #13
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour

    Une suggestion pour déterminer le facteur Zoom selon la résolution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Declare Function GetSystemMetrics Lib "user32" (ByVal whichMetric As Long) As Long
    Const SM_CXSCREEN As Long = 0
    Const SM_CYSCREEN As Long = 1
     
    Private Sub UserForm_Initialize()
     
    HauteurMax = GetSystemMetrics(1)
    HauteurMaxOriginale = 600
     
    w = HauteurMax / HauteurMaxOriginale
    Me.Zoom = w * 100
     
    Me.Move Me.Left, Me.Top, Me.Width * w, Me.Height * w
    End Sub

  14. #14
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Pas mal comme raccourci.
    J'avais pensé à d'autres API tels que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Declare Function EnumDisplaySettings _
        Lib "user32.dll" Alias "EnumDisplaySettingsA" (ByVal _
        lpszDeviceName As Long, ByVal iModeNum As Long, ByRef _
        lpDevMode As DEVMODE) As Long
    ça m'avait paru fastidieux comme implications en termes de déclarations. Par contre, Je n'ai jamais utilisé celle que tu viens de mettre.

Discussions similaires

  1. Ordre d'affichage des formulaires
    Par cdumas dans le forum Access
    Réponses: 3
    Dernier message: 04/05/2006, 12h15
  2. Réponses: 2
    Dernier message: 19/04/2006, 16h29
  3. Affichage dans formulaire
    Par Marmouz dans le forum Access
    Réponses: 2
    Dernier message: 13/04/2006, 20h33
  4. [vba-excel] Affichage de formulaire
    Par decour dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/12/2005, 11h04
  5. Réponses: 18
    Dernier message: 08/12/2004, 14h04

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