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
| Option Explicit
Type Taille_32
cx As Long
cy As Long
End Type
Declare Function FindWindow32 Lib "user32" Alias "FindWindowA" (ByVal Classe As String, ByVal F_Windows As String) As Long
Declare Function GetDC32 Lib "user32" Alias "GetDC" (ByVal G_DC As Long) As Long
Declare Function DeleteObject32 Lib "gdi32" Alias "DeleteObject" (ByVal H_Objet As Long) As Long
Declare Function ReleaseDC32 Lib "user32" Alias "ReleaseDC" (ByVal G_DC As Long, ByVal S_Objet As Long) As Long
Declare Function SelectObject32 Lib "gdi32" Alias "SelectObject" (ByVal S_Objet As Long, ByVal H_Objet As Long) As Long
Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPointA" _
(ByVal S_Objet As Long, ByVal S_lpz As String, ByVal S_cb As Long, Taillelp_32 As Taille_32) As Long
Declare Function CreateFont32 Lib "gdi32" Alias "CreateFontA" _
(ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal WP As Long, ByVal I As Long, _
ByVal u As Long, ByVal s As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, _
ByVal PAF As Long, ByVal F As String) As Long
Dim T_a_trouver As String
Function Taille_Texte(ByVal S_Text, S_P_Nom As String, iT_Texte As Long, S_P_Weight As Long)
S_P_Weight = IIf(Range("A1").Font.Bold, 800, 400)
Dim O_Police As Long
Dim G_DC As Long
Dim S_Objet As Long
Dim N_Police As Long
Dim P_long As Long
Dim T_Texte As Taille_32
G_DC = FindWindow32("A_XL", Application.Caption)
S_Objet = GetDC32(G_DC)
N_Police = CreateFont32(iT_Texte * -20, 0, 0, 0, S_P_Weight, 0, 0, 0, 0, 0, 0, 0, 0, S_P_Nom)
O_Police = SelectObject32(S_Objet, N_Police)
P_long = GetTextExtentPoint32(S_Objet, S_Text, Len(S_Text), T_Texte)
N_Police = SelectObject32(S_Objet, O_Police)
P_long = DeleteObject32(N_Police)
P_long = ReleaseDC32(G_DC, S_Objet)
Taille_Texte = T_Texte.cx / 20
End Function
Sub Test()
T_a_trouver = InputBox("Tapez votre texte"): Range("A1") = T_a_trouver
MsgBox ("La taille du texte est " & Taille_Texte(Range("A1"), Range("A1").Font.Name, Range("A1").Font.Size, Range("A1").Font.Bold))
End Sub |
Partager