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

IHM Discussion :

Coordonnées d'un sous-formulaire sans module GetWindowRect? [AC-2010]


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 52
    Points : 35
    Points
    35
    Par défaut Coordonnées d'un sous-formulaire sans module GetWindowRect?
    Bonjour,

    Je souhaite pouvoir récupérer la position verticale d'un sous-formulaire dans un formulaire principal.
    La seule fonction que j'ai pu trouver pour la récupérer est la fonction GetWindowsRect, qui retourne la position d'un formulaire. J'ai lu le tuto de ClaudeLELOUP, c'est très bien fait, très bien expliqué.

    Le seul problème est que chez moi, quand j'essaye de faire un module et d'y mettre le code de la fonction, Access me fait une erreur de compilation sans numéro, me disant que le code contenu dans le projet doit être mis à jour pour être utilisé sur les systèmes 64 bits, et que je dois mettre à jour les instructions declare puis les marquer avec un attribut PtrSafe.

    Bref, autant dire, je ne vois pas de quoi il parle, je ne vois pas comment mettre à jour (je n'ai quasiment aucune notion avec les modules, bien que j'ai lu un tuto ou deux il y a un moment), et ce soucis me prend un peu la tête, sans compter que je n'ai pas beaucoup de temps pour le résoudre.
    Existe t-il une méthode alternative pour obtenir la position (en vertical uniquement) d'un sous-formulaire dans un formulaire?

    Merci.

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonsoir,

    Tu es sans doutes en Office 2010 64 bits. Dans ce cas, je t'invite à lire ce tuto. Cela devrait résoudre ton problème.
    Cordialement

    Christophe

    N'oubliez pas de mettre pour en faire profiter tout le monde.

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Merci Christophe d'avoir renseigné cet article de Thierry Gasperment.

    Je vais ajouter cette référence dans le tutoriel cité par Thugann.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Citation Envoyé par Thugann Voir le message
    Bonjour,

    Le seul problème est que chez moi, quand j'essaye de faire un module et d'y mettre le code de la fonction, Access me fait une erreur de compilation sans numéro, me disant que le code contenu dans le projet doit être mis à jour pour être utilisé sur les systèmes 64 bits, et que je dois mettre à jour les intructions declare puis les marquer avec un attribut PtrSafe.
    Thugann,

    Peux-tu poster une capture d'écran qui montre la réaction d'Access ? Cela me permettra d'illustrer l'avertissement que je voudrais ajouter dans l'article.

    Merci déjà.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    Tout d'abord merci de vos réponses, je suis actuellement en train d'essayer de résoudre mon problème.

    ClaudeLELOUP, voici une capture d'écran du message que m'affiche Access lors de la compilation du code pour la version antérieure à Office 2010:
    Nom : maj_Office2010.jpg
Affichages : 117
Taille : 32,3 Ko

    Concernant les avancées que je suis en train d'effectuer, j'aimerais si possible avoir une petite précision. Je précise que je connais très mal les modules et étant en stage j'ai découvert Access il y a presque deux mois, c'est donc peut-être un peu bête.
    J'ai vu que pour une version Office 2010 (ou plus), il était possible d'utiliser une syntaxe du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #If VBA7 then
        'Code qui compile pour une version Office 2010 ou plus
    #Else
        'Code qui compile pour une version antérieure à Office 2010
    #End if
    Cependant, si je l'utilise afin d'essayer d'avoir un code un minimum blindé, je ne peux toujours pas utiliser la syntaxe initiale sans le PtrSafe, que dois-je faire pour m'assurer que le module fonctionnera quelle que soit la version d'Access?

    EDIT: J'ai modifié le screen fourni car il ne me semblait pas esthétique, mais je ne suis pas parvenu à supprimer l'ancienne pièce, mes excuses.
    Images attachées Images attachées  

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Merci Thugann,

    Comme toi, je découvre l'article : je ne suis pas (encore ?) en mesure de répondre à tes questions.

    Si tu ne reçois pas de réponse ici, poste une question sur ce sujet spécifique pour attirer l'attention des spécialistes.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    Très bien, merci tout de même.

    Je ne suis pas sûr pouvoir me tourner vers un spécialiste, je n'aurai plus accès à Access d'ici demain je pense, et je fais dans du "plus" plutôt que dans du nécessaire, bien qu'à mon sens il est nécessaire pour mon application d'être portable un maximum.

    Il me reste cependant une petite question avant de marquer mon sujet en résolu. La bonne nouvelle est qu'à défaut de fonctionner sur toutes les versions, l'utilisation des modules est assez simple finalement, et je peux appeler mes fonctions sans soucis sur ma version actuelle d'Access.
    Là où ça coince désormais, et ce n'est pas glorieux, c'est pour localiser la position de mon sous-formulaire.

    Je m'explique: le but final est de pouvoir redimensionner le cadre d'un sous-formulaire dans un formulaire, afin de conserver un affichage propre quelle que soit la configuration d'un utilisateur. Pour cela, je voulais récupérer la hauteur totale du formulaire principal (jusqu'ici, pas de soucis avec GetWindowRect) ainsi que la position d'ancrage de mon sous-formulaire dessus.

    J'ai donc pris le code donné dans le tutoriel, et j'ai ajouté dans le module une fonction pour obtenir le GetWindowRect de mon sous formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Function PositionSousFormPx(NomDuFormulairePrincipal As String, NomDuSousForm As String) As Position
    Dim rectForm As RECT
    'Récupérer le rectangle de la fenêtre du formulaire
    GetWindowRect Forms(NomDuFormulairePrincipal).[NomDuSousForm].hwnd, rectForm
    'Copier les coordonnées du coin sup gauche
    PositionSousFormPx.Droite = rectForm.Left
    PositionSousFormPx.Bas = rectForm.Top
    'Calculer la largeur
    PositionSousFormPx.Largeur = rectForm.Right - rectForm.Left
    'Calculer la hauteur
    PositionSousFormPx.Hauteur = rectForm.Bottom - rectForm.Top
    End Function
    J'ai aussi testé les syntaxes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    GetWindowRect Forms(NomDuFormulairePrincipal).Forms(NomDuSousForm).hwnd, rectForm
     
    GetWindowRect Forms(NomDuFormulaire.NomDuSousFormPrincipal).hwnd, rectForm
     
    GetWindowRect Forms.[NomDuFormulairePrincipal].[NomDuSousForm].Form.hwnd, rectForm
     
    GetWindowRect Forms(NomDuFormulairePrincipal).[NomDuSousForm].Form.hwnd, rectForm
    Mais du coup, comme la fonction travaille avec des noms de formulaire, cela ne fonctionne pas. Comment puis-je faire pour passer le hwnd de mon sous formulaire?

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut

    En fait ton sous-formulaire (sur l’image LeSousFormulaire), il est inclus dans un conteneur (sur l’mage CNTRLeSousFormulaire).
    Ce sont les propriétés Largeur et Hauteur de ce conteneur que tu dois aménager.
    Pour connaître leur nom en anglais (pour utiliser dans le VBA), clique, en mode construction) sur la propriété et enfonce F1 l’aide Access te donnera les explications nécessaires.

    Reviens si je ne suis pas assez clair.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    Ah, l'éternelle touche F1.
    Hélas, je l'ai bien testée dès mes débuts, cette fameuse touche magique, et sur nombre de sujets et tutos j'ai eu droit à l'image "I love F1". Sans compter que je ne compte pas le nombre de sujets où je vous vois répéter de l'utiliser.
    Malheureusement, ça ne ne fonctionne pas chez moi, la fenêtre d'aide m'affiche la barre de recherche Bing et le contenu reste invariablement "Premiers pas avec Access 2010", sans jamais arriver sur les bons éléments.

    Mais ce n'est pas grave, je connais les termes pour les propriétés et au besoin je n'ai aucun problème pour lire et retrouver des infos en anglais.

    Concernant le conteneur, le soucis est que je souhaite que la taille du cadre s'adapte à la résolution de l'utilisateur, et que le bas de mon sous-formulaire (la barre affichant le nombre d'enregistrements, la scroll bar horizontale etc...) soit toujours positionné juste au dessus du bas du formulaire principal.
    Comme la hauteur affichée du formulaire dépend de la résolution, et que je souhaite que le point d'ancrage du sous-formulaire soit fixe, j'ai besoin d'une hauteur dynamique, qui se mettrait à jour sur chargement du formulaire et/ou sur redimensionnement de la fenêtre Access.

    C'est pour cela que je voulais une méthode me permettant de calculer la hauteur H du formulaire principal, la position du point d'ancrage h du point d'ancrage de mon sous-formulaire, et la hauteur du sous-formulaire aurait bêtement été H - h. Ainsi, peu importe l'écran, j'aurais un affichage correct. Avec probablement des soucis à gérer lors du redimensionnement de la fenêtre principale, bien entendu, mais déjà si je pouvais parvenir à ma fin j'en serais bien avancé.

    Si je comprends bien vos explications, je ne vais pas pouvoir récupérer la position du point d'ancrage de mon sous-formulaire via GetWindowRect, je me trompe?
    Du coup, vais-je être obligé de récupérer la valeur de la propriété "haut" du cadre et de l'inscrire en dur dans le code? N'y a t-il pas un conflit d'unité dans ce cas là?

    J'espérais ne pas avoir de conflit en utilisant la même fonction, et des valeurs exactes, car les valeurs des propriétés se modifient un peu, parfois.

  10. #10
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Hélas, je l'ai bien testée dès mes débuts, cette fameuse touche magique, et sur nombre de sujets et tutos j'ai eu droit à l'image "I love F1
    OK, avec l'âge, on finit par radoter !
    Pour me rassurer, ma femme me dit que c'est moins grave quand on s'en rend compte !

    Tu aurais intérêt à revoir ton installation d'Access, car tu te prives d'une mine d'infos.
    ------------

    Jette un œil ici : http://claudeleloup.developpez.com/t...comptable/#LIV

    Ce n'est pas exactement ce que tu veux faire, mais je crois que tu vas y trouver la syntaxe nécessaire pour ce que tu évoques.

    -------------

    Si je comprends bien vos explications, je ne vais pas pouvoir récupérer la position du point d'ancrage de mon sous-formulaire via GetWindowRect, je me trompe?
    À mon avis non, mais je ne suis pas un virtuose des API.


    Si je résume, actuellement tu connais les dimensions adaptées du principal et tu voudrais déplacer le sous-formulaire en conséquence.

    Peux-tu montrer une image où l'on voit le sous-formulaire et le bas du principal ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    OK, avec l'âge, on finit par radoter !
    Pour me rassurer, ma femme me dit que c'est moins grave quand on s'en rend compte !
    Il n'y a pas de soucis, j'ai moi même eu à modérer et guider des utilisateurs sur des forums, je sais ce que c'est.

    Citation Envoyé par ClaudeLELOUP Voir le message
    Tu aurais intérêt à revoir ton installation d'Access, car tu te prives d'une mine d'infos.
    Je vous crois sur parole, et je le ferais bien, mais la machine sur laquelle je travaille ne m'appartient pas, je n'ai pas les droits. De plus mon stage se termine demain, il est donc désormais un peu tard. Par chance, j'ai réussi à me sortir de mes problèmes sans le F1, jusqu'ici.

    Merci pour le lien, je regarde au plus vite.

    Citation Envoyé par ClaudeLELOUP Voir le message
    Si je résume, actuellement tu connais les dimensions adaptées du principal et tu voudrais déplacer le sous-formulaire en conséquence.

    Peux-tu montrer une image où l'on voit le sous-formulaire et le bas du principal ?
    Plus exactement, je voulais:
    - La hauteur du formulaire principal. Ça c'est bon, je l'ai grâce à GetWindowRect, et en récupérant le Bottom.
    - La distance entre le haut du principal et le haut du sous-form, le Top du sous-formulaire en fait. Là pour l'instant, ça coince, étant donné que GetWindowRect ne semble pas pouvoir me donner la réponse.
    Je ne souhaite pas exactement "déplacer le sous-formulaire", je souhaite juste redimensionner la hauteur du cadre, afin que quel que soit l'écran sur lequel l'application est affichée, la mise en forme générale reste identique.

    Concernant un screen de ce que j'ai en l'état: j'ai beau mettre en place l'application moi même, je n'ai pas le droit de montrer de contenu. Ce que j'envoie en ci-joint a été validé par la personne qui m'encadre. J'ai tout enlevé un peu brutalement, c'est donc très laid. De même, je n'ai rien pour héberger l'image sous forme d'un lien dans l'immédiat, je met donc un screen en brut à la suite, mes excuses.

    Nom : form.jpg
Affichages : 137
Taille : 43,0 Ko

    Il me faut préciser: il y a des éléments au-dessus du sous-formulaire "Contrats", le haut de ce que vous pouvez voir ici n'est pas le haut du formulaire principal.
    La flèche rouge, dessinée par l'artiste que je suis, vous indique ce sur quoi porte mon problème:
    On peut voir les deux barres d'enregistrement des formulaires: celle avec "Enr: 1 sur 8" pour le sous-formulaire, et celle avec " Enr: 1 sur 1" pour le formulaire principal.

    Je souhaite que ces deux parties soient collées, que le petit espace blanc que l'on peut voir entre les deux n'existe pas, et ce sur n'importe quel écran. Je souhaite aussi que le haut de mon cadre reste où il est.
    Bien entendu, si ça n'était que pour mon propre écran, je corrigerais ça à la main et en vitesse. Le soucis est que sur des écrans plus grands, cet espace est de très loin agrandi et ce n'est pas esthétique. À l'inverse, sur des écrans plus petits, je n'ai pas testé, mais je présume que la barre "Enr: 1 sur 8" disparaitrait en dessous de celle du formulaire principal.
    Et je ne parle pas des changements de résolution qui doivent induire les même effets, je pense.

  12. #12
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    La distance entre le haut du principal et le haut du sous-form,
    Ça, c'est le top du conteneur (dans la section Détail) + la hauteur de la section Entête + la bordure du principal
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    Le top du conteneur: je ne savais pas que cette propriété existait, voilà qui est bon à savoir.

    Je suis presque prêt à parier que la question va paraitre stupide mais pour le coup je bloque:

    À quelle bordure faites-vous référence?

  14. #14
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    D'accord, je comprend.
    Merci pour la précision, j'ai commencé à faire des tests mais j'ai des problèmes d'unités je pense. Je vais fouiller un peu, terminer tout ça, et je posterai le code final avant de mettre le sujet en résolu.

    Merci encore.

  16. #16
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    tu dois t'exprimer en twips

    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    En effet, c'est ce que je cherchais à faire.

    En fait j'ai la bonne formule, c'est très bien, ça marche. À un détail près.

    Le soucis restant est assez bête en fait: la hauteur du formulaire principal prend en compte la barre "Enr:1 sur 1" (voir sur le screen que j'ai fourni), et celle-ci, je ne sais pas s'il y a moyen d'avoir sa hauteur quelle que soit la résolution de l'écran. Je dois faire des recherches dans ce sens.

  18. #18
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,
    Citation Envoyé par Thugann Voir le message
    Le soucis restant est assez bête en fait: la hauteur du formulaire principal prend en compte la barre "Enr:1 sur 1" (voir sur le screen que j'ai fourni), et celle-ci, je ne sais pas s'il y a moyen d'avoir sa hauteur quelle que soit la résolution de l'écran. Je dois faire des recherches dans ce sens.
    Utilise la propriété InsideHeight qui est la hauteur de la zone client de la fenêtre moins les hauteurs de la barre de défilement et de la barre de déplacement des enregistrements.

    A+

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    *facepalm*
    Si j'avais su... Eh bien j'aurais fait moins de bruit pour rien.

    Merci LedZeppII, je ne connaissais pas non plus cette propriété. Et pourtant j'ai dû passer devant un paquet de fois, j'aurais dû remarquer.

    Bon eh bien en fait, du coup, pas besoin de GetWindowRect, il suffit de mettre le code suivant dans l'évènement "sur chargement" et "sur redimensionnement" du formulaire principal. Je vais tout de même vérifier que ça marche sur n'importe quel poste avant de classer le sujet en résolu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.SousForm.Height = Me.InsideHeight - Me.Sousform.Top
    Au passage, merci à tous pour votre patience et votre implication.

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    Je fais un double post pour marquer le coup:

    En effet, ça marche très bien, quel que soit l'écran. Juste un petit blindage à appliquer mais voici ce qu'il suffit de faire pour la hauteur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Me.InsideHeight - Me.SousForm.Top > 0 Then
        Me.SousForm.Height = Me.InsideHeight - Me.SousForm.Top
    End If
    Me.Section(acDetail).Height = MeSousForm.Top + Me.SousForm.Height
    Le if, c'est pour le cas où l'utilisateur masque le sous-formulaire en diminuant la hauteur de la fenêtre, sinon la hauteur devient négative et ça plante.
    La ligne de code sous le if, c'est pour supprimer la barre de défilement verticale, lorsqu'il n'y a pas d'en-tête, sinon il aurait fallu prendre la section en compte je pense.

    Bref, encore merci à vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Sous formulaire sans cadre?
    Par Squatina dans le forum IHM
    Réponses: 2
    Dernier message: 26/03/2011, 16h26
  2. [AC-2007] Sous-Formulaire Sans donnée
    Par glooping dans le forum IHM
    Réponses: 2
    Dernier message: 15/09/2009, 09h07
  3. [AC-2007] fermeture d'un sous formulaire sans enregistrement des données
    Par Oliv'83 dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/06/2009, 10h29
  4. Sous-formulaire sans enregistrement..
    Par Invité dans le forum IHM
    Réponses: 3
    Dernier message: 04/09/2006, 13h45
  5. Réponses: 2
    Dernier message: 28/09/2005, 17h08

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