Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 21/02/2005, 15h00   #1 (permalink)
XLDnaute Nouveau
 
Date d'inscription: février 2005
Messages: 8
Par défaut Polices

Salut à tous,

Tout d'abord je tenais à féliciter les admin. pour cette nouvelle interface fort agréable.

Je souhaiterais savoir ce qu'il va advenir des anciens post qui sont une énorme source de recherche...

Enfin je repose ma question envoyer peu de temps avant le changement...

Je cherche à obtenir le nom des polices utilisées dans une cellule.
Mais pas 'Times new Roman' mais 'Times.ttf' trop simpl autrement...
Pour info font.name me renvoie 'Times new Roman'

A+
Pedro est déconnecté   Réponse avec citation
ANNONCES
Vieux 23/02/2005, 20h34   #2 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 755
Par défaut Re:Polices

bonsoir Pedro

l'exemple ci-dessous permet d'afficher le nom de la police pour la cellule A1

necessite d'activer la reference Microsoft Shell Controls and Automation
la fonction GetFontName est de Stephane Glondu
http://perso.wanadoo.fr/stephane.glo...g/vb/a_ttf.htm


Code:
Public Declare Function CreateScalableFontResource Lib 'gdi32' _
  Alias 'CreateScalableFontResourceA' (ByVal fHidden As Long, ByVal _
   lpszResourceFile As String, ByVal lpszFontFile As String, _
   ByVal lpszCurrentPath As String) As Long

Sub informationsFontsCelluleA1()
'adapté par michelxld le 23.02.2005
'http://www.excel-downloads.com/forums/2-182-polices.htm
'testé avec Excel2002 et WinXP
Const Cible = &H14
'necessite d'activer la reference Microsoft Shell Controls and Automation
Dim objShell As Shell32.Shell
Dim objFolder As Shell32.Folder
Dim colItems As Shell32.FolderItems
Dim objItem As Shell32.FolderItem
Dim i As Integer
Dim laPolice As String

laPolice = Range('A1').Font.Name

Set objShell = CreateObject('Shell.Application')
Set objFolder = objShell.NameSpace(Cible)
Set colItems = objFolder.Items

For Each objItem In colItems
If GetFontName(objItem.Name) = laPolice Then
MsgBox objItem.Path
Exit For
End If
Next

End Sub

Public Function GetFontName(FileNameTTF As String) As String
Dim hFile As Integer, iPos As Integer
Dim Buffer As String, FontName As String, TempName As String
'source de la fonction : http://perso.wanadoo.fr/stephane.glo...g/vb/a_ttf.htm
'Crée un fichier ressources temporaire et appelle l'API
TempName = ThisWorkbook.Path & '\\~TEMP.FOT'

If CreateScalableFontResource(1, TempName, FileNameTTF, vbNullString) Then
'Dans le fichier ressources, le nom de la police est précédé de 'FONTRES:'
hFile = FreeFile

    Open TempName For Binary Access Read As hFile
      Buffer = Space(LOF(hFile))
      Get hFile, , Buffer
      iPos = InStr(Buffer, 'FONTRES:') + 8
      FontName = Mid(Buffer, iPos, InStr(iPos, Buffer, vbNullChar) - iPos)

    Close hFile
    Kill TempName
  End If

GetFontName = FontName
End Function
testé avec WinXP et Excel2002


bonne soirée
MichelXld
MichelXld est déconnecté   Réponse avec citation
Vieux 23/02/2005, 20h39   #3 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 755
Par défaut Re:Polices

rebonsoir

bon pour la mise en forme ce n'est pas encore ça ... je reprends ...


Code:
Public Declare Function CreateScalableFontResource Lib 'gdi32' _
  Alias 'CreateScalableFontResourceA' (ByVal fHidden As Long, ByVal _
   lpszResourceFile As String, ByVal lpszFontFile As String, _
   ByVal lpszCurrentPath As String) As Long

Sub informationsFontsCelluleA1()
'adapté par michelxld le 23.02.2005
'http://www.excel-downloads.com/forums/2-182-polices.htm
'testé avec Excel2002 et WinXP
Const Cible = &H14
'necessite d'activer la reference Microsoft Shell Controls and Automation
Dim objShell As Shell32.Shell
Dim objFolder As Shell32.Folder
Dim colItems As Shell32.FolderItems
Dim objItem As Shell32.FolderItem
Dim i As Integer
Dim laPolice As String

laPolice = Range('A1').Font.Name

Set objShell = CreateObject('Shell.Application')
Set objFolder = objShell.NameSpace(Cible)
Set colItems = objFolder.Items

For Each objItem In colItems
If GetFontName(objItem.Name) = laPolice Then
MsgBox objItem.Path
Exit For
End If
Next

End Sub

Public Function GetFontName(FileNameTTF As String) As String
Dim hFile As Integer, iPos As Integer
Dim Buffer As String, FontName As String, TempName As String
'source de la fonction : http://perso.wanadoo.fr/stephane.glo...g/vb/a_ttf.htm
'Crée un fichier ressources temporaire et appelle l'API
TempName = ThisWorkbook.Path & '\\~TEMP.FOT'

If CreateScalableFontResource(1, TempName, FileNameTTF, vbNullString) Then
'Dans le fichier ressources, le nom de la police est précédé de 'FONTRES:'
hFile = FreeFile

    Open TempName For Binary Access Read As hFile
      Buffer = Space(LOF(hFile))
      Get hFile, , Buffer
      iPos = InStr(Buffer, 'FONTRES:') + 8
      FontName = Mid(Buffer, iPos, InStr(iPos, Buffer, vbNullChar) - iPos)

    Close hFile
    Kill TempName
  End If

GetFontName = FontName
End Function

bonne soiree
MichelXld
MichelXld est déconnecté   Réponse avec citation
Vieux 24/02/2005, 08h49   #4 (permalink)
XLDnaute Nouveau
 
Date d'inscription: février 2005
Messages: 8
Par défaut Re:Polices

Salut

Ouahhhhhhh........... :woohoo:

Un grand merci....
Je vais pouvoir finaliser ma plateforme Excel-Autocad...
Par contre il ne fonctionne pas systématiquement... à voir....
Je ne sais pas ou il vont chercher tout cela...
Au fait comment on peut avoir connaissances des informations renvoyer par une dll...

Encore merci...

A+
Pedro est déconnecté   Réponse avec citation
Vieux 24/02/2005, 09h03   #5 (permalink)
MichelXld
Guest
 
Messages: n/a
Par défaut Re:Polices

bonjour Pedro

la macro boucle sur le dossier spécial de Windows 'Fonts' , ou sont normalement stockées toutes les polices

il se peut que certaines polices soient stockées ailleurs que dans ce repertoire spécifique , et dans ce cas la procedure ne fonctionnera pas
( comme par exemple chez moi 'WST_Swed'…)

bonne journée
MichelXld
  Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 13h56.


(C) 2006 Excel Downloads