grymloq
Messages postés13Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention 8 février 2008
-
4 janv. 2008 à 09:33
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
4 janv. 2008 à 23:23
Bonjour,
Je suis débutant sous VBA Excel et je souhaite redimensionner une Listbox en fonction du nombre de lignes qu'elle contient (en gros reproduire la propriété autosize). J'utilise pour cela le code suivant :
Dim Fin As Integer
Dim Haut As Double
Fin = Sheet3.Cells(2, 7) 'correspond au nombre de lignes insérées dans la ListBox + 1
Haut = 10.25 * (Fin - 1)
With UFArchitecture.ListBoxForms
.RowSource = "Sheet3!C2:C" & Fin
.Move 10, 10, 154.5, Haut
.IntegralHeight = True
End With
Le problème est que lorsque j'execute ce programme, la listbox prend bien la position souhaitée mais ne se redimensionne pas.
En revanche, lorsque je l'éxécute "au ralenti" (avec la touche F8), elle se redimensionne sans aucun problème. Je n'y comprend rien .
Si quelqu'un a une solution, je lui serais grandement reconnaissant...
grymloq
Messages postés13Date d'inscriptionmercredi 11 juillet 2007StatutMembreDernière intervention 8 février 2008 4 janv. 2008 à 15:09
J'ai essayé :
.Move 10, 10, 154.5, 1000
et le résultat reste le même.
Je ne touche à la hauteur de cette Listbox qu'à cet endroit. Voici le code que j'utilise, placé dans un module :
'main
Sub MàJ_architecture()
Call Architecture 'la fonction architecture ne fait qu'effectuer des opération dans un feuillet
Call Remplir_ListBoxForms
UFArchitecture.Show 'UFArchitecture est le userform dans lequel se trouve cette ListBox
End Sub
Private Sub Remplir_ListBoxForms()
Dim Fin As Integer
Dim Haut As Double
Fin = Sheet3.Cells(2, 7)
Haut = 10.25 * (Fin - 1)
Application.ScreenUpdating = False
With UFArchitecture.ListBoxForms
.RowSource = "Sheet3!C2:C" & Fin
.Move 10, 10, 154.5, Haut
.IntegralHeight = True
End With
Application.ScreenUpdating = True
End Sub
Peut-être que je n'appelle pas la fonction au bon endroit
Peut-être aussi que je n'ai pas placé mon main au bon endroit
En tout cas, merci de t'intéresser au problème.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 4 janv. 2008 à 23:23
Mets ceci dans le UserForm_Initialize
.Move 10, 10, 154.5, Haut
Mais comme Haut ne sera pas reconnue dans le code du UserForm, déclare la variable en Public dans un Module standard plutôt que dans ta procédure comme tu le fais.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA.