bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
Bonjour,
personnellement j'ai trouvé sur AllApi.net
http://www.mentalis.org/index2.shtml
le fichier ApiGuide.exe (API-Guide 3.7 (+/- 2.20MB))
http://users.chello.be/cr27630/3.7/agsetup.exe
'------------------
API-Guide
(current version: 3.7.854, released on 2002/03/31)
Many people have asked us if they could download our API
list because they couldn't go online for a very long time
and it could take ages to download all the API examples.
Of course, this was very unpractical, since the list is
changing every month.
For these people we've created API-Guide! API-Guide is an
API database with all the API functions of our API list.
API-Guide has over 900 functions, all documented, and
explained with an example. Several functions also have a
dotNET equivalent and dotNET example code.
'------------------------------
@+-----Message d'origine-----
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API
qu'il peut être intéressantd'appeler depuis VBA, idéalement avec un bref descriptif
pour chacune ?
Ton code marche très bien. Sais-tu s'il est également
possible de faire varierla hauteur de la liste ? Le document sur lequel je
travaille en ce moment comporteenviron 500, et la liste n'en affiche que 7 à la fois ;-
(((Bisous à tous;
Voici comment ajuster la liste déroulante des noms du
classeurs sur le nom le pluslong:
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _(ByVal lpClassName As String, ByVal lpWindowName As
String) As LongPrivate 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
Private Declare Function GetWindowDC Lib "user32"
(ByVal hWnd As Long) As LongPrivate Declare Function GetTextExtentPoint32
Lib "gdi32" Alias"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal
cbString As Long _, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam
As Long _, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;",
vbNullString)hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox",
vbNullString)For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans le
message denews:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je
n'utilise jamais pour 4raisons :
1 - Je suis un dinosaure, et de mon point de vue, il
s'agit d'une option récentedansl'histoire d'Excel, qui n'apporte pas grand chose.
Quant à la liste qui permetensuitede sélectionner une plage, elle est très peu
fonctionnelle à cause de l'absenced'ascenseur(j'ai couramment plusieurs centaines de noms dans un
classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis
claviers : Ctrl + F3 pourdéfinirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement
pour les plages (constantes,formules),et je trouve + simple d'utiliser toujours la même
méthode pour définir un nom.
4 - D'autre part je trouve cette zone ridiculement
étroite : de nombreux noms nesontlisibles qu'en partie. J'ignore s'il existe une façon
de l'élargir ;-((merci denis...après plusieurs essais, j'ai compris
(le premier qui dit"quand même", je le brûle) qu'il fallait faire
entrée après avoir écritle nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section
extrême gauche de la barre desformules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit
dans le message denews:bonjour
je remarque qu'avec XL 2002 je n'ai pas le
bouton "définir un nom" dansle menu contextuel affiché par un click droit
dans une cellule alors quej'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
Bonjour,
personnellement j'ai trouvé sur AllApi.net
http://www.mentalis.org/index2.shtml
le fichier ApiGuide.exe (API-Guide 3.7 (+/- 2.20MB))
http://users.chello.be/cr27630/3.7/agsetup.exe
'------------------
API-Guide
(current version: 3.7.854, released on 2002/03/31)
Many people have asked us if they could download our API
list because they couldn't go online for a very long time
and it could take ages to download all the API examples.
Of course, this was very unpractical, since the list is
changing every month.
For these people we've created API-Guide! API-Guide is an
API database with all the API functions of our API list.
API-Guide has over 900 functions, all documented, and
explained with an example. Several functions also have a
dotNET equivalent and dotNET example code.
'------------------------------
@+
-----Message d'origine-----
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API
qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif
pour chacune ?
Ton code marche très bien. Sais-tu s'il est également
possible de faire varier
la hauteur de la liste ? Le document sur lequel je
travaille en ce moment comporte
environ 500, et la liste n'en affiche que 7 à la fois ;-
(((
Bisous à tous;
Voici comment ajuster la liste déroulante des noms du
classeurs sur le nom le plus
long:
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32"
(ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32
Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal
cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam
As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;",
vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le
message de
news:40346908.69D2C9E@Suppgaboly.com...
Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je
n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il
s'agit d'une option récente
dans
l'histoire d'Excel, qui n'apporte pas grand chose.
Quant à la liste qui permet
ensuite
de sélectionner une plage, elle est très peu
fonctionnelle à cause de l'absence
d'ascenseur
(j'ai couramment plusieurs centaines de noms dans un
classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis
claviers : Ctrl + F3 pour
définir
un nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement
pour les plages (constantes,
formules),
et je trouve + simple d'utiliser toujours la même
méthode pour définir un nom.
4 - D'autre part je trouve cette zone ridiculement
étroite : de nombreux noms ne
sont
lisibles qu'en partie. J'ignore s'il existe une façon
de l'élargir ;-((
merci denis...après plusieurs essais, j'ai compris
(le premier qui dit
"quand même", je le brûle) qu'il fallait faire
entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:
Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section
extrême gauche de la barre des
formules pour saisir désigner une plage
sélectionnée et lui attribuée un nom.
Salutations!
"sabatier" <jpsabatdelaile@wanadoo.fr> a écrit
dans le message de
news:4033ED6C.2000905@wanadoo.fr...
bonjour
je remarque qu'avec XL 2002 je n'ai pas le
bouton "définir un nom" dans
le menu contextuel affiché par un click droit
dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
Bonjour,
personnellement j'ai trouvé sur AllApi.net
http://www.mentalis.org/index2.shtml
le fichier ApiGuide.exe (API-Guide 3.7 (+/- 2.20MB))
http://users.chello.be/cr27630/3.7/agsetup.exe
'------------------
API-Guide
(current version: 3.7.854, released on 2002/03/31)
Many people have asked us if they could download our API
list because they couldn't go online for a very long time
and it could take ages to download all the API examples.
Of course, this was very unpractical, since the list is
changing every month.
For these people we've created API-Guide! API-Guide is an
API database with all the API functions of our API list.
API-Guide has over 900 functions, all documented, and
explained with an example. Several functions also have a
dotNET equivalent and dotNET example code.
'------------------------------
@+-----Message d'origine-----
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API
qu'il peut être intéressantd'appeler depuis VBA, idéalement avec un bref descriptif
pour chacune ?
Ton code marche très bien. Sais-tu s'il est également
possible de faire varierla hauteur de la liste ? Le document sur lequel je
travaille en ce moment comporteenviron 500, et la liste n'en affiche que 7 à la fois ;-
(((Bisous à tous;
Voici comment ajuster la liste déroulante des noms du
classeurs sur le nom le pluslong:
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _(ByVal lpClassName As String, ByVal lpWindowName As
String) As LongPrivate 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
Private Declare Function GetWindowDC Lib "user32"
(ByVal hWnd As Long) As LongPrivate Declare Function GetTextExtentPoint32
Lib "gdi32" Alias"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal
cbString As Long _, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam
As Long _, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;",
vbNullString)hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox",
vbNullString)For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans le
message denews:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je
n'utilise jamais pour 4raisons :
1 - Je suis un dinosaure, et de mon point de vue, il
s'agit d'une option récentedansl'histoire d'Excel, qui n'apporte pas grand chose.
Quant à la liste qui permetensuitede sélectionner une plage, elle est très peu
fonctionnelle à cause de l'absenced'ascenseur(j'ai couramment plusieurs centaines de noms dans un
classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis
claviers : Ctrl + F3 pourdéfinirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement
pour les plages (constantes,formules),et je trouve + simple d'utiliser toujours la même
méthode pour définir un nom.
4 - D'autre part je trouve cette zone ridiculement
étroite : de nombreux noms nesontlisibles qu'en partie. J'ignore s'il existe une façon
de l'élargir ;-((merci denis...après plusieurs essais, j'ai compris
(le premier qui dit"quand même", je le brûle) qu'il fallait faire
entrée après avoir écritle nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section
extrême gauche de la barre desformules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit
dans le message denews:bonjour
je remarque qu'avec XL 2002 je n'ai pas le
bouton "définir un nom" dansle menu contextuel affiché par un click droit
dans une cellule alors quej'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également possible de faire varier
la hauteur de la liste ? Le document sur lequel je travaille en ce moment
comporte
environ 500, et la liste n'en affiche que 7 à la fois ;-(((Bisous à tous;
Voici comment ajuster la liste déroulante des noms du classeurs sur le nom le
plus
long:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;", vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans le message de
news:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il s'agit d'une option
récente
dansl'histoire d'Excel, qui n'apporte pas grand chose. Quant à la liste qui
permet
ensuitede sélectionner une plage, elle est très peu fonctionnelle à cause de
l'absence
d'ascenseur(j'ai couramment plusieurs centaines de noms dans un classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis claviers : Ctrl + F3
pour
définirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement pour les plages
(constantes,
formules),et je trouve + simple d'utiliser toujours la même méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux
noms ne
sontlisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((merci denis...après plusieurs essais, j'ai compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section extrême gauche de la barre
des
formules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit dans le message de
news:bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également possible de faire varier
la hauteur de la liste ? Le document sur lequel je travaille en ce moment
comporte
environ 500, et la liste n'en affiche que 7 à la fois ;-(((
Bisous à tous;
Voici comment ajuster la liste déroulante des noms du classeurs sur le nom le
plus
long:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;", vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:40346908.69D2C9E@Suppgaboly.com...
Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il s'agit d'une option
récente
dans
l'histoire d'Excel, qui n'apporte pas grand chose. Quant à la liste qui
permet
ensuite
de sélectionner une plage, elle est très peu fonctionnelle à cause de
l'absence
d'ascenseur
(j'ai couramment plusieurs centaines de noms dans un classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis claviers : Ctrl + F3
pour
définir
un nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement pour les plages
(constantes,
formules),
et je trouve + simple d'utiliser toujours la même méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux
noms ne
sont
lisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((
merci denis...après plusieurs essais, j'ai compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:
Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section extrême gauche de la barre
des
formules pour saisir désigner une plage
sélectionnée et lui attribuée un nom.
Salutations!
"sabatier" <jpsabatdelaile@wanadoo.fr> a écrit dans le message de
news:4033ED6C.2000905@wanadoo.fr...
bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également possible de faire varier
la hauteur de la liste ? Le document sur lequel je travaille en ce moment
comporte
environ 500, et la liste n'en affiche que 7 à la fois ;-(((Bisous à tous;
Voici comment ajuster la liste déroulante des noms du classeurs sur le nom le
plus
long:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;", vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans le message de
news:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il s'agit d'une option
récente
dansl'histoire d'Excel, qui n'apporte pas grand chose. Quant à la liste qui
permet
ensuitede sélectionner une plage, elle est très peu fonctionnelle à cause de
l'absence
d'ascenseur(j'ai couramment plusieurs centaines de noms dans un classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis claviers : Ctrl + F3
pour
définirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement pour les plages
(constantes,
formules),et je trouve + simple d'utiliser toujours la même méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux
noms ne
sontlisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((merci denis...après plusieurs essais, j'ai compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section extrême gauche de la barre
des
formules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit dans le message de
news:bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également possible de faire varier
la hauteur de la liste ? Le document sur lequel je travaille en ce moment
comporte
environ 500, et la liste n'en affiche que 7 à la fois ;-(((Bisous à tous;
Voici comment ajuster la liste déroulante des noms du classeurs sur le nom le
plus
long:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;", vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans le message de
news:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il s'agit d'une option
récente
dansl'histoire d'Excel, qui n'apporte pas grand chose. Quant à la liste qui
permet
ensuitede sélectionner une plage, elle est très peu fonctionnelle à cause de
l'absence
d'ascenseur(j'ai couramment plusieurs centaines de noms dans un classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis claviers : Ctrl + F3
pour
définirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement pour les plages
(constantes,
formules),et je trouve + simple d'utiliser toujours la même méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux
noms ne
sontlisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((merci denis...après plusieurs essais, j'ai compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section extrême gauche de la barre
des
formules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit dans le message de
news:bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également possible de faire varier
la hauteur de la liste ? Le document sur lequel je travaille en ce moment
comporte
environ 500, et la liste n'en affiche que 7 à la fois ;-(((
Bisous à tous;
Voici comment ajuster la liste déroulante des noms du classeurs sur le nom le
plus
long:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;", vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:40346908.69D2C9E@Suppgaboly.com...
Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il s'agit d'une option
récente
dans
l'histoire d'Excel, qui n'apporte pas grand chose. Quant à la liste qui
permet
ensuite
de sélectionner une plage, elle est très peu fonctionnelle à cause de
l'absence
d'ascenseur
(j'ai couramment plusieurs centaines de noms dans un classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis claviers : Ctrl + F3
pour
définir
un nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement pour les plages
(constantes,
formules),
et je trouve + simple d'utiliser toujours la même méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux
noms ne
sont
lisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((
merci denis...après plusieurs essais, j'ai compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:
Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section extrême gauche de la barre
des
formules pour saisir désigner une plage
sélectionnée et lui attribuée un nom.
Salutations!
"sabatier" <jpsabatdelaile@wanadoo.fr> a écrit dans le message de
news:4033ED6C.2000905@wanadoo.fr...
bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également possible de faire varier
la hauteur de la liste ? Le document sur lequel je travaille en ce moment
comporte
environ 500, et la liste n'en affiche que 7 à la fois ;-(((Bisous à tous;
Voici comment ajuster la liste déroulante des noms du classeurs sur le nom le
plus
long:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;", vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans le message de
news:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il s'agit d'une option
récente
dansl'histoire d'Excel, qui n'apporte pas grand chose. Quant à la liste qui
permet
ensuitede sélectionner une plage, elle est très peu fonctionnelle à cause de
l'absence
d'ascenseur(j'ai couramment plusieurs centaines de noms dans un classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis claviers : Ctrl + F3
pour
définirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement pour les plages
(constantes,
formules),et je trouve + simple d'utiliser toujours la même méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux
noms ne
sontlisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((merci denis...après plusieurs essais, j'ai compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section extrême gauche de la barre
des
formules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit dans le message de
news:bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
-----Message d'origine-----
Bonjour Michel;
Pour la hauteur, il en coûte quelques API
supplémentaires; dans l'exemple
ci-dessous, j'ai choisi 10 lignes.
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal
hwnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32"
Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString
As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As
Long _
, ByVal lParam As Long) As Long
Private Declare Function GetClientRect Lib "user32"
(ByVal hwnd As Long _
, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal
hwnd As Long _
, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long _
, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
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&,
lpRect As RECT
hwnd = FindWindow(vbNullString, Application.Caption)
hwnd = FindWindowEx(hwnd, ByVal 0&, "EXCEL;",
vbNullString)
hwnd = FindWindowEx(hwnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hwnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
' Ajuste la largeur
SendMessage hwnd, &H160, MaxLen, 0
' Nombre de ligne à afficher (10)
GetClientRect hwnd, lpRect
With lpRect
MoveWindow hwnd, .Left, .Top - 2, .Right - .Left, 10
* (.Bottom - .Top), 1
End With
End Sub
MP
Pour ce qui est de la définition des API, sans être
exhaustif, c'est l'outil le
plus complet:
http://www.mentalis.org/agnet/apiguide.shtml
(du moins, c'est mon avis et je le partage; je dirais
même plus, je suis
unanime...)
"Michel Gaboly" a écrit dans le
message de
news:Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API
qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref
descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également
possible de faire varier
la hauteur de la liste ? Le document sur lequel je
travaille en ce moment
comporteenviron 500, et la liste n'en affiche que 7 à la fois ;-
(((
Bisous à tous;
Voici comment ajuster la liste déroulante des noms du
classeurs sur le nom le
pluslong:
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32"
(ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32
Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal
cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal
wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI,
MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;",
vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans
le message de
news:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je
n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue,
il s'agit d'une option
récentedansl'histoire d'Excel, qui n'apporte pas grand chose.
Quant à la liste qui
permetensuitede sélectionner une plage, elle est très peu
fonctionnelle à cause de
l'absenced'ascenseur(j'ai couramment plusieurs centaines de noms dans
un classeur)
2 - J'ai plutôt tendance à privilégier les
raccourcis claviers : Ctrl + F3
pourdéfinirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement
pour les plages
(constantes,formules),et je trouve + simple d'utiliser toujours la même
méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement
étroite : de nombreux
noms nesontlisibles qu'en partie. J'ignore s'il existe une
façon de l'élargir ;-((
merci denis...après plusieurs essais, j'ai
compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire
entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section
extrême gauche de la barre
desformules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit
dans le message de
news:bonjour
je remarque qu'avec XL 2002 je n'ai pas le
bouton "définir un nom" dans
le menu contextuel affiché par un click droit
dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
-----Message d'origine-----
Bonjour Michel;
Pour la hauteur, il en coûte quelques API
supplémentaires; dans l'exemple
ci-dessous, j'ai choisi 10 lignes.
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal
hwnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32"
Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString
As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As
Long _
, ByVal lParam As Long) As Long
Private Declare Function GetClientRect Lib "user32"
(ByVal hwnd As Long _
, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal
hwnd As Long _
, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long _
, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
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&,
lpRect As RECT
hwnd = FindWindow(vbNullString, Application.Caption)
hwnd = FindWindowEx(hwnd, ByVal 0&, "EXCEL;",
vbNullString)
hwnd = FindWindowEx(hwnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hwnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
' Ajuste la largeur
SendMessage hwnd, &H160, MaxLen, 0
' Nombre de ligne à afficher (10)
GetClientRect hwnd, lpRect
With lpRect
MoveWindow hwnd, .Left, .Top - 2, .Right - .Left, 10
* (.Bottom - .Top), 1
End With
End Sub
MP
Pour ce qui est de la définition des API, sans être
exhaustif, c'est l'outil le
plus complet:
http://www.mentalis.org/agnet/apiguide.shtml
(du moins, c'est mon avis et je le partage; je dirais
même plus, je suis
unanime...)
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le
message de
news:40349F79.5FC8267C@Suppgaboly.com...
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API
qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref
descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également
possible de faire varier
la hauteur de la liste ? Le document sur lequel je
travaille en ce moment
comporte
environ 500, et la liste n'en affiche que 7 à la fois ;-
(((
Bisous à tous;
Voici comment ajuster la liste déroulante des noms du
classeurs sur le nom le
plus
long:
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32"
(ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32
Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal
cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal
wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI,
MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;",
vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans
le message de
news:40346908.69D2C9E@Suppgaboly.com...
Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je
n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue,
il s'agit d'une option
récente
dans
l'histoire d'Excel, qui n'apporte pas grand chose.
Quant à la liste qui
permet
ensuite
de sélectionner une plage, elle est très peu
fonctionnelle à cause de
l'absence
d'ascenseur
(j'ai couramment plusieurs centaines de noms dans
un classeur)
2 - J'ai plutôt tendance à privilégier les
raccourcis claviers : Ctrl + F3
pour
définir
un nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement
pour les plages
(constantes,
formules),
et je trouve + simple d'utiliser toujours la même
méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement
étroite : de nombreux
noms ne
sont
lisibles qu'en partie. J'ignore s'il existe une
façon de l'élargir ;-((
merci denis...après plusieurs essais, j'ai
compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire
entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:
Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section
extrême gauche de la barre
des
formules pour saisir désigner une plage
sélectionnée et lui attribuée un nom.
Salutations!
"sabatier" <jpsabatdelaile@wanadoo.fr> a écrit
dans le message de
news:4033ED6C.2000905@wanadoo.fr...
bonjour
je remarque qu'avec XL 2002 je n'ai pas le
bouton "définir un nom" dans
le menu contextuel affiché par un click droit
dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
-----Message d'origine-----
Bonjour Michel;
Pour la hauteur, il en coûte quelques API
supplémentaires; dans l'exemple
ci-dessous, j'ai choisi 10 lignes.
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal
hwnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32"
Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString
As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As
Long _
, ByVal lParam As Long) As Long
Private Declare Function GetClientRect Lib "user32"
(ByVal hwnd As Long _
, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal
hwnd As Long _
, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long _
, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
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&,
lpRect As RECT
hwnd = FindWindow(vbNullString, Application.Caption)
hwnd = FindWindowEx(hwnd, ByVal 0&, "EXCEL;",
vbNullString)
hwnd = FindWindowEx(hwnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hwnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
' Ajuste la largeur
SendMessage hwnd, &H160, MaxLen, 0
' Nombre de ligne à afficher (10)
GetClientRect hwnd, lpRect
With lpRect
MoveWindow hwnd, .Left, .Top - 2, .Right - .Left, 10
* (.Bottom - .Top), 1
End With
End Sub
MP
Pour ce qui est de la définition des API, sans être
exhaustif, c'est l'outil le
plus complet:
http://www.mentalis.org/agnet/apiguide.shtml
(du moins, c'est mon avis et je le partage; je dirais
même plus, je suis
unanime...)
"Michel Gaboly" a écrit dans le
message de
news:Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API
qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref
descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également
possible de faire varier
la hauteur de la liste ? Le document sur lequel je
travaille en ce moment
comporteenviron 500, et la liste n'en affiche que 7 à la fois ;-
(((
Bisous à tous;
Voici comment ajuster la liste déroulante des noms du
classeurs sur le nom le
pluslong:
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32"
(ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32
Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal
cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal
wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI,
MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;",
vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans
le message de
news:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je
n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue,
il s'agit d'une option
récentedansl'histoire d'Excel, qui n'apporte pas grand chose.
Quant à la liste qui
permetensuitede sélectionner une plage, elle est très peu
fonctionnelle à cause de
l'absenced'ascenseur(j'ai couramment plusieurs centaines de noms dans
un classeur)
2 - J'ai plutôt tendance à privilégier les
raccourcis claviers : Ctrl + F3
pourdéfinirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement
pour les plages
(constantes,formules),et je trouve + simple d'utiliser toujours la même
méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement
étroite : de nombreux
noms nesontlisibles qu'en partie. J'ignore s'il existe une
façon de l'élargir ;-((
merci denis...après plusieurs essais, j'ai
compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire
entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section
extrême gauche de la barre
desformules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit
dans le message de
news:bonjour
je remarque qu'avec XL 2002 je n'ai pas le
bouton "définir un nom" dans
le menu contextuel affiché par un click droit
dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
Bonjour,
Cette commande est installée, ce me semble, par une macro complémentaire qu'il
ne m'étonnerait pas que vous ayiez installée en son temps (oublié apparemment) :
http://perso.wanadoo.fr/frederic.sigonneau/code/ToutFait/DefinirNom.zip
FS
Bonjour,
Cette commande est installée, ce me semble, par une macro complémentaire qu'il
ne m'étonnerait pas que vous ayiez installée en son temps (oublié apparemment) :
http://perso.wanadoo.fr/frederic.sigonneau/code/ToutFait/DefinirNom.zip
FS
Bonjour,
Cette commande est installée, ce me semble, par une macro complémentaire qu'il
ne m'étonnerait pas que vous ayiez installée en son temps (oublié apparemment) :
http://perso.wanadoo.fr/frederic.sigonneau/code/ToutFait/DefinirNom.zip
FS
Bonjour Michel;
Pour la hauteur, il en coûte quelques API supplémentaires; dans l'exemple
ci-dessous, j'ai choisi 10 lignes.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long _
, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long _
, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long _
, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
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&, lpRect As RECT
hwnd = FindWindow(vbNullString, Application.Caption)
hwnd = FindWindowEx(hwnd, ByVal 0&, "EXCEL;", vbNullString)
hwnd = FindWindowEx(hwnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hwnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
' Ajuste la largeur
SendMessage hwnd, &H160, MaxLen, 0
' Nombre de ligne à afficher (10)
GetClientRect hwnd, lpRect
With lpRect
MoveWindow hwnd, .Left, .Top - 2, .Right - .Left, 10 * (.Bottom - .Top), 1
End With
End Sub
MP
Pour ce qui est de la définition des API, sans être exhaustif, c'est l'outil le
plus complet:
http://www.mentalis.org/agnet/apiguide.shtml
(du moins, c'est mon avis et je le partage; je dirais même plus, je suis
unanime...)
"Michel Gaboly" a écrit dans le message de
news:Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également possible de faire varier
la hauteur de la liste ? Le document sur lequel je travaille en ce moment
comporteenviron 500, et la liste n'en affiche que 7 à la fois ;-(((Bisous à tous;
Voici comment ajuster la liste déroulante des noms du classeurs sur le nom le
pluslong:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;", vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans le message de
news:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il s'agit d'une option
récentedansl'histoire d'Excel, qui n'apporte pas grand chose. Quant à la liste qui
permetensuitede sélectionner une plage, elle est très peu fonctionnelle à cause de
l'absenced'ascenseur(j'ai couramment plusieurs centaines de noms dans un classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis claviers : Ctrl + F3
pourdéfinirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement pour les plages
(constantes,formules),et je trouve + simple d'utiliser toujours la même méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux
noms nesontlisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((merci denis...après plusieurs essais, j'ai compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section extrême gauche de la barre
desformules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit dans le message de
news:bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour Michel;
Pour la hauteur, il en coûte quelques API supplémentaires; dans l'exemple
ci-dessous, j'ai choisi 10 lignes.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long _
, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long _
, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long _
, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
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&, lpRect As RECT
hwnd = FindWindow(vbNullString, Application.Caption)
hwnd = FindWindowEx(hwnd, ByVal 0&, "EXCEL;", vbNullString)
hwnd = FindWindowEx(hwnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hwnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
' Ajuste la largeur
SendMessage hwnd, &H160, MaxLen, 0
' Nombre de ligne à afficher (10)
GetClientRect hwnd, lpRect
With lpRect
MoveWindow hwnd, .Left, .Top - 2, .Right - .Left, 10 * (.Bottom - .Top), 1
End With
End Sub
MP
Pour ce qui est de la définition des API, sans être exhaustif, c'est l'outil le
plus complet:
http://www.mentalis.org/agnet/apiguide.shtml
(du moins, c'est mon avis et je le partage; je dirais même plus, je suis
unanime...)
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:40349F79.5FC8267C@Suppgaboly.com...
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également possible de faire varier
la hauteur de la liste ? Le document sur lequel je travaille en ce moment
comporte
environ 500, et la liste n'en affiche que 7 à la fois ;-(((
Bisous à tous;
Voici comment ajuster la liste déroulante des noms du classeurs sur le nom le
plus
long:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;", vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:40346908.69D2C9E@Suppgaboly.com...
Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il s'agit d'une option
récente
dans
l'histoire d'Excel, qui n'apporte pas grand chose. Quant à la liste qui
permet
ensuite
de sélectionner une plage, elle est très peu fonctionnelle à cause de
l'absence
d'ascenseur
(j'ai couramment plusieurs centaines de noms dans un classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis claviers : Ctrl + F3
pour
définir
un nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement pour les plages
(constantes,
formules),
et je trouve + simple d'utiliser toujours la même méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux
noms ne
sont
lisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((
merci denis...après plusieurs essais, j'ai compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:
Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section extrême gauche de la barre
des
formules pour saisir désigner une plage
sélectionnée et lui attribuée un nom.
Salutations!
"sabatier" <jpsabatdelaile@wanadoo.fr> a écrit dans le message de
news:4033ED6C.2000905@wanadoo.fr...
bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour Michel;
Pour la hauteur, il en coûte quelques API supplémentaires; dans l'exemple
ci-dessous, j'ai choisi 10 lignes.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long _
, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long _
, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long _
, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
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&, lpRect As RECT
hwnd = FindWindow(vbNullString, Application.Caption)
hwnd = FindWindowEx(hwnd, ByVal 0&, "EXCEL;", vbNullString)
hwnd = FindWindowEx(hwnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hwnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
' Ajuste la largeur
SendMessage hwnd, &H160, MaxLen, 0
' Nombre de ligne à afficher (10)
GetClientRect hwnd, lpRect
With lpRect
MoveWindow hwnd, .Left, .Top - 2, .Right - .Left, 10 * (.Bottom - .Top), 1
End With
End Sub
MP
Pour ce qui est de la définition des API, sans être exhaustif, c'est l'outil le
plus complet:
http://www.mentalis.org/agnet/apiguide.shtml
(du moins, c'est mon avis et je le partage; je dirais même plus, je suis
unanime...)
"Michel Gaboly" a écrit dans le message de
news:Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également possible de faire varier
la hauteur de la liste ? Le document sur lequel je travaille en ce moment
comporteenviron 500, et la liste n'en affiche que 7 à la fois ;-(((Bisous à tous;
Voici comment ajuster la liste déroulante des noms du classeurs sur le nom le
pluslong:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;", vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans le message de
news:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il s'agit d'une option
récentedansl'histoire d'Excel, qui n'apporte pas grand chose. Quant à la liste qui
permetensuitede sélectionner une plage, elle est très peu fonctionnelle à cause de
l'absenced'ascenseur(j'ai couramment plusieurs centaines de noms dans un classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis claviers : Ctrl + F3
pourdéfinirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement pour les plages
(constantes,formules),et je trouve + simple d'utiliser toujours la même méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux
noms nesontlisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((merci denis...après plusieurs essais, j'ai compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section extrême gauche de la barre
desformules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit dans le message de
news:bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Re Michel;
J'oubliais; bien sur, les paramètres du combobox sont définis par Excel; le combo
retrouvra donc ses dimensions d'origine à la prochaine ouverture d'excel. Il est
donc de bon ton d'appeler la procédure lors de l'ouverture du classeur.
MP
"Michel Gaboly" a écrit dans le message de
news:Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également possible de faire varier
la hauteur de la liste ? Le document sur lequel je travaille en ce moment
comporteenviron 500, et la liste n'en affiche que 7 à la fois ;-(((Bisous à tous;
Voici comment ajuster la liste déroulante des noms du classeurs sur le nom le
pluslong:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;", vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans le message de
news:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il s'agit d'une option
récentedansl'histoire d'Excel, qui n'apporte pas grand chose. Quant à la liste qui
permetensuitede sélectionner une plage, elle est très peu fonctionnelle à cause de
l'absenced'ascenseur(j'ai couramment plusieurs centaines de noms dans un classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis claviers : Ctrl + F3
pourdéfinirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement pour les plages
(constantes,formules),et je trouve + simple d'utiliser toujours la même méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux
noms nesontlisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((merci denis...après plusieurs essais, j'ai compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section extrême gauche de la barre
desformules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit dans le message de
news:bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Re Michel;
J'oubliais; bien sur, les paramètres du combobox sont définis par Excel; le combo
retrouvra donc ses dimensions d'origine à la prochaine ouverture d'excel. Il est
donc de bon ton d'appeler la procédure lors de l'ouverture du classeur.
MP
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:40349F79.5FC8267C@Suppgaboly.com...
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également possible de faire varier
la hauteur de la liste ? Le document sur lequel je travaille en ce moment
comporte
environ 500, et la liste n'en affiche que 7 à la fois ;-(((
Bisous à tous;
Voici comment ajuster la liste déroulante des noms du classeurs sur le nom le
plus
long:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;", vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:40346908.69D2C9E@Suppgaboly.com...
Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il s'agit d'une option
récente
dans
l'histoire d'Excel, qui n'apporte pas grand chose. Quant à la liste qui
permet
ensuite
de sélectionner une plage, elle est très peu fonctionnelle à cause de
l'absence
d'ascenseur
(j'ai couramment plusieurs centaines de noms dans un classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis claviers : Ctrl + F3
pour
définir
un nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement pour les plages
(constantes,
formules),
et je trouve + simple d'utiliser toujours la même méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux
noms ne
sont
lisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((
merci denis...après plusieurs essais, j'ai compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:
Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section extrême gauche de la barre
des
formules pour saisir désigner une plage
sélectionnée et lui attribuée un nom.
Salutations!
"sabatier" <jpsabatdelaile@wanadoo.fr> a écrit dans le message de
news:4033ED6C.2000905@wanadoo.fr...
bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Re Michel;
J'oubliais; bien sur, les paramètres du combobox sont définis par Excel; le combo
retrouvra donc ses dimensions d'origine à la prochaine ouverture d'excel. Il est
donc de bon ton d'appeler la procédure lors de l'ouverture du classeur.
MP
"Michel Gaboly" a écrit dans le message de
news:Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également possible de faire varier
la hauteur de la liste ? Le document sur lequel je travaille en ce moment
comporteenviron 500, et la liste n'en affiche que 7 à la fois ;-(((Bisous à tous;
Voici comment ajuster la liste déroulante des noms du classeurs sur le nom le
pluslong:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI, MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;", vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox", vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans le message de
news:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue, il s'agit d'une option
récentedansl'histoire d'Excel, qui n'apporte pas grand chose. Quant à la liste qui
permetensuitede sélectionner une plage, elle est très peu fonctionnelle à cause de
l'absenced'ascenseur(j'ai couramment plusieurs centaines de noms dans un classeur)
2 - J'ai plutôt tendance à privilégier les raccourcis claviers : Ctrl + F3
pourdéfinirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement pour les plages
(constantes,formules),et je trouve + simple d'utiliser toujours la même méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux
noms nesontlisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((merci denis...après plusieurs essais, j'ai compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section extrême gauche de la barre
desformules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit dans le message de
news:bonjour
je remarque qu'avec XL 2002 je n'ai pas le bouton "définir un nom" dans
le menu contextuel affiché par un click droit dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
-----Message d'origine-----
Bonjour Michel;
Pour la hauteur, il en coûte quelques API
supplémentaires; dans l'exemple
ci-dessous, j'ai choisi 10 lignes.
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal
hwnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32"
Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString
As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As
Long _
, ByVal lParam As Long) As Long
Private Declare Function GetClientRect Lib "user32"
(ByVal hwnd As Long _
, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal
hwnd As Long _
, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long _
, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
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&,
lpRect As RECT
hwnd = FindWindow(vbNullString, Application.Caption)
hwnd = FindWindowEx(hwnd, ByVal 0&, "EXCEL;",
vbNullString)
hwnd = FindWindowEx(hwnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hwnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
' Ajuste la largeur
SendMessage hwnd, &H160, MaxLen, 0
' Nombre de ligne à afficher (10)
GetClientRect hwnd, lpRect
With lpRect
MoveWindow hwnd, .Left, .Top - 2, .Right - .Left, 10
* (.Bottom - .Top), 1
End With
End Sub
MP
Pour ce qui est de la définition des API, sans être
exhaustif, c'est l'outil le
plus complet:
http://www.mentalis.org/agnet/apiguide.shtml
(du moins, c'est mon avis et je le partage; je dirais
même plus, je suis
unanime...)
"Michel Gaboly" a écrit dans le
message de
news:Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API
qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref
descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également
possible de faire varier
la hauteur de la liste ? Le document sur lequel je
travaille en ce moment
comporteenviron 500, et la liste n'en affiche que 7 à la fois ;-
(((
Bisous à tous;
Voici comment ajuster la liste déroulante des noms du
classeurs sur le nom le
pluslong:
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32"
(ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32
Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal
cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal
wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI,
MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;",
vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans
le message de
news:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je
n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue,
il s'agit d'une option
récentedansl'histoire d'Excel, qui n'apporte pas grand chose.
Quant à la liste qui
permetensuitede sélectionner une plage, elle est très peu
fonctionnelle à cause de
l'absenced'ascenseur(j'ai couramment plusieurs centaines de noms dans
un classeur)
2 - J'ai plutôt tendance à privilégier les
raccourcis claviers : Ctrl + F3
pourdéfinirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement
pour les plages
(constantes,formules),et je trouve + simple d'utiliser toujours la même
méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement
étroite : de nombreux
noms nesontlisibles qu'en partie. J'ignore s'il existe une
façon de l'élargir ;-((
merci denis...après plusieurs essais, j'ai
compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire
entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section
extrême gauche de la barre
desformules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit
dans le message de
news:bonjour
je remarque qu'avec XL 2002 je n'ai pas le
bouton "définir un nom" dans
le menu contextuel affiché par un click droit
dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
-----Message d'origine-----
Bonjour Michel;
Pour la hauteur, il en coûte quelques API
supplémentaires; dans l'exemple
ci-dessous, j'ai choisi 10 lignes.
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal
hwnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32"
Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString
As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As
Long _
, ByVal lParam As Long) As Long
Private Declare Function GetClientRect Lib "user32"
(ByVal hwnd As Long _
, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal
hwnd As Long _
, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long _
, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
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&,
lpRect As RECT
hwnd = FindWindow(vbNullString, Application.Caption)
hwnd = FindWindowEx(hwnd, ByVal 0&, "EXCEL;",
vbNullString)
hwnd = FindWindowEx(hwnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hwnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
' Ajuste la largeur
SendMessage hwnd, &H160, MaxLen, 0
' Nombre de ligne à afficher (10)
GetClientRect hwnd, lpRect
With lpRect
MoveWindow hwnd, .Left, .Top - 2, .Right - .Left, 10
* (.Bottom - .Top), 1
End With
End Sub
MP
Pour ce qui est de la définition des API, sans être
exhaustif, c'est l'outil le
plus complet:
http://www.mentalis.org/agnet/apiguide.shtml
(du moins, c'est mon avis et je le partage; je dirais
même plus, je suis
unanime...)
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le
message de
news:40349F79.5FC8267C@Suppgaboly.com...
Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API
qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref
descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également
possible de faire varier
la hauteur de la liste ? Le document sur lequel je
travaille en ce moment
comporte
environ 500, et la liste n'en affiche que 7 à la fois ;-
(((
Bisous à tous;
Voici comment ajuster la liste déroulante des noms du
classeurs sur le nom le
plus
long:
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32"
(ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32
Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal
cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal
wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI,
MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;",
vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans
le message de
news:40346908.69D2C9E@Suppgaboly.com...
Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je
n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue,
il s'agit d'une option
récente
dans
l'histoire d'Excel, qui n'apporte pas grand chose.
Quant à la liste qui
permet
ensuite
de sélectionner une plage, elle est très peu
fonctionnelle à cause de
l'absence
d'ascenseur
(j'ai couramment plusieurs centaines de noms dans
un classeur)
2 - J'ai plutôt tendance à privilégier les
raccourcis claviers : Ctrl + F3
pour
définir
un nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement
pour les plages
(constantes,
formules),
et je trouve + simple d'utiliser toujours la même
méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement
étroite : de nombreux
noms ne
sont
lisibles qu'en partie. J'ignore s'il existe une
façon de l'élargir ;-((
merci denis...après plusieurs essais, j'ai
compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire
entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:
Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section
extrême gauche de la barre
des
formules pour saisir désigner une plage
sélectionnée et lui attribuée un nom.
Salutations!
"sabatier" <jpsabatdelaile@wanadoo.fr> a écrit
dans le message de
news:4033ED6C.2000905@wanadoo.fr...
bonjour
je remarque qu'avec XL 2002 je n'ai pas le
bouton "définir un nom" dans
le menu contextuel affiché par un click droit
dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
-----Message d'origine-----
Bonjour Michel;
Pour la hauteur, il en coûte quelques API
supplémentaires; dans l'exemple
ci-dessous, j'ai choisi 10 lignes.
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32" (ByVal
hwnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32"
Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal cbString
As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As
Long _
, ByVal lParam As Long) As Long
Private Declare Function GetClientRect Lib "user32"
(ByVal hwnd As Long _
, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal
hwnd As Long _
, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long _
, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
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&,
lpRect As RECT
hwnd = FindWindow(vbNullString, Application.Caption)
hwnd = FindWindowEx(hwnd, ByVal 0&, "EXCEL;",
vbNullString)
hwnd = FindWindowEx(hwnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hwnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
' Ajuste la largeur
SendMessage hwnd, &H160, MaxLen, 0
' Nombre de ligne à afficher (10)
GetClientRect hwnd, lpRect
With lpRect
MoveWindow hwnd, .Left, .Top - 2, .Right - .Left, 10
* (.Bottom - .Top), 1
End With
End Sub
MP
Pour ce qui est de la définition des API, sans être
exhaustif, c'est l'outil le
plus complet:
http://www.mentalis.org/agnet/apiguide.shtml
(du moins, c'est mon avis et je le partage; je dirais
même plus, je suis
unanime...)
"Michel Gaboly" a écrit dans le
message de
news:Félicitations Michel ;))
Connais-tu une liste ou un site répertoriant les API
qu'il peut être intéressant
d'appeler depuis VBA, idéalement avec un bref
descriptif pour chacune ?
Ton code marche très bien. Sais-tu s'il est également
possible de faire varier
la hauteur de la liste ? Le document sur lequel je
travaille en ce moment
comporteenviron 500, et la liste n'en affiche que 7 à la fois ;-
(((
Bisous à tous;
Voici comment ajuster la liste déroulante des noms du
classeurs sur le nom le
pluslong:
Private Declare Function FindWindow Lib "user32"
Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As
String) As Long
Private 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
Private Declare Function GetWindowDC Lib "user32"
(ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32
Lib "gdi32" Alias
"GetTextExtentPoint32A" _
(ByVal hDC As Long, ByVal lpsz As String, ByVal
cbString As Long _
, lpSize As POINTAPI) As Long
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal
wParam As Long _
, ByVal lParam As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub AdjustComboNames()
If ActiveWorkbook.Names.Count = 0 Then Exit Sub
Dim hWnd&, iName$, i%, hDC&, Txt As POINTAPI,
MaxLen&
hWnd = FindWindow(vbNullString, Application.Caption)
hWnd = FindWindowEx(hWnd, ByVal 0&, "EXCEL;",
vbNullString)
hWnd = FindWindowEx(hWnd, ByVal 0&, "ComboBox",
vbNullString)
For i = 1 To ActiveWorkbook.Names.Count
hDC = GetWindowDC(hWnd)
iName = ActiveWorkbook.Names(i).Name
GetTextExtentPoint32 hDC, iName, Len(iName), Txt
If Txt.x > MaxLen Then MaxLen = Txt.x
Next i
SendMessage hWnd, &H160, MaxLen, 0
End Sub
MP
"Michel Gaboly" a écrit dans
le message de
news:Bonjour,
Tabulation marche aussi ;-))
Plus sérieusement, c'est une fonctionnalité que je
n'utilise jamais pour 4
raisons :
1 - Je suis un dinosaure, et de mon point de vue,
il s'agit d'une option
récentedansl'histoire d'Excel, qui n'apporte pas grand chose.
Quant à la liste qui
permetensuitede sélectionner une plage, elle est très peu
fonctionnelle à cause de
l'absenced'ascenseur(j'ai couramment plusieurs centaines de noms dans
un classeur)
2 - J'ai plutôt tendance à privilégier les
raccourcis claviers : Ctrl + F3
pourdéfinirun nom, F3 pour en coller un.
3 - J'utilise énormément de noms et pas seulement
pour les plages
(constantes,formules),et je trouve + simple d'utiliser toujours la même
méthode pour définir un
nom.
4 - D'autre part je trouve cette zone ridiculement
étroite : de nombreux
noms nesontlisibles qu'en partie. J'ignore s'il existe une
façon de l'élargir ;-((
merci denis...après plusieurs essais, j'ai
compris (le premier qui dit
"quand même", je le brûle) qu'il fallait faire
entrée après avoir écrit
le nom dans la zone ad hoc...
jps
michdenis a écrit:Bonsoir JPS,
Oui c'est "normal".
Tu peux comme tu le sais utiliser la section
extrême gauche de la barre
desformules pour saisir désigner une plagesélectionnée et lui attribuée un nom.
Salutations!
"sabatier" a écrit
dans le message de
news:bonjour
je remarque qu'avec XL 2002 je n'ai pas le
bouton "définir un nom" dans
le menu contextuel affiché par un click droit
dans une cellule alors que
j'ai cela avec XL 97...
is that quite normal?
à vous lire...merci d'avance
jps
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
.
Bonjour,
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux noms ne sont
lisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((
Bonjour,
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux noms ne sont
lisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((
Bonjour,
4 - D'autre part je trouve cette zone ridiculement étroite : de nombreux noms ne sont
lisibles qu'en partie. J'ignore s'il existe une façon de l'élargir ;-((