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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Par défaut Redimensionner userForm avec listView
    Bonjour,

    Je travaille sur un userForm (formulaire) avec des listView, et j'ai remarqué que lorsque le userForm était affiché sur un écran différent avec une résolution différente, le rendu n’était pas bien car les control se chevauchent, donc j'ai rajouté du code pour redimensionner le userForm. Le code fonctionne bien (dans une bonne majorité des cas) sauf que j'ai remarqué que le zoom n'affecte pas de la même manière les listView et les autres control. D'ailleurs j'ai dû rajouter du code pour modifier la font size du texte des listView.

    Le code suivant est pour redimensionner le userForm : Je zoom en fonction du minimum entre le rapport de largeur ou bien longueur (je retranche 2, car je sais pas pourquoi mais il me semble que le userForm dépasse la longueur ou la largeur de l'écran d'un petit chouia).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    With Application
     
            .WindowState = xlMaximized
            Zoom = WorksheetFunction.Min(Int((.Width - 2) / Me.Width * 100), Int((.Height - 2) / Me.Height * 100))
            Width = .Width - 2
            Height = .Height - 2
            Top = .Top
            Left = .Left
     
    End With
    Le code suivant est pour redimensionner la taille des textes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    For Each Ctrl In Me.Controls
     
            If Ctrl.Name Like "listview*" Then
     
                Me.Controls(Ctrl.Name).Font.Size = Me.Controls(Ctrl.Name).Font.Size * Me.Zoom / 100
     
            End If
     
    Next
    Le problème demeure quand même parfois, car les listView ne s'affiche pas correctement : elles montrent pas leurs contenus en entier comme sur l'affichage original, donc j'ai l'impression que le zoom ne les impactent pas de la même manière.

    Connaissez-vous une solution différente ?

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je ne comprends déjà pas pourquoi tu appliques la propriété zoom à l'application et non au userform concerné
    Et je n'aime pas un bloc With (concernant l'application) et une propriété (zoom) non précédée du point qui précise qu'elle affecte l'objet du bloc.
    Que vient faire ici l'objet application ? Puisque c'est le Userform, que tu veux "zoomer" ...

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour
    Je ne comprends déjà pas pourquoi tu appliques la propriété zoom à l'application et non au userform concerné
    Et je n'aime pas un bloc With (concernant l'application) et une propriété (zoom) non précédée du point qui précise qu'elle affecte l'objet du bloc.
    Que vient faire ici l'objet application ? Puisque c'est le Userform, que tu veux "zoomer" ...
    La syntaxe que j'ai mise fonctionne parfaitement (il me semble), je pense que tu préfères cella là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    With Application
     
            .WindowState = xlMaximized
            Me.Zoom = WorksheetFunction.Min(Int((.Width - 2) / Me.Width * 100), Int((.Height - 2) / Me.Height * 100))
            Me.Width = .Width - 2
            Me.Height = .Height - 2
            Me.Top = .Top
            Me.Left = .Left
     
     
    End With

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    je pense que tu préfères cella là :
    Bis, donc : que vient faire l'objet application dans cette affaire ? --->> RIEN
    Tu peux enlever la ligne With ... et la ligne End With !
    Ou alors (tu le peux également) utiliser un block With, mais concernant l'objet Me !

    Je refuse de traiter le reste tant que cette "propreté" là (révélatrice de carences fondamentales) ne sera pas assimilée. Et ce : même si tout cela n'est pas la vraie cause du problème soulevé.

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bis, donc : que vient faire l'objet application dans cette affaire ? --->> RIEN
    Tu peux enlever la ligne With ... et la ligne End With !
    Ou alors (tu le peux également) utiliser un block With, mais concernant l'objet Me !

    Je refuse de traiter le reste tant que cette "propreté" là (révélatrice de carences fondamentales) ne sera pas assimilée. Et ce : même si tout cela n'est pas la vraie cause du problème soulevé.
    L'objet application sert à récupérer la longueur et largeur de l'écran, on ne peut pas faire sans, sauf si tu me proposes une autre manière d'adapter la largeur et longueur de mon formulaire à celle de l'écran.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Vu.
    Mais ce que tu précises-là n'est vrai et fiable QUE si l'application occupe elle-même tout l'écran (propriété DisplayFullScreen de l'objet application). J'espère que tel est bien le cas lors de l'exécution des lignes de code montrées ...

    A ce propos : on ne voit pas dans quelle procédure évènementielle elles ont été mises (et cela a une importance).

  7. #7
    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!

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, 21h22
  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, 12h56
  3. [XL-2010] Userform avec listview
    Par duplaly dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/06/2011, 03h46
  4. [XL-2010] Userform avec Listview
    Par duplaly dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/06/2011, 12h58
  5. [VB6] Problèmes avec ListView
    Par FlopErik dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/03/2003, 16h33

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