Il faut ajuster la propriété Height du ListBox dans l'Initialize.
Voici un exemple. Crée un UserForm dont la hauteur (propriété Height) est de 260, avec un ListBox nommé LTest avec les proriétés Top = 8 et Height = 186, et 2 boutons nommés BOK et BAnnuler placés sous le ListBox (Top = 200).
Nomme Source une plage de cellules de la feuille active lors du lance- ment du UserForm, contenant au moins 15 lignes.
Associe ce code à l'Initialize :
Private Sub UserForm_Initialize() LTest.List = Range("Source").Value End Sub
Je préfère cette technique, car elle fonctionne sur Mac comme sur PC, amors que RowSource n'est pas disponible pour les versions Mac.
Affiche le UserForm. Le ListBox affiche 15 lignes avec un ascenseur vertical si la plage Source comporte 3 de 15 lignes (NB - le nb de lignes visibles dépend de la police utilisée et de la plate-forme ; avec la même police, la taille des contrôles varie entre Mac et PC, avec un encombrement nettement supérieur sous Windows). Toutes les valeurs indiquées dans mon exemple correspondent à Excel 98 pour Mac, mais les pricipes sont applicables aux versions Win.
Modifie ainsi la procédure :
Private Sub UserForm_Initialize() Dim Ref As Integer With Range("Source") Ref = 12 * .Rows.Count + 6 LTest.Height = Ref LTest.List = .Value End With BOK.Top = Ref + 14 BAnnuler.Top = Ref + 14 Me.Height = Ref + 74 End Sub
Réaffiche le UserForm. Il s'adapte au nombre de lignes de la plage "Source" : la hauteur du ListBox, le positiopn des 2 boutons et la hauteur du UserForm dépendent du nb de lignes de "Source".
Cependant, si "Source" contient un très grand nombre de lignes, la hauteur des éléments et la position des boutons seront incompa- tibles avec la résolution des écrans (par exemple avec 200 lignes, la propriété Top des boutons serait de 2420).
Il faut donc limiter la valeur maxi de Ref, à environ 720 par exemple :
Private Sub UserForm_Initialize() Dim Ref As Integer With Range("Source") Ref = 12 * Application.WorksheetFunction.Min(.Rows.Count, 60) + 6 LTest.Height = Ref LTest.List = .Value End With BOK.Top = Ref + 14 BAnnuler.Top = Ref + 14 Me.Height = Ref + 74 End Sub
Bonjour,
Est-t-il possible d'avoir un listbox dont la taille varie selon les listes qui l'alimentent ?
-- Cordialement,
Michel Gaboly http://www.gaboly.com
Bonjour,
Bien sûr ;-))
Il faut ajuster la propriété Height du ListBox dans l'Initialize.
Voici un exemple. Crée un UserForm dont la hauteur (propriété Height)
est de 260, avec un ListBox nommé LTest avec les proriétés Top = 8 et
Height = 186, et 2 boutons nommés BOK et BAnnuler placés sous le
ListBox (Top = 200).
Nomme Source une plage de cellules de la feuille active lors du lance-
ment du UserForm, contenant au moins 15 lignes.
Associe ce code à l'Initialize :
Private Sub UserForm_Initialize()
LTest.List = Range("Source").Value
End Sub
Je préfère cette technique, car elle fonctionne sur Mac comme sur PC,
amors que RowSource n'est pas disponible pour les versions Mac.
Affiche le UserForm. Le ListBox affiche 15 lignes avec un ascenseur
vertical si la plage Source comporte 3 de 15 lignes (NB - le nb de
lignes visibles dépend de la police utilisée et de la plate-forme ;
avec la même police, la taille des contrôles varie entre Mac et PC,
avec un encombrement nettement supérieur sous Windows).
Toutes les valeurs indiquées dans mon exemple correspondent à
Excel 98 pour Mac, mais les pricipes sont applicables aux versions
Win.
Modifie ainsi la procédure :
Private Sub UserForm_Initialize()
Dim Ref As Integer
With Range("Source")
Ref = 12 * .Rows.Count + 6
LTest.Height = Ref
LTest.List = .Value
End With
BOK.Top = Ref + 14
BAnnuler.Top = Ref + 14
Me.Height = Ref + 74
End Sub
Réaffiche le UserForm. Il s'adapte au nombre de lignes de la plage
"Source" : la hauteur du ListBox, le positiopn des 2 boutons et la
hauteur du UserForm dépendent du nb de lignes de "Source".
Cependant, si "Source" contient un très grand nombre de lignes,
la hauteur des éléments et la position des boutons seront incompa-
tibles avec la résolution des écrans (par exemple avec 200 lignes,
la propriété Top des boutons serait de 2420).
Il faut donc limiter la valeur maxi de Ref, à environ 720 par exemple :
Private Sub UserForm_Initialize()
Dim Ref As Integer
With Range("Source")
Ref = 12 * Application.WorksheetFunction.Min(.Rows.Count, 60) + 6
LTest.Height = Ref
LTest.List = .Value
End With
BOK.Top = Ref + 14
BAnnuler.Top = Ref + 14
Me.Height = Ref + 74
End Sub
Bonjour,
Est-t-il possible d'avoir un listbox dont la taille varie selon les listes
qui l'alimentent ?
Il faut ajuster la propriété Height du ListBox dans l'Initialize.
Voici un exemple. Crée un UserForm dont la hauteur (propriété Height) est de 260, avec un ListBox nommé LTest avec les proriétés Top = 8 et Height = 186, et 2 boutons nommés BOK et BAnnuler placés sous le ListBox (Top = 200).
Nomme Source une plage de cellules de la feuille active lors du lance- ment du UserForm, contenant au moins 15 lignes.
Associe ce code à l'Initialize :
Private Sub UserForm_Initialize() LTest.List = Range("Source").Value End Sub
Je préfère cette technique, car elle fonctionne sur Mac comme sur PC, amors que RowSource n'est pas disponible pour les versions Mac.
Affiche le UserForm. Le ListBox affiche 15 lignes avec un ascenseur vertical si la plage Source comporte 3 de 15 lignes (NB - le nb de lignes visibles dépend de la police utilisée et de la plate-forme ; avec la même police, la taille des contrôles varie entre Mac et PC, avec un encombrement nettement supérieur sous Windows). Toutes les valeurs indiquées dans mon exemple correspondent à Excel 98 pour Mac, mais les pricipes sont applicables aux versions Win.
Modifie ainsi la procédure :
Private Sub UserForm_Initialize() Dim Ref As Integer With Range("Source") Ref = 12 * .Rows.Count + 6 LTest.Height = Ref LTest.List = .Value End With BOK.Top = Ref + 14 BAnnuler.Top = Ref + 14 Me.Height = Ref + 74 End Sub
Réaffiche le UserForm. Il s'adapte au nombre de lignes de la plage "Source" : la hauteur du ListBox, le positiopn des 2 boutons et la hauteur du UserForm dépendent du nb de lignes de "Source".
Cependant, si "Source" contient un très grand nombre de lignes, la hauteur des éléments et la position des boutons seront incompa- tibles avec la résolution des écrans (par exemple avec 200 lignes, la propriété Top des boutons serait de 2420).
Il faut donc limiter la valeur maxi de Ref, à environ 720 par exemple :
Private Sub UserForm_Initialize() Dim Ref As Integer With Range("Source") Ref = 12 * Application.WorksheetFunction.Min(.Rows.Count, 60) + 6 LTest.Height = Ref LTest.List = .Value End With BOK.Top = Ref + 14 BAnnuler.Top = Ref + 14 Me.Height = Ref + 74 End Sub
Bonjour,
Est-t-il possible d'avoir un listbox dont la taille varie selon les listes qui l'alimentent ?
-- Cordialement,
Michel Gaboly http://www.gaboly.com
choko
Un grand merci pour vos éclaircissements.
Choko
"Michel Gaboly" a écrit dans le message de news:
Bonjour,
Bien sûr ;-))
Il faut ajuster la propriété Height du ListBox dans l'Initialize.
Voici un exemple. Crée un UserForm dont la hauteur (propriété Height) est de 260, avec un ListBox nommé LTest avec les proriétés Top = 8 et Height = 186, et 2 boutons nommés BOK et BAnnuler placés sous le ListBox (Top = 200).
Nomme Source une plage de cellules de la feuille active lors du lance- ment du UserForm, contenant au moins 15 lignes.
Associe ce code à l'Initialize :
Private Sub UserForm_Initialize() LTest.List = Range("Source").Value End Sub
Je préfère cette technique, car elle fonctionne sur Mac comme sur PC, amors que RowSource n'est pas disponible pour les versions Mac.
Affiche le UserForm. Le ListBox affiche 15 lignes avec un ascenseur vertical si la plage Source comporte 3 de 15 lignes (NB - le nb de lignes visibles dépend de la police utilisée et de la plate-forme ; avec la même police, la taille des contrôles varie entre Mac et PC, avec un encombrement nettement supérieur sous Windows). Toutes les valeurs indiquées dans mon exemple correspondent à Excel 98 pour Mac, mais les pricipes sont applicables aux versions Win.
Modifie ainsi la procédure :
Private Sub UserForm_Initialize() Dim Ref As Integer With Range("Source") Ref = 12 * .Rows.Count + 6 LTest.Height = Ref LTest.List = .Value End With BOK.Top = Ref + 14 BAnnuler.Top = Ref + 14 Me.Height = Ref + 74 End Sub
Réaffiche le UserForm. Il s'adapte au nombre de lignes de la plage "Source" : la hauteur du ListBox, le positiopn des 2 boutons et la hauteur du UserForm dépendent du nb de lignes de "Source".
Cependant, si "Source" contient un très grand nombre de lignes, la hauteur des éléments et la position des boutons seront incompa- tibles avec la résolution des écrans (par exemple avec 200 lignes, la propriété Top des boutons serait de 2420).
Il faut donc limiter la valeur maxi de Ref, à environ 720 par exemple :
Private Sub UserForm_Initialize() Dim Ref As Integer With Range("Source") Ref = 12 * Application.WorksheetFunction.Min(.Rows.Count, 60) + 6 LTest.Height = Ref LTest.List = .Value End With BOK.Top = Ref + 14 BAnnuler.Top = Ref + 14 Me.Height = Ref + 74 End Sub
Bonjour,
Est-t-il possible d'avoir un listbox dont la taille varie selon les listes qui l'alimentent ?
-- Cordialement,
Michel Gaboly http://www.gaboly.com
Un grand merci pour vos éclaircissements.
Choko
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de news:
417CE5ED.F3FBBA9@Suppgaboly.com...
Bonjour,
Bien sûr ;-))
Il faut ajuster la propriété Height du ListBox dans l'Initialize.
Voici un exemple. Crée un UserForm dont la hauteur (propriété Height)
est de 260, avec un ListBox nommé LTest avec les proriétés Top = 8 et
Height = 186, et 2 boutons nommés BOK et BAnnuler placés sous le
ListBox (Top = 200).
Nomme Source une plage de cellules de la feuille active lors du lance-
ment du UserForm, contenant au moins 15 lignes.
Associe ce code à l'Initialize :
Private Sub UserForm_Initialize()
LTest.List = Range("Source").Value
End Sub
Je préfère cette technique, car elle fonctionne sur Mac comme sur PC,
amors que RowSource n'est pas disponible pour les versions Mac.
Affiche le UserForm. Le ListBox affiche 15 lignes avec un ascenseur
vertical si la plage Source comporte 3 de 15 lignes (NB - le nb de
lignes visibles dépend de la police utilisée et de la plate-forme ;
avec la même police, la taille des contrôles varie entre Mac et PC,
avec un encombrement nettement supérieur sous Windows).
Toutes les valeurs indiquées dans mon exemple correspondent à
Excel 98 pour Mac, mais les pricipes sont applicables aux versions
Win.
Modifie ainsi la procédure :
Private Sub UserForm_Initialize()
Dim Ref As Integer
With Range("Source")
Ref = 12 * .Rows.Count + 6
LTest.Height = Ref
LTest.List = .Value
End With
BOK.Top = Ref + 14
BAnnuler.Top = Ref + 14
Me.Height = Ref + 74
End Sub
Réaffiche le UserForm. Il s'adapte au nombre de lignes de la plage
"Source" : la hauteur du ListBox, le positiopn des 2 boutons et la
hauteur du UserForm dépendent du nb de lignes de "Source".
Cependant, si "Source" contient un très grand nombre de lignes,
la hauteur des éléments et la position des boutons seront incompa-
tibles avec la résolution des écrans (par exemple avec 200 lignes,
la propriété Top des boutons serait de 2420).
Il faut donc limiter la valeur maxi de Ref, à environ 720 par exemple :
Private Sub UserForm_Initialize()
Dim Ref As Integer
With Range("Source")
Ref = 12 * Application.WorksheetFunction.Min(.Rows.Count, 60) +
6
LTest.Height = Ref
LTest.List = .Value
End With
BOK.Top = Ref + 14
BAnnuler.Top = Ref + 14
Me.Height = Ref + 74
End Sub
Bonjour,
Est-t-il possible d'avoir un listbox dont la taille varie selon les
listes
qui l'alimentent ?
Il faut ajuster la propriété Height du ListBox dans l'Initialize.
Voici un exemple. Crée un UserForm dont la hauteur (propriété Height) est de 260, avec un ListBox nommé LTest avec les proriétés Top = 8 et Height = 186, et 2 boutons nommés BOK et BAnnuler placés sous le ListBox (Top = 200).
Nomme Source une plage de cellules de la feuille active lors du lance- ment du UserForm, contenant au moins 15 lignes.
Associe ce code à l'Initialize :
Private Sub UserForm_Initialize() LTest.List = Range("Source").Value End Sub
Je préfère cette technique, car elle fonctionne sur Mac comme sur PC, amors que RowSource n'est pas disponible pour les versions Mac.
Affiche le UserForm. Le ListBox affiche 15 lignes avec un ascenseur vertical si la plage Source comporte 3 de 15 lignes (NB - le nb de lignes visibles dépend de la police utilisée et de la plate-forme ; avec la même police, la taille des contrôles varie entre Mac et PC, avec un encombrement nettement supérieur sous Windows). Toutes les valeurs indiquées dans mon exemple correspondent à Excel 98 pour Mac, mais les pricipes sont applicables aux versions Win.
Modifie ainsi la procédure :
Private Sub UserForm_Initialize() Dim Ref As Integer With Range("Source") Ref = 12 * .Rows.Count + 6 LTest.Height = Ref LTest.List = .Value End With BOK.Top = Ref + 14 BAnnuler.Top = Ref + 14 Me.Height = Ref + 74 End Sub
Réaffiche le UserForm. Il s'adapte au nombre de lignes de la plage "Source" : la hauteur du ListBox, le positiopn des 2 boutons et la hauteur du UserForm dépendent du nb de lignes de "Source".
Cependant, si "Source" contient un très grand nombre de lignes, la hauteur des éléments et la position des boutons seront incompa- tibles avec la résolution des écrans (par exemple avec 200 lignes, la propriété Top des boutons serait de 2420).
Il faut donc limiter la valeur maxi de Ref, à environ 720 par exemple :
Private Sub UserForm_Initialize() Dim Ref As Integer With Range("Source") Ref = 12 * Application.WorksheetFunction.Min(.Rows.Count, 60) + 6 LTest.Height = Ref LTest.List = .Value End With BOK.Top = Ref + 14 BAnnuler.Top = Ref + 14 Me.Height = Ref + 74 End Sub
Bonjour,
Est-t-il possible d'avoir un listbox dont la taille varie selon les listes qui l'alimentent ?