Hauteur ligne de titre

Le
Jacky
Bonsoir,

Je cherche un moyen de connaitre la hauteur de la ligne de titre en vba :
- D'une feuille
- D'un userform

Merci et bonne soirée
JJ
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #24709522
Bonjour Jacky,

Question de compliquer un peu les choses :

Dans un module standard :

Type Pos
État As Long
Gauche As Integer
Haut As Integer
End Type
'-------------------------------------------------
Sub test()
Dim MichD As Pos
Dim X As Integer, Y As Integer

With ActiveWindow
MichD.État = .WindowState
MichD.Gauche = .Left
MichD.Haut = .Top
End With

Application.ScreenUpdating = False
With ActiveWindow
.WindowState = xlMaximized
X = .VisibleRange.Height
.WindowState = xlNormal
.Top = 0
.Left = 0
Y = .VisibleRange.Height
End With

With ActiveWindow
.WindowState = MichD.État
If .WindowState = xlNormal Then
.Left = MichD.Gauche
.Top = MichD.Haut
End If
End With
Application.ScreenUpdating = True
MsgBox X - Y & " points."

End Sub
'-------------------------------------------------
MichD
Le #24709902
Toutes mes excuses, j'ai omis un petit détail...;-)

On devrait plutôt utiliser ceci pour calculer la barre de titre d'une
feuille lorsque cette dernière est en mode "Normal"

Dans le haut d'un module standard :

Type Pos
État As Long
Gauche As Integer
Haut As Integer
HauteurFenêtre As Integer
End Type

'-----------------------------------------------------------
Sub test()
Dim MichD As Pos
Dim X As Integer, Y As Integer

With ActiveWindow
MichD.État = .WindowState
MichD.Gauche = .Left
MichD.Haut = .Top
MichD.HauteurFenêtre = .Height
End With

Application.ScreenUpdating = False
With ActiveWindow
.WindowState = xlMaximized
X = .VisibleRange.Height
.WindowState = xlNormal
.Height = X
.Top = 0
.Left = 0
Y = .VisibleRange.Height
End With

With ActiveWindow
.WindowState = MichD.État
If .WindowState = xlNormal Then
.Left = MichD.Gauche
.Top = MichD.Haut
.Height = MichD.HauteurFenêtre
End If
End With
Application.ScreenUpdating = True
MsgBox X - Y & " points."

End Sub
'-----------------------------------------------------------

Pour calculer la hauteur de la barre de titre d'une application, tu utilises
les concepts suivants :

A ) la hauteur de l'application lorsque la fenêtre est en mode "pleine
grandeur"
B ) Tu passes en mode "plein écran" et il n'y a que la barre de titre qui
est affichée.
C ) Mesure la hauteur de la fenêtre
D ) Soustraction entre la valeur en A - la valeur trouvée en C


Pour trouver la valeur de la barre de titre d'un formulaire :
En supposant que le code est dans le formulaire :
'----------------------------------
With Me
X = .Height - .InsideHeight
End With
'----------------------------------
MichD
Le #24710592
Tiens, voilà la procédure dans ce fichier exemple :
http://cjoint.com/?BHuqqhk8IwF
Jacky
Le #24710672
Ok
C'est parfait également pour moi, xp et win7
Je peux maintenant récupérer la hauteur de la ligne de titre dans les 2 systèmes.
Merci Denis
--
Salutations
JJ


"MichD"
Tiens, voilà la procédure dans ce fichier exemple : http://cjoint.com/?BHuqqhk8IwF



MichD
Le #24710752
Je sais que tu as tout compris, mais j'ajoute quelques explications pour les
autres ;-)

Dans la procédure 1, la propriété "UsableHeight" est définie dans l'aide
comme suit :
'----------------------------
renvoie la hauteur maximale, exprimée en points (point : unité de mesure qui
fait référence à la hauteur d’un caractère imprimé. Un point est égal à
1/72e de pouce, soit environ 1/28e de centimètre.), de l'espace pouvant être
occupé par une fenêtre dans l'espace de travail de l'application. Type de
données Double en lecture seule.
'----------------------------
Ce qu'il n'est pas dit dans l'aide, c'est que les "en-têtes" de colonnes
font partie de l'espace défini dans l'espace
de travail de l'application qu'elle soit visible ou non. Conséquemment,
lorsque la fenêtre active est en mode "normal" la procédure I masque la
barre de titre de la feuille + les en-têtes de colonnes. La hauteur de la
barre de titre de l'application + la hauteur des barres d'outils sont
représentées par ceci : H = X - Y . On peut maintenir la barre des formules
visibles durant l'exécution de la procédure I ou pas, cela ne va pas
affecter le résultat.


Procédure I
'---------------------------------------
Sub MiseEnPlaceActiveWindow()
Dim H As Double, T As Double
Dim X As Double, Y As Double

Application.DisplayFormulaBar = False
With ActiveWindow
.DisplayHeadings = True
.DisplayWorkbookTabs = True
.WindowState = xlMaximized
X = .UsableHeight
.WindowState = xlNormal
.Height = X
Y = .UsableHeight
H = X - Y

