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. #1
    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 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
    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
    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" ...
    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.

  3. #3
    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 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
    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
    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é.
    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.

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

  7. #7
    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
    Ce code est appelé à l'initialisation du formulaire, donc dans l’événement UserForm_Initialize().

    Pour répondre à la partie concernant le DisplayFullScreen, il me semble que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WindowState = xlMaximized
    sert justement à mettre l'objet Application en plein écran.

  8. #8
    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) L'évènement initialize d'un userform n'est pas le plus judicieux, en ce sens qu'il intervient dès que le userform est chargé, avant même son affichage.

    Or, il n'est pas impossible que ta listview ne soit pas encore totalement chargée au moment de l'intervention de la propriété zoom.
    Utilise plutôt l'évènement Activate

    2) Il n'est par ailleurs pas impossible (je n'en connais pas le code en arrière plan) que l'effet de la propriété Zoom, effet graphique par excellence, n'intervienne qu'une fois tout le reste déjà positionné et dimensionné (notamment si par calculs de proportions).
    Essaye de ne définir le zoom qu'in fine (après dimensionnement du userform)

    Ceci étant dit : 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. Mais essaye d'abord ce que disent mes points 1 et 2
    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. #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
    bonjour
    je pense pas que cela vienne de la résolution de l'écran

    normalement cela devrait se mettre a l'échelle tout seul

    a moins que dans ton code il y ai des dimensionnements en dur dans le code pour les controls
    grosse erreur!!!

    après tu peux zoomer le userform tant que tu veux c'est walouh!!! car le zoom va s'appliquer au dimension effectives

    sinon gros problème de carte graphique au quel cas vba ne peut pas résoudre le problème
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Membre 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 zoom est à calculer en fonction :
    - de la machine de développement
    - de la machine d'exécution
    Et de nulle autre manière.
    Ce qui implique (sinon calculs impossibles sur la machine d'exécution) que soient stockées en dur dans ton code les données concernant ton propre écran.

    Il est absolument utopique de penser pouvoir à la fois :
    - afficher en plein écran sur deux machines distinctes
    - garder les proportions (ce que fait la propriété zoom) par application d'un coefficient
    C'est tellement évident !
    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.

  11. #11
    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 unparia Voir le message
    Le zoom est à calculer en fonction :
    - de la machine de développement
    - de la machine d'exécution
    Et de nulle autre manière.
    Ce qui implique (sinon calculs impossibles sur la machine d'exécution) que soient stockées en dur dans ton code les données concernant ton propre écran.

    Il est absolument utopique de penser pouvoir à la fois :
    - afficher en plein écran sur deux machines distinctes
    - garder les proportions (ce que fait la propriété zoom) par application d'un coefficient
    C'est tellement évident !
    Si j'ai bien compris, tu penses que c'est impossible d'afficher, sur deux écrans différents, un formulaire et garder les proportions ?

    Par rapport à tes points 1 et 2, j'ai également une sub qui actualise l'affichage une fois tous les choix de l'utilisateur fait (et donc tous les contrôles affichés) et je ré-applique le zoom.

    C'est vrai que les listView n'est pas un objet natif, et j'ai même fait un test sur un formulaire bidon avec deux bouton qui augmente et diminue le zoom de 10%, et le texte à l'intérieur des listView ne change pas.

    Sinon mes dimensions ne sont pas écrites en dur

  12. #12
    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
    Si j'ai bien compris, tu penses que c'est impossible d'afficher, sur deux écrans différents, un formulaire et garder les proportions ?
    Je n'ai jamais dit une telle chose !
    J'ai dit qu'il était impossible de faire cela tout en affichant en plein écran sur les deux machines

    Et ceci est impossible également quel que soit le support d'affichage (informatique ou non) !
    Essaye donc de projeter par exemple sur un écran carré, en en occupant toute la surface, une diapositive qui occuperait la totalité de la surface d'un écran rectangulaire, tout en respectant les proportions de l'image projetées.

    Je ne comprends même pas que cela puisse échapper à la compréhension ...
    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.

  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
    j'ai deux pcs chez moi en marche avec deux résolution différente

    1 portable et un fixe
    dans les deux mes userforms s'affichent correctement
    différemment oui mais proportionnellement pareil

    je ne saisi pas le fait que tu ai des controls qui se chevauchent sur un de tes affichages

    au pire si ton userform est plus grand que la résolution de l'écran il est tronqué dans l'affichage (testé)

    pour moi il y a redimensionnement sans tenir compte du prorata et c'est tout
    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

  14. #14
    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 Patrick
    différemment oui mais proportionnellement pareil
    Impossible à faire (informatique ou non) en occupant la totalité de la surface d'accueil (plein écran ici) de chacune des deux surfaces si les proportions hauteur/largeur des deux surfaces ne sont pas identiques !
    A moins que tu ne nous fasses sortir d'un chapeau magique des nouvelles règles "patriciennes" régissant l'homothétie !
    La "chose" n'est possible qu'en faisant harakiri de l'utilisation de la totalité de la surface d'accueil !
    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.

  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
    @jacques
    je le cite
    pas bien car les control se chevauchent
    pas besoins de chapeau ni de baguette magique pour dire que redimensionner un userform n'affecte pas les contrôles j'ai suffisamment travailler dessus de différentes manière pour l'affirmer

    si il y a controls qui se chevauchent c'est qu'il y a redimensionnement et déplacement des controls soit par la fonction zoom ou autre , l'erreur elle est la c'est tout


    tu peux agrandir ou réduire ton usf le nombre de fois que tu veux les controls auront les même positions et dimensions

    quand a la fonction zoom pour calculer le coefficient il faut avoir la dimension de départ du userform si possible le height car aujourd'hui presque tous avons des écran 10/9 ou 16/9

    c'est pas compliqué non de dieu !!

    tu veux une démo animée peu être

    allez un test simple
    en considerant que l'application est plein ecran car on va se servir des ces dimensions pour l'usf pour les api plein écran on verra plus tard

    prends un usf met lui tout les controls que tu veux

    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
    Dim oldH
    Private Sub CommandButton2_Click()
        With Me
            .Height = Application.Height
            .Width = Application.Width
            .Left = 0
            .Top = 0
            Z = .Height / oldH
            .Zoom = 100 * Z
        End With
     
        End Sub
    Private Sub UserForm_Activate()
        oldH = Me.Height
    End Sub

    la seul chose qui ne sera pas proportionnelle a l'origine c'est le left des controls ce qui est impossible de faire avec "ZOOM" mais en aucun cas il se chevauchent

    voila

    edit:
    oserais je dire que si le demandeur faire une recherche dans les contribs il y trouvera plusieurs contribitions a ce sujet (chercher avec mon pseudo)
    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. #16
    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
    @jacques


    la seul chose qui ne sera pas proportionnelle a l'origine c'est le left des controls ce qui est impossible de faire avec "ZOOM" mais en aucun cas il se chevauchent

    voila
    Je peux t'affirmer que je fais la même chose (voir le code tout en haut) : un zoom avec un coefficient qui correspond au rapport entre height et oldH ou width et oldW.
    Je peux également t'affirmer que les listView se chevauchent. Peut-être cela est dû au fait que j'applique mon zoom dans l'évenement Initialise_userForm, où les contrôles ne sont pas encore tous affichés.

  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
    le initialise pour redimensionner n'est pas trop indiqué "activate c'est mieux"

    un autre exemple avec 2 boutons (normal et plein ecran

    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
    Dim oldH
    Dim oldT
    Dim oldL
    Dim oldW
    Private Sub CommandButton2_Click()
        With Me: oldH = .Height: oldW = .Width: .Height = Application.Height: .Width = Application.Width: .Left = 0: .Top = 0: End With
    End Sub
    Private Sub CommandButton3_Click()
        With Me: .Height = oldH: .Width = oldW: .Left = oldL: .Top = oldT:: End With
    End Sub
    Private Sub UserForm_Activate()
        With Me: oldL = Me.Left: oldT = .Left: End With
    End Sub
     
    Private Sub UserForm_Resize()
        With Me: Z = .Height / oldH: .Zoom = 100 * Z: End With
    End Sub
    voila

    maintenant si tu veux une redimensionnement ET REPOSITIONNEMENT réellement proportionnel tu oublie le ZOOM ET TU VA CHERCHER DANS LES CONTRIBS tu y trouvera ton bonheur

    PS:
    désolé tu ne fait absolument pas pareil que moi
    déjà que vient fairee application la dedans ????? il me semble que jacques te l'a déjà dit
    ensuite en aucun cas tu mémorise le départ du userform
    fait moi plaisir vire ton code et teste le mien dans ton usf
    on ira plus vite

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

  18. #18
    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
    maintenant si tu veux une redimensionnement ET REPOSITIONNEMENT réellement proportionnel tu oublie le ZOOM
    Non plus, Patrick, non plus !
    Sauf (combien de fois faudra-t-il le répéter ?) si l'on fait harakiri du plein écran ou que, le gardant, seule une partie de l'écran (donc du userform ainsi affiché) est finalement utilisée !
    Ce n'est ni toi, ni personne qui pourra changer cet état de fait (et donc la raison elle-même) !
    Quant à (et donc par ailleurs) les "redimensionnements" que tu proposes, j'ai déjà eu l'occasion d'en dénoncer plusieurs défauts (dont certains importants) inévitables. Le pire est que je sais que tu le sais également !
    Bref ... J'attends donc la suite en spectateur et ne manquerai pas, lorsque tout sera "réalisé", de crier haut et fort que l'on a pas ainsi réussi à garder A LA FOIS le plein écran et les proportions sur deux machines dont les écrans n'ont pas exactement le même ration hauteur/largeur.
    A bientôt, donc, hein ...

    PS : ton "expérience" (ce sur quoi tu as travaillé) est à mille lieux du véritable "Resizer" que j'ai créé (et vendu) à l'époque. Mais même ce resizer ne saurait conserver à la fois le plein écran et les proportions. Ni aucun super-resizer non plus, d'ailleurs. Et ce : pour des raisons purement mathématiques.
    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.

  19. #19
    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
    @jacques

    pour moi le redimensionnement et replace des controls proportionnellement a l'initial
    c'est par exemple
    un usf de 100x100 avec controls(celui que tu veux)avec un left de 10 un top de 10 un width de 50 un height de 20

    après un redimensionnement de l'usf a 200 de large x150 de hauteur par exemple

    le control aura un left de 20,un top de 15 un width de 100,un height de 30

    voila ca c'est un redim proportionnel et cela ma contrib le fait parfaitement bien

    LE ZOOM NON!!!!! c'est d'ailleurs impossible car la fonction ZOOM change les size H et W avec le même coefficient ce qui ne correspond pas a la modif de l'usf

    seul le font size est un peu particulier mais ma contrib fait sur ce point une approche raisonnable et largement acceptable

    cette contribs a fait le tour du monde ,je l'ai même retrouvé sur d'autre forums y compris dans des app Excel de compta dont une que j'ai acheté pour ma boite


    et a ce jour personne n'a proposé mieux que mon principe dans une app excel


    me.zoom 100*x de large et me.zoom 100*y n'existe pas " niet nada no grateou,walouh"
    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

  20. #20
    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
    pour moi le redimensionnement et replace des controls proportionnellement a l'initial
    c'est par exemple
    un usf de 100x100 avec controls(celui que tu veux)avec un left de 10 un top de 10 un width de 50 un height de 20
    Tu devrais te poser et relire calmement. Il s'agit d'afficher, sur chaque machine, en plein écran et en gardant les proportions A LA FOIS, A LA FOIS, A LA FOIS

    Et même pour le reste de tes affirmations : --->> NON
    Allez, on va en finir avec cette discussion qui risque de s'éterniser : fais-moi connaître la résolution de ton écran et je vais te soumettre un userform à traiter par ton "outil". Tu vas vite comprendre
    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.

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