1. #21
    Expert éminent
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    3 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 3 511
    Points : 6 037
    Points
    6 037

    Par défaut

    Citation Envoyé par patricktoulon Voir le message
    pour la "D" c'est caption(variabe avec les thèmes) + commandbars("Ribbon").height+commandbars(1).height
    Je pense que tu veux parler d'une autre dimension que celle de la "D".
    Et vois de laquelle mais il ne s'agit d'aucune de celles de ma capture d'écran.

    Je n'ai en fait rien à faire avec la barre de menu de la feuille (commandbars(1))
    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.

  2. #22
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 10 506
    Points : 25 860
    Points
    25 860
    Billets dans le blog
    4

    Par défaut

    Citation Envoyé par patricktoulon Voir le message
    [...]

    cela dit tu peux prendre n'importe la quelle elles font toutes le meme height
    [...]
    Je ne serais pas si affirmatif, si j'étais toi. A preuve CommandBars("Ribbon") dont le Height est modifié selon qu'il est réduit ou pas et selon que la barre d'outils d'accès rapide est au dessus ou en dessous...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    Vous avez apprécié l'intervention => Merci pour le
    ---------------

  3. #23
    Expert éminent
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    3 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 3 511
    Points : 6 037
    Points
    6 037

    Par défaut

    Je plussoie Pierre Fauconnier.
    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.

  4. #24
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    9 922
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 9 922
    Points : 15 914
    Points
    15 914
    Billets dans le blog
    1

    Par défaut re

    @jacques

    voila comment je place mon curseur a la limite du dessous la barre de formule pil poil

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal Y As Long) As Long
    Sub test6()
    With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With
    MsgBox Round(CommandBars(1).Height) * ppx
    SetCursorPos 400, (Application.Top * ppx) + (CommandBars("ribbon").Height) + CommandBars(1).Height
    End Sub
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  5. #25
    Expert éminent
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    3 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 3 511
    Points : 6 037
    Points
    6 037

    Par défaut

    Ne recommence s'il te plait pas, Patrick, à mélanger les chèvres et les choux.
    Les dimensions sont UNE chose, le positionnement du curseur en est UNE AUTRE, dont je ne veux pas entendre parler ici.
    Je te rappelle que l'objet de la présente discussion est la détermination des dimensions de certains éléments.
    Et le plus simple, pour rester dans l'esprit de Excel/VBA, est de déterminer ces dimensions en unités de l'échelle de points.
    Ce que Pierre, Paul ou Jacques font ensuite de ces dimensions est une autre affaire (la leur seule).
    S'il s'agit maintenant de vérifier la justesse des résultats --->> un simple label sur un userform suffit. On lui donne la dimension "résultat" et on voit (en déplaçant l'userform là où on veut vérifier) s'il y a ou non superposition.
    Si tu t'égares à nouveau avec des positionnements de curseur, je ne te répondrai même plus.
    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.

  6. #26
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    9 922
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 9 922
    Points : 15 914
    Points
    15 914
    Billets dans le blog
    1

    Par défaut re

    non je me sert de commandbars(1).height pour les displaybars etc.... y compris les heading qui ont la même dimensions chez moi visiblement

    autrement dit
    la colonne ou il y a les numéro de ligne son width = commandbars(1).height
    le header ou il y a les lettre de colonnes aussi
    les displaybars aussi
    après oui si il y a masquage du ruban c'est certain ,mais c'était pas la question de départ selon la capture

    jusque a 20 c'est la même dim
    barre1 26 Worksheet Menu Bar
    barre2 26 Chart Menu Bar
    barre3 26 WordArt
    barre4 26 Picture
    barre5 26 Drawing Canvas
    barre6 26 Organization Chart
    barre7 26 Diagram
    barre8 26 Ink Drawing and Writing
    barre9 26 Ink Annotations
    barre10 26 Circular Reference
    barre11 26 Standard
    barre12 26 Formatting
    barre13 26 PivotTable
    barre14 26 Chart
    barre15 26 Reviewing
    barre16 26 Forms
    barre17 26 Stop Recording
    barre18 26 External Data
    barre19 26 Formula Auditing
    barre20 26 Full Screen
    barre21 171 PivotChart Menu
    barre22 26 Visual Basic
    barre23 26 Web
    barre24 26 Control Toolbox
    barre25 26 Exit Design Mode
    barre26 26 Refresh
    barre27 173 Watch Window
    barre28 0 PivotTable Field List
    barre29 249 PivotChart Filter Pane
    barre30 26 Borders
    barre31 26 Protection
    barre32 26 Text To Speech
    barre33 26 List
    barre34 26 Compare Side by Side
    barre35 84 Workbook tabs
    barre36 389 Cell
    barre37 304 Column
    barre38 304 Row
    barre39 389 Cell
    barre40 441 Column
    barre41 441 Row
    barre42 277 Ply
    barre43 279 XLM Cell
    barre44 250 Document
    barre45 111 Desktop
    barre46 304 Nondefault Drag and Drop
    barre47 304 AutoFill
    barre48 306 Button
    barre49 86 Dialog
    barre50 144 Series
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  7. #27
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    9 922
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 9 922
    Points : 15 914
    Points
    15 914
    Billets dans le blog
    1

    Par défaut re

    S'il s'agit maintenant de vérifier la justesse des résultats --->> un simple label sur un userform suffit. On lui donne la dimension "résultat" et on voit (en déplaçant l'userform là où on veut vérifier) s'il y a ou non superposition.
    c'est ca ton astuce simple ?
    il faut donc travailler a la main ca se fait pas automatiquement

    je t'ai donner l'exemple du curseur mais ca n'était pas cela qu'il fallait que tu vois mais le calcul
    ca qui est certain c'est que sans api il y a des données que l'on ne peut pas avoir
    donc perso je part du point 0 de la grille et j'enlève jusqu'à la caption
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  8. #28
    Expert éminent
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    3 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 3 511
    Points : 6 037
    Points
    6 037

    Par défaut

    c'est ca ton astuce simple ?
    Ce n'est pas une "astuce". C'est (uniquement pour ceux qui veulent vérifier la justesse des résultats) un moyen simple (s'ils y tiennent) de le vérifier visuellement PUREMENT, sans autres "pollutions" éventuelles.
    Cette "astuce" sera totalement absente du code que je montrerai et qui, lui, retournera des dimensions en points. Libre à qui veut ensuite vérifier, de le faire comme il l'entend, hein ...
    Bref ...
    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.

  9. #29
    Expert éminent
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    3 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 3 511
    Points : 6 037
    Points
    6 037

    Par défaut

    ca qui est certain c'est que sans api il y a des données que l'on ne peut pas avoir
    Puisque TU l'affirmes !
    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.

  10. #30
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 10 506
    Points : 25 860
    Points
    25 860
    Billets dans le blog
    4

    Par défaut

    Citation Envoyé par patricktoulon Voir le message
    [...]non je me sert de commandbars(1).height pour les displaybars etc.... y compris les heading qui ont la même dimensions chez moi visiblement
    [...]
    Mais que vient faire la hauteur de Commandbars(1) ici? C'est une "vielle" barre de commande des versions <2007 qui n'est même pas visible à l'écran.

    Je plussoie Jacques lorsqu'il dit
    Citation Envoyé par unparia Voir le message
    [...]
    Je n'ai en fait rien à faire avec la barre de menu de la feuille (commandbars(1))
    Tu ne peux pas t'appuyer sur cette barre seule pour déduire que toutes les barres ont la même hauteur. Fais une boucle sur toutes les commandbars et tu verras qu'elles ne sont pas toutes d'égale hauteur, voire même que certaines, je t'ai donné l'exemple de Ribbon, changent selon ta configuration. Tu ne peux pas non plus t'appuyer là-dessus pour déterminer que le header a lui aussi une hauteur de 26 points. Ce n'est pas raisonnable de procéder ainsi, Header et commandBar étant des objets qui n'ont rien à voir entre eux.

    Adopte une démarche scientifique et rigoureuse, stp, sinon on est parti pour une discussion aussi longue et pénible à lire que la précédente
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    Vous avez apprécié l'intervention => Merci pour le
    ---------------

  11. #31
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    9 922
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 9 922
    Points : 15 914
    Points
    15 914
    Billets dans le blog
    1

    Par défaut re

    oui je l'affirme

    la caption tu ne peut l'avoir sans api que par calcul rétroactif surtout que la on est encore dans les divergences selon thèmes et même version Excel ca déjà je peux le confirmer

    excel 2007/2010 pas le meme ruban
    la barre de formule comprise dans le height de la commandbars("ribbon")dans 2010 pas dans 2007
    etc... etc...
    la barre d'onglet aussi ou utiliser le com....(1).height

    j'avais fait ces test depuis bien longtemps

    la meilleure façon est la plus précise que j'ai trouvé jusqu'ici c'est de tout masquer au départ ruban, barre de formule etc.....

    les afficher une a une et prendre le ptscrpix(0) puis convertir en point a cela enlever le app.top

    pareil pour l'horizontale

    je me suis d'ailleurs fait un complément qui enregistre ses données da le reg ,on le fait une fois puis terminé on recommence quand on change de pc

    attention que pour 2007 pour 2010 je ne l'ai pas fait car c'est un peu différents

    bref j'attends de voir ca
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  12. #32
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 10 506
    Points : 25 860
    Points
    25 860
    Billets dans le blog
    4

    Par défaut

    Que vient faire le caption dans une discussion sur des dimensions?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    Vous avez apprécié l'intervention => Merci pour le
    ---------------

  13. #33
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    9 922
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 9 922
    Points : 15 914
    Points
    15 914
    Billets dans le blog
    1

    Par défaut re

    que vient faire la caption
    et bien donne moi l'object qui te donne le height de la barre d'onglet (accueil ,insertion ,etc....) walouh walouh!!!
    le commandbars("ribbon").height le prends en compte sur 2007
    alors dis moi comment tu le trouve celle la de dimension ????
    plusoit rien du tout
    bref je vais attendre la démo on verra bien
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  14. #34
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 10 506
    Points : 25 860
    Points
    25 860
    Billets dans le blog
    4

    Par défaut

    Patrick,

    je n'ai RIEN compris à ton message.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    Vous avez apprécié l'intervention => Merci pour le
    ---------------

  15. #35
    Expert éminent
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    3 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 3 511
    Points : 6 037
    Points
    6 037

    Par défaut

    et bien donne moi l'object qui te donne le height de la barre d'onglet (accueil ,insertion ,etc....) walouh walouh!!!
    Et qui l'a demandé, Patrick ? Pas moi (il m'est totalement inutile, d'ailleurs) (****** et voir EDIT)

    Et (bis repetita) je sais maintenant déjà les extraire, les dimensions que je souhaite extraire.
    Vérifié avec xp (donc sans aero) et Office 2007.
    En test ailleurs sur d'autres machines, puis à adapter au besoin.
    Et si une autre version office englobe comme tu le dis la barre de formule, je pense que mon code/version 2007 l'intègrera déjà (automatiquement, donc) dans mon calcul de la dimension C (capture d'écran).
    Quant à la "barre d'onglet", elle est quant à elle déjà intégrée dans le calcul de cette dimension C !
    Et je ne cours pas le risque d'utiliser la méthode PointsToScreenPixels non plus, hein ...

    EDIT : ****** et je me suis donc amusé ce matin à voir si je pouvais déterminer également la hauteur de cette barre (toujours sans API) --->> oui.
    Mais tu n'en auras le code (si TU y tiens) que lorsque la présente discussion (qui n'en traite pas, de cette dimension) sera terminée. Pas question de "bifurquer" une fois de plus vers d'autres choses.
    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.

  16. #36
    Expert éminent
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    3 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 3 511
    Points : 6 037
    Points
    6 037

    Par défaut

    Bonjour
    Je ne suis pas revenu plus tôt dans cette discussion que parce que le code que j'avais écrit pour Excel 2007 et sans aero (sous XP), fonctionnait très bien sur ma machine, mais que les démarches qu'il utilisait se sont avérées ne pas être adaptées telles quelles à Office 2010.
    J'ai donc du changer mon fusil d'épaule et aborder des méthodes très différentes qui, elles, devraient être plus facilement adaptables (à peu de frais selon ce que je pense) à d'autres versions de Office.
    Voici donc le code de cette nouvelle méthode :
    1) Sur une feuille avec un bouton de commande CommandButton1, ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Option Explicit
    Private Sub CommandButton1_Click()
      Dim elem As Double, sens As String  ' sens n'est là que pour la procédure de vérification isuelle (à supprimer ensuite)
      ' décommenter la dimension à tester (et elle seule)
     
      'elem = dim_elements.app_titre ' --->>  hauteur de la barre de titre (choisir sens = "h" pour tester)
       elem = dim_elements.app_titre_ruban_onglets '--->> hauteur cumulée : barre de titre + onglets du menu + ruban
      ' elem = dim_elements.app_ruban_onglets '--->> hauteur cumulée :  onglets du menu + ruban
      ' elem = dim_elements.app_formule ' --->> hauteur de la seule barre de formules
      ' elem = dim_elements.app_titre_ruban_onglet_formule '--->> hauteur cumulée : barre de titre + onglets du menu + ruban + barre de formules
     
     
      'elem = dim_elements.act_titre ' --->> hauteur de la seule barre de titres de la fenêtre active
      'elem = dim_elements.act_col_titre ' --->>> hauteur de la barre des lettres de colonnes
      'elem = dim_elements.act_lignes_titre '--->>  largeur de la barre des numéros de ligne, sans marge gauche
      ' elem = dim_elements.act_marge_gauche ' ---->> largeur de la seule marge gauche de la fenêtre active
      ' elem = dim_elements.act_lignes_titre_et_marge_gauche ' ---->> largeur de la barre des numéros de ligne + marge gauche
      verifions elem ' n'est là que pour ceux qui souhaitent tester le résultat.
      msgbox elem & " points"
    End Sub
     
    ' pour ceux qui souhaitent visualiser en test
    Private Sub verifions(la_dim As Double)
       With UserForm1
         .StartUpPosition = 0
         .Top = -(.Height - .InsideHeight) + Application.Top
         .Left = ActiveSheet.Shapes("commandbutton1").Width * 1.1
         .BorderStyle = fmBorderStyleNone
         .Label1.BackColor = vbRed
         .Label1.BorderStyle = fmBorderStyleNone
          .Label1.Left = 0
          .Label1.Top = 0
          .Label1.Height = la_dim
          .Label1.Width = la_dim
         .Show 0
       End With
    End Sub
    A noter :
    - pour obtenir une dimension, ne décommenter que celle en cause, les autres étant à commenter.
    - la procédure verifions n'est là que pour ceux qui voudraient s'en servir pour vérifier "graphiquement". Libre à chacun de procéder comme IL l'entend (par SES méthodes) à cette vérification.

    2) dans un module standard, ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    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
    Option Explicit
    Public Type elements_appli
      '1) les éléments de la fenêtre Application
         app_titre As Double ' la hauteur de la barre de titre
         app_ruban_onglets As Double ' hauteur de la barre d'onglets + hauteur du ruban
                  'app_onglets As Double ' en instance pour Patrick (s'il tient vraiment à ceci également)
         app_titre_ruban_onglets As Double ' hauteur cumulée : barre de titre + onglets + ruban
         app_titre_ruban_onglet_formule As Double ' hauteur cumulée barre de titre + onlets + ruban + barre de formules
         app_formule As Double ' hauteur de la barre de formule seule
      '2) les éléments de la fenêtre active (ActiveWindow)
         act_titre As Double ' hauteur de la barre de titre de la fenêtre active
         act_col_titre As Double ' hauteur de la barre des lettres de colonne
         act_lignes_titre As Double ' largeur de la barre des numéros de ligne
         act_marge_gauche As Double ' petit bonus : largeur de la marge gauche de la fenêtre active
         act_lignes_titre_et_marge_gauche As Double
    End Type
     
    Public Function dim_elements() As elements_appli
      Application.ScreenUpdating = False
      Dim deja As Boolean, pleinecran As Boolean, z As Double, bg As Double, anc As Range
      z = ActiveWindow.Zoom / 100
      Set anc = ActiveCell
      pleinecran = Application.DisplayFullScreen
      With dim_elements
        deja = Application.CommandBars("Ribbon").Height > 100
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",not deja)"
        .app_titre = Application.CommandBars.ActiveMenuBar.Height
        If Not pleinecran Then
          .app_titre_ruban_onglets = touty
          .app_ruban_onglets = .app_titre_ruban_onglets - .app_titre
        End If
        Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", deja)"
        .app_formule = deterformule
        .app_titre_ruban_onglet_formule = .app_titre_ruban_onglets + .app_formule
        If pleinecran Then
          .app_ruban_onglets = .app_titre
          .app_titre_ruban_onglet_formule = .app_titre
          .app_titre_ruban_onglets = .app_titre
         End If
         Range("A1").Activate
         .act_col_titre = IIf(pleinecran, 0, ExecuteExcel4Macro("GET.CELL(43)") * z)
         .act_lignes_titre = ExecuteExcel4Macro("GET.CELL(42)") * z
         If Not ActiveWindow.DisplayHeadings Then .act_lignes_titre = 0
         deja = ActiveWindow.DisplayVerticalScrollBar
         ActiveWindow.DisplayVerticalScrollBar = False
         If pleinecran Then
           bg = 0
         Else
           bg = (ActiveWindow.Width - ActiveWindow.UsableWidth) / 2
         End If
         .act_lignes_titre_et_marge_gauche = .act_lignes_titre + bg
         ActiveWindow.DisplayVerticalScrollBar = deja
         .act_marge_gauche = bg
         .act_titre = IIf(ActiveWindow.WindowState = xlMaximized, 0, .app_titre)
         anc.Select
      End With
      Application.ScreenUpdating = True
    End Function
    Private Function touty() As Double
       Application.ScreenUpdating = False
       touty = Application.UsableHeight
       Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",false)"
       touty = Application.UsableHeight - touty
       Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",true)"
       DoEvents
    End Function
    Private Function deterformule() As Double
       If Application.DisplayFullScreen Then deterformule = 0: Exit Function
       Application.ScreenUpdating = False
       Dim dim_temp As Double
       If Not Application.DisplayFormulaBar Then
          deterformule = 0
       Else
         dim_temp = Application.UsableHeight
         Application.DisplayFormulaBar = False
         dim_temp = Application.UsableHeight - dim_temp
         Application.DisplayFormulaBar = True
         Application.ScreenUpdating = True
         deterformule = dim_temp
       End If
    End Function
    3) pour ceux qui souhaiteraient utiliser la procédure verifions :
    - un userform UserForm1 avec un bouton de commande CommonButton1 dont le caption est : "Quitter"
    - un Label Label1 avec sa propriété BorrderStyle = 0 et sa propriété Backcolor à rouge et son caption à ""
    - ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    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
    Option Explicit
    Private Type RECT
            Left As Long
            Top As Long
            Right As Long
            Bottom As Long
    End Type
     
    Const GWL_STYLE = (-16)
    Const WS_CAPTION = &HC00000
    Const SWP_FRAMECHANGED = &H20
    Private Declare Sub ReleaseCapture Lib "user32" ()
     
    Private Declare Function FindWindowA Lib "user32" _
            (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
    Private Declare Function GetWindowRect Lib "user32" _
            (ByVal hwnd As Long, lpRect As RECT) As Long
     
    Private Declare Function GetWindowLong Lib "user32" Alias _
            "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
     
    Private Declare Function SetWindowLong Lib "user32" Alias _
            "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, _
            ByVal dwNewLong As Long) As Long
     
    Private Declare Function SetWindowPos Lib "user32" _
            (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, _
            ByVal y As Long, ByVal cx As Long, ByVal cy As Long, _
            ByVal wFlags As Long) As Long
     Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
     
    Private lHwnd As Long
    Const coucou As Integer = 1
    Dim letop As Single, leleft As Single
     
     
    Private Sub CommandButton1_Click()
      Unload Me
    End Sub
     
     
    Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
      If Button = 1 Then
         letop = y: leleft = x
      End If
    End Sub
     
     
    Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
      If Button = 1 Then
        gauche = Label1.Left + (x - leleft) / coucou
        haut = Label1.Top + (y - letop) / coucou
        Label1.Move gauche, haut
      End If
    End Sub
     
    Private Sub UserForm_Initialize()
     
      AfficheTitleBarre Me.Caption, False
    End Sub
    Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
      ReleaseCapture
      SendMessage lHwnd, &HA1, 2, 0&
    End Sub
     
    Sub AfficheTitleBarre(stCaption As String, pbVisible As Boolean)
        Dim vrWin As RECT
        Dim style As Long
        lHwnd = FindWindowA(vbNullString, stCaption)
        If lHwnd = 0 Then
            msgbox "Handle de " & stCaption & " Introuvable", vbCritical
            Exit Sub
        End If
        GetWindowRect lHwnd, vrWin
        style = GetWindowLong(lHwnd, GWL_STYLE)
        If pbVisible Then
            SetWindowLong lHwnd, GWL_STYLE, style Or WS_CAPTION
        Else
            SetWindowLong lHwnd, GWL_STYLE, style And Not WS_CAPTION
        End If
        SetWindowPos lHwnd, 0, vrWin.Left, vrWin.Top, vrWin.Right - vrWin.Left, _
                vrWin.Bottom - vrWin.Top, SWP_FRAMECHANGED
    End Sub
    Juste un mot à ce propos : tant le userform que le label sont déplaçables en gardant enfoncé le bouton gauche de la souris. Cela permet de positionner où l'on veut pour mieux "voir" et comparer.

    Voilà : le reste est auto-explicite (lire les commentaires). Notez que je relève en plus des dimensions que je n'avais pas prévu de relever (la marge gauche de la barre de titre des n°s de ligne, par exemple).

    Insistons sur un point : ce code fonctionne très bien avec Office 2007
    J'attends des retours de ceux qui utilisent d'autres versions pour l'adapter au besoin. Il a été écrit pour faciliter cette adaptation.
    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.

  17. #37
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    9 922
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 9 922
    Points : 15 914
    Points
    15 914
    Billets dans le blog
    1

    Par défaut rer

    j'aime l'utilisation de variable typée ca correspond plus a mon style d'écriture
    on peux simplifier les apis si tu veux t'a qua demander

    pour le reste je vais tester OK
    chez moi W7 2007 et W10 2010
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  18. #38
    Expert éminent
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    3 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 3 511
    Points : 6 037
    Points
    6 037

    Par défaut

    on peux simplifier les apis si tu veux t'a qua demander
    Quelles "apis" ? Les seules fonctions de l'api de windows que j'utilise ne sont là que pour la vérification visuelle (procédure à supprimer ensuite).
    Et même en ce qui concerne cet aspect purement "colatéral" (rien à voir avec les calculs des dimensions), j'aurais pu écrire sans la moindre fonction de l'Api (sauf pour la suppression de la barre de titre du userform, que je n'ai mise que pour faciliter encore plus la comparaison).
    Laisse donc totalement tomber cela. La seule chose qui m'intéresse, c'est l'exactitude ou non, sous d'autres versions, des résultats obtenus.
    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.

  19. #39
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    9 922
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 9 922
    Points : 15 914
    Points
    15 914
    Billets dans le blog
    1

    Par défaut re

    revois quand même le left du userform quand l'application n'est pas maximisée on a pas un visuel clair quand de userform n'est pas dans l'app sur l'écran
    perso j'ai patcher me.left=application.left

    sinon j'ai testé les 3 premiers commentaires ca a l'air d'être bon

    hotte moi d'un doute c'est bien le label que l'on doit regarder pas l'usf ? car l'usf est un peu plus haut
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  20. #40
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    9 922
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 9 922
    Points : 15 914
    Points
    15 914
    Billets dans le blog
    1

    Par défaut re

    re
    autant pour moi avec le userform bien dans l'app déjà la barre de titre c'est faux
    Nom : Capture.JPG
Affichages : 20
Taille : 60,8 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/07/2014, 10h37
  2. Extraction des données dans plusieurs tableaux
    Par mayradouane dans le forum PHP & MySQL
    Réponses: 5
    Dernier message: 28/12/2013, 19h05
  3. Réponses: 0
    Dernier message: 30/05/2013, 00h08
  4. Synchroniser des données entre plusieurs instances d'une même application
    Par wil4linux dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 12/02/2013, 13h58
  5. Probléme lors de l'extraction des valeurs d'un élément
    Par Sweet_Pro dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 27/06/2012, 17h15

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