If Application.Top <= 0 Then
T = H + Application.Top
Masquer_barre_de_titre T
Else
T = H - Application.Top
Masquer_barre_de_titre T
End If
End With
ActiveWindow.DisplayHeadings = True
With Application
.DisplayFormulaBar = True
.ScreenUpdating = True
End With
End Sub
'---------------------------------------

Procédure II

Si tu veux connaître la hauteur de la barre des "En-têtes de colonnes,
utilise la procédure II. La propriété " .VisibleRange.Height" de l'objet
"ActiveWindow" te permettra d'évaluer la hauteur de la barre d'en-têtes

'-----------------------------------------------------
Sub Hauteur_En_Têtes_Colonnes()
With ActiveWindow
.DisplayHeadings = False
X = .VisibleRange.Height
.DisplayHeadings = True
Y = .VisibleRange.Height
T = X - Y
End With
End Sub
'-----------------------------------------------------

Finalement, si ce qui t'intéresse est la seule hauteur de la barre de titre
de
la feuille en mode normal, tu devras soustraire de la procédure 1 le
résultat
de la procédure II. Idéalement, tu peux joindre la procédure II à la
procédure I
pour ne former qu'une procédure...Tu ne devrais pas rencontrer trop de
difficultés
à faire cela au besoin.





"Jacky" a écrit dans le message de groupe de discussion :
k0topa$plh$

Ok
C'est parfait également pour moi, xp et win7
Je peux maintenant récupérer la hauteur de la ligne de titre dans les 2
systèmes.
Merci Denis
--
Salutations
JJ


"MichD" k0th04$5jq$
Tiens, voilà la procédure dans ce fichier exemple :
http://cjoint.com/?BHuqqhk8IwF



MichD
Le #24710762
J'allais oublier :

La hauteur de la barre des en-têtes de colonnes est de 15 points.

La hauteur de la barre de titre de feuille en mode normal est de 27.75

Je n'ai pas testé, mais j'ai comme l'impression que ces hauteurs sont
constantes
pour toutes les versions d'Excel de 1997 à 2010 et ce indépendamment de la
version du système d'opération de Windows.

Si cela s'avère juste, tu peux te contenter de déclarer des constantes
"Public" dans
le haut d'un module standard comme ceci :

Public Const HbarreTitre As Double = 27.75
Public Const HEnTete As Double = 15

C'est quand même plus court que l'écriture de ces macros et leur
exécution...!
Jacky
Le #24710812
RE..
Je n'ai pas testé, mais j'ai comme l'impression que ces hauteurs sont constantes pour toutes les versions
d'Excel



Mais modifiable dans les paramètres d'affichage de Windows, non ?
Qui ne sont pas forcement les mêmes d'un pc à un autre ou d'un os à un autre
--
Salutations
JJ


"MichD"
J'allais oublier :

La hauteur de la barre des en-têtes de colonnes est de 15 points.

La hauteur de la barre de titre de feuille en mode normal est de 27.75

Je n'ai pas testé, mais j'ai comme l'impression que ces hauteurs sont constantes
pour toutes les versions d'Excel de 1997 à 2010 et ce indépendamment de la
version du système d'opération de Windows.

Si cela s'avère juste, tu peux te contenter de déclarer des constantes "Public" dans
le haut d'un module standard comme ceci :

Public Const HbarreTitre As Double = 27.75
Public Const HEnTete As Double = 15

C'est quand même plus court que l'écriture de ces macros et leur exécution...!



MichD
Le #24710842
| Mais modifiable dans les paramètres d'affichage de Windows, non ?

Es-tu certain de ce que tu avances? Je n'ai jamais vu un endroit dans
Windows
où l'on pouvait modifier la DIMENSION de la barre d'en-têtes des colonnes
d'Excel ou des barres de titre des applications.

Si tu sais où trouver cela, j'aurai appris quelque chose aujourd'hui!
Jacky
Le #24710872
Si tu sais où trouver cela, j'aurai appris quelque chose aujourd'hui!


Ben, je n'invente rien......
Si l'on modifie les dimensions de la barre de titre active, cela affecte également la barre de titre d'excel
http://cjoint.com/?BHuvqjlbgoQ

--
Salutations
JJ


"MichD"

| Mais modifiable dans les paramètres d'affichage de Windows, non ?

Es-tu certain de ce que tu avances? Je n'ai jamais vu un endroit dans Windows
où l'on pouvait modifier la DIMENSION de la barre d'en-têtes des colonnes
d'Excel ou des barres de titre des applications.

Si tu sais où trouver cela, j'aurai appris quelque chose aujourd'hui!
MichD
Le #24710892
Je me souvenais plus qu'on pouvait modifier cela.
Merci de me rafraîchir la mémoire.

Je n'ai pas trouvé où c'est sous Windows 8... De toute façon, je ne vais
jamais jouer là!
;-)
Publicité
Poster une réponse
Anonyme