OVH Cloud OVH Cloud

Comment agrandir la zone de nom?

3 réponses
Avatar
freddybee
Comment agrandir la zone de nom dans Excel de sorte à faire apparaitre
l'intégralité des noms de zones.

Merci

3 réponses

Avatar
anonymousA
bonjour,

il n'y a pas de possibilité directement sous Excel. Il faudra utiliser un
programme VBA faisant appel aux API pour réaliser ce que tu demandes.
Le programme te permettant de réaliser celà est téléchargeable sur le site
de Ivan Moala p.e mais il me semble l'avoir vu aussi ailleurs.

A+



Comment agrandir la zone de nom dans Excel de sorte à faire apparaitre
l'intégralité des noms de zones.

Merci


Avatar
michdenis
Bonjour freddybee,


'sur http://cpearson.com/excel/NameBox.htm

'In a standard code module, put the following code:

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long

Sub WidenNameBoxDrop2()
Dim Res As Long
Const CB_SETDROPPEDWIDTH = &H160
Const cWidth = 40 '<<<<<<<<<<<<<<<<<<<<<<
Res = SendMessage( _
FindWindowEx( _
FindWindowEx( _
FindWindow("XLMAIN", Application.Caption) _
, 0, "EXCEL;", vbNullString) _
, 0, "combobox", vbNullString), _
CB_SETDROPPEDWIDTH, cWidth, 0)
End Sub



Salutations!



"freddybee" a écrit dans le message de news:

Comment agrandir la zone de nom dans Excel de sorte à faire apparaitre
l'intégralité des noms de zones.

Merci
Avatar
Michel Pierron
Bonsoir freddybee;
Ajustement automatique sur le nom le plus long plus modification du nombre
d'items que tu souhaites voir afficher:

Option Explicit

' Ajuster la liste déroulante des noms du classeurs sur le nom le plus long:
Private Declare Function FindWindowA& Lib "user32" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Declare Function FindWindowExA& Lib "user32" _
(ByVal hWnd1&, ByVal hWnd2&, ByVal lpsz1$, ByVal lpsz2$)
Private Declare Function GetWindowDC& Lib "user32" (ByVal hwnd&)
Private Declare Function GetTextExtentPoint32A& Lib _
"gdi32" (ByVal hDC&, ByVal lpsz$, ByVal cbString& _
, lpSize As POINTAPI)
Private Declare Function SendMessageA& Lib "user32" _
(ByVal hwnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&)
Private Type POINTAPI
x As Long
y As Long
End Type

' Modifier le nombre d'items affichés
Private Declare Function GetClientRect& Lib "user32" _
(ByVal hwnd&, lpRect As RECT)
Private Declare Function MoveWindow& Lib "user32" _
(ByVal hwnd&, ByVal x&, ByVal y&, ByVal nWidth& _
, ByVal nHeight&, ByVal bRepaint&)
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hwnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hwnd = FindWindowA(vbNullString, Application.Caption)
hwnd = FindWindowExA(hwnd, ByVal 0&, "EXCEL;", vbNullString)
hwnd = FindWindowExA(hwnd, ByVal 0&, "ComboBox", vbNullString)
hDC = GetWindowDC(hwnd)
For i = 1 To ActiveWorkbook.Names.Count
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32A hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
' Ajuste la largeur sur le nom le + long
SendMessageA hwnd, &H160, MaxLen, 0
' Nombre de ligne à afficher
Dim Nb As Byte: Nb = 10
Dim R As RECT: GetClientRect hwnd, R
With R
R.Bottom = Txt.y * (Nb + 2)
MoveWindow hwnd, .Left, .Top, .Right - .Left, (.Bottom - .Top), 1
End With
End Sub

MP

"freddybee" a écrit dans le message de
news:
Comment agrandir la zone de nom dans Excel de sorte à faire apparaitre
l'intégralité des noms de zones.

Merci