nombre de lignes visibles limité dans mon combobox

Lucien31

XLDnaute Nouveau
Bonjour et par avance merci de votre aide.

C'est mon premier message sur ce forum aussi, je vous remercie pour votre indulgence.
Mon problème: J'ai un combobox qui affiche une liste sur 2 colonnes.
Le problème est que ma liste peut être supérieure à 8 et je n'arrive pas à modifier l'affichage, pas de scrollbar verticale.
Le problème vient semble-il de l'affichage de 2 colonnes ( un code et son libellé) car quand je mets en affichage 1 colonne (en gras ci-desssous), je retrouve un ascenseur vertical et donc l'accès à toutes les lignes.
voici le code:

Private Sub UserForm_Initialize()
'Me.ComboBox1.List = Workbooks("Menu.xls").Sheets("Menu").Range("T6:T25" & Workbooks("Menu.xls").Sheets("Menu").Cells(Application.Rows.Count, 1).End(xlUp).Row).Value

Me.ComboBox1.ColumnCount = 2
Me.ComboBox1.RowSource = "'[Menu.xls]Menu'!S6:T" & [T25].End(xlUp).Row
End Sub
J'espère avoir été clair et que vous pourrez m'aider car cela fait des jours que j'essaie tout sans succès.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @Lucien31, Bienvenu sur XLD !, Bonsoir le Forum

La ligne en gras est en commentaires et elle de surcroit elle est supplantée plus bas par :
Me.ComboBox1.RowSource = "'[Menu.xls]Menu'!S6:T" & [T25].End(xlUp).Row

Essaie simplement d'élargir le bas avant de faire un End(xlUp)

Me.ComboBox1.RowSource = "'[Menu.xls]Menu'!S6:T" & [T100].End(xlUp).Row

Car si ton tableau est rempli jusqu'à la ligne 25, le xlUP remonte à 1 !!! (ou la dernière cellule non vide en remontant)

Bonne découverte du monde VBA (et d'XLD !)

Bien à toi, à vous
@+Thierry
 

Lucien31

XLDnaute Nouveau
Bonsoir @Lucien31, Bienvenu sur XLD !, Bonsoir le Forum

La ligne en gras est en commentaires et elle de surcroit elle est supplantée plus bas par :
Me.ComboBox1.RowSource = "'[Menu.xls]Menu'!S6:T" & [T25].End(xlUp).Row

Essaie simplement d'élargir le bas avant de faire un End(xlUp)

Me.ComboBox1.RowSource = "'[Menu.xls]Menu'!S6:T" & [T100].End(xlUp).Row

Car si ton tableau est rempli jusqu'à la ligne 25, le xlUP remonte à 1 !!! (ou la dernière cellule non vide en remontant)

Bonne découverte du monde VBA (et d'XLD !)

Bien à toi, à vous
@+Thierry
Bonsoir Thierry et merci pour ta réponse rapide,
C'est volontairement que j'ai mis en commentaire la ligne en gras puisque ce n'est pas cette solution qui m’intéresse. Par ailleurs, elle fonctionne parfaitement et présente un scrollbar vertical qui me donne accès à toute la liste. le problème est qu'elle ne permet l'affichage d'une seule colonne.

Quant à la solution deux colonnes qui est mon objectif, elle ne permet l'affichage que de 8 lignes de la liste et il m'en faut au moins 20, d'où ma demande d'aide.

J'espère qu'il existe une solution

Je te remercie encore
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re ,

Quant à la solution deux colonnes qui est mon objectif, elle ne permet l'affichage que de 8 lignes de la liste et il m'en faut au moins 20, d'où ma demande d'aide.

Je ne comprends pas, moi j'affiche les 40 "Toto" de ma feuille de test

1594071449817.png



Voir ci-joint

Bonne nuit
@+Thierry
 

Pièces jointes

  • XLD_Lucien31_ComboBox_MultiColumns_by_Rowsource.xlsm
    17.9 KB · Affichages: 8

Lucien31

XLDnaute Nouveau
Bonjour Thierry,

Moi non plus je ne comprends pas car c'est bien le même code. Voici c que j'obtiens. Tu peux constater qu'il n'y a pas "d'ascenseur" vertical:
1594115565074.png

Tu as sans doute vu que mon fichier est du type .xls. Il s'agit d'un fichier ancien qui fonctionne (après quelques adaptations) en mode de compatibilité sous windows 10 et office 2019. Cela pourrait-il venir de là ?

Quoi qu'il en soit, je te remercie de te pencher sur mon cas
Lucien31
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @Lucien31 , le Forum

Pour ton histoire de fichier antérieur à Excel 2007, (xls) , je me souviens bien à l'époque qu'on n'était pas limité à 8 rows dans une ComboBox .
Peut-être une piste quand même, le fichier n'aurait pas bien suivi la migration de version...
Dans ce cas, sur une copie de ton fichier, détruies pûrement est simplement cette ComboBox défectueuse. Sauves le classeur, fermes le, réouvres le et tu recréées une ComboBox du même nom que celle supprimée.... Mais bon je n'y crois pas trop, avant j'essaierai ci-dessous :

Sinon une autre piste essaies d'ajouter :
Me.ComboBox1.ListRows = 15

Si jamais tu vois ensuite ceci

1594122017601.png


C'est simplement qu'il n'y a rien de plus après Toto10 !
1594122107612.png


Et je crois que c'est LA bonne piste !

Bonne continuation !!!
@+Thierry
 

Lucien31

XLDnaute Nouveau
Bonjour @Lucien31 , le Forum

Pour ton histoire de fichier antérieur à Excel 2007, (xls) , je me souviens bien à l'époque qu'on n'était pas limité à 8 rows dans une ComboBox .
Peut-être une piste quand même, le fichier n'aurait pas bien suivi la migration de version...
Dans ce cas, sur une copie de ton fichier, détruies pûrement est simplement cette ComboBox défectueuse. Sauves le classeur, fermes le, réouvres le et tu recréées une ComboBox du même nom que celle supprimée.... Mais bon je n'y crois pas trop, avant j'essaierai ci-dessous :

Sinon une autre piste essaies d'ajouter :
Me.ComboBox1.ListRows = 15

Si jamais tu vois ensuite ceci

Regarde la pièce jointe 1072479

C'est simplement qu'il n'y a rien de plus après Toto10 !
Regarde la pièce jointe 1072480

Et je crois que c'est LA bonne piste !

Bonne continuation !!!
@+Thierry
J'ai ajouté " Me.ComboBox1.ListRows = 15 " mais cela n'a rien changé.
En fait, il s'agit d'un ancien planning que j'essaie de faire évoluer, en ajoutant, entre autres, cette notion de catégorie. Les combobox correspondant ont été créés dans ma version office actuelle. Je les aies tout de même supprimer et re-créer mais sans succès.

Je vais tenter d'enregistrer tous les fichiers utilisé en "xlsm" en espérant ne pas trop galérer à corriger les macros qui font référence à des ".xls".

Je te remercie, et te tiens au courant
Lucien 31
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Lucien

Tu ne m'a pas bien compris, dans LA Bonne Piste, je veux dire que c'est un problème de Data pas de UserForm ou de Control ActiveX défectueux ou d'XLSM ...

Quand tu es sur la Cellule "T25" sélectionnée à la main, fait CTRL et Flèche vers le Haut, ca simule exactement : .End(xlUp) ...
La séléction se termine où ??? Je pense que c'est "T13"
(ensuite tu comptes depuis "T6" à "T13" et ca fait bien 8)

Tu fais aussi ce test dans le code de ton Userform
MsgBox [T25].End(xlUp).Row
Et tu vérififies que c'est bien la feuille active qui contient les Data .... Car je parie que non !

Car l'évaluate [Captain Crochet] que je n'aime pas trop, ne travaille que sur la Feuille Active...

Je te conseille de reprendre complètement le code comme ceci proprement :
VB:
Option Explicit

Private Sub UserForm_Initialize()
Dim WB As Workbook
Dim WS As Worksheet
Dim L As Integer
Dim MaPlageAddress As String, MonClasseeurName As String, MaFeuilleName As String


Set WB = ThisWorkbook
Set WS = WB.Worksheets("Menu")

L = WS.Range("B100").End(xlUp).Row

MonClasseeurName = WB.Name
MaFeuilleName = WS.Name
MaPlageAddress = WS.Range("A2:B" & L).Address

With Me.ComboBox1
.ColumnCount = 2
.ListRows = 15
.RowSource = "'[" & MonClasseeurName & "]" & MaFeuilleName & "'!" & MaPlageAddress
End With

End Sub

Comme dans l'exemple ci-joint.

Bon débuggage
@+Thierry




"
 

Pièces jointes

  • 1594139286264.png
    1594139286264.png
    3 KB · Affichages: 10
  • XLD_Lucien31_ComboBox_MultiColumns_by_Rowsource_Best_Practice.xlsm
    22.7 KB · Affichages: 5

Lucien31

XLDnaute Nouveau
Re Lucien

Tu ne m'a pas bien compris, dans LA Bonne Piste, je veux dire que c'est un problème de Data pas de UserForm ou de Control ActiveX défectueux ou d'XLSM ...

Quand tu es sur la Cellule "T25" sélectionnée à la main, fait CTRL et Flèche vers le Haut, ca simule exactement : .End(xlUp) ...
La séléction se termine où ??? Je pense que c'est "T13"
(ensuite tu comptes depuis "T6" à "T13" et ca fait bien 8)

Tu fais aussi ce test dans le code de ton Userform
MsgBox [T25].End(xlUp).Row
Et tu vérififies que c'est bien la feuille active qui contient les Data .... Car je parie que non !

Car l'évaluate [Captain Crochet] que je n'aime pas trop, ne travaille que sur la Feuille Active...

Je te conseille de reprendre complètement le code comme ceci proprement :
VB:
Option Explicit

Private Sub UserForm_Initialize()
Dim WB As Workbook
Dim WS As Worksheet
Dim L As Integer
Dim MaPlageAddress As String, MonClasseeurName As String, MaFeuilleName As String


Set WB = ThisWorkbook
Set WS = WB.Worksheets("Menu")

L = WS.Range("B100").End(xlUp).Row

MonClasseeurName = WB.Name
MaFeuilleName = WS.Name
MaPlageAddress = WS.Range("A2:B" & L).Address

With Me.ComboBox1
.ColumnCount = 2
.ListRows = 15
.RowSource = "'[" & MonClasseeurName & "]" & MaFeuilleName & "'!" & MaPlageAddress
End With

End Sub

Comme dans l'exemple ci-joint.

Bon débuggage
@+Thierry




"
Thierry,

j'ai fait le test "ctrl flèche haute" depuis T25 et c'est la dernière entrée de la liste soit T16 qui est sélectionnée et qui correspond à la 11 ligne depuis T6.
En revanche, le test dans le userform renvoie bien T13, ce qui parait logique vu les 8 ligne affichées.

Je vais modifier le code complètement et je te tiens au courant.
Merci
Bonne soirée
Lucien
 

Lucien31

XLDnaute Nouveau
Thierry,

j'ai fait le test "ctrl flèche haute" depuis T25 et c'est la dernière entrée de la liste soit T16 qui est sélectionnée et qui correspond à la 11 ligne depuis T6.
En revanche, le test dans le userform renvoie bien T13, ce qui parait logique vu les 8 ligne affichées.

Je vais modifier le code complètement et je te tiens au courant.
Merci
Bonne soirée
Lucien
Bonjour à Thierry et au forum,

J'ai adapté ton code comme suit mais j'ai une erreur "Membre de Méthode ou de données introuvable":
1594228638151.png

par ailleurs, j'ai réenregistré tous mes fichiers en xlsm (non sans mal d'ailleurs). Du coup les fichier ne sont plus affichés en mode de compatibilité, mais cela n'a rien changé. J'ai donc introduit ton code (ci-dessus) mais ...

J'espère que tu auras une idée.
Merci par avance

Lucien31
 

Lucien31

XLDnaute Nouveau
Bonsoir @Lucien31 , le Forum

Tu as mal adpaté :
Regarde la pièce jointe 1072635

Dans mon code c'est :
Dim WB As Workbook
Sans "S" !!!

Bonne soirée
@+Thierry
Bonjour Thierry,
Sans mettre "s" j'obtiens "Erreur d'exécution '9': l'indice n'appartient pas à la sélection". Du coup j'ai tenté avec un"S" et je ne t'ai pas envoyé le bon rejet.

Finalement, j'ai repris le code de départ, comme ci-dessous, en précisant" !S6:T25" & [T25]" et ça marche impeccable. J'ai retrouvé l'ascenseur vertical et l'accès à toutes mes lignes.
Je pourrais donc passer en "résolu" mais si ton code est plus sur, je préférerais l'adopter.

Private Sub UserForm_Initialize()
Me.ComboBox1.ColumnCount = 2
Me.ComboBox1.RowSource = "'[Menu.xlsm]Menu'!S6:T25" & [T25].End(xlUp).Row
End Sub

Merci pour ta patiente
Lucien31
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Lucien31

Si tu as cette erreur :
Sans mettre "s" j'obtiens "Erreur d'exécution '9': l'indice n'appartient pas à la sélection"

C'est que la"T" n'est pas trouvé ci-dessous !!! Normal car c'est "L" !!! :

1594306180287.png


Par fortiche en copié/collé Lulu !

Et pour ton "[T25]" n'oublies pas qu'il regarde la Feuille active et PAS la feuille Menu...

Bonne journée
@+Thierry
 

Lucien31

XLDnaute Nouveau
Bonjour Lucien31

Si tu as cette erreur :


C'est que la"T" n'est pas trouvé ci-dessous !!! Normal car c'est "L" !!! :

Regarde la pièce jointe 1072698

Par fortiche en copié/collé Lulu !

Et pour ton "[T25]" n'oublies pas qu'il regarde la Feuille active et PAS la feuille Menu...

Bonne journée
@+Thierry
Je ne sais pas si c'est un problème de copier/coller ou d'yeux de vieux mais j'ai effectivement zappé le "L". Cela dit, j'ai toujours l'erreur d'exécution '9' avec le "L" à la place du "T".
Cela vient peut être du fait que mon UserForm est appelé par un autre UserForm (j'ai cela pour n'avoir qu'un seul bouton sur la feuille de travail:
Voici l'USF appelé par le bouton
1594312995176.png

Voici son code:
1594313190232.png

A+
Lucien
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re bonsoir

Normalement le Userform de préselection, n'a aucune incidence sur le code que j'ai proposé, l'important c'est le code qui se trouve dans l'initialise du UserForm qui contient la ComboBox1 que tu veux initialiser....

STP postes ce code d'initialise en copié/collé entre les balises CODE VB comme suit :

1594314281403.png


Et on pourra lire et éventuellement mieux comprendre où ça bugue au lieu de travailler sur d'une capture écran...

Bonne soirée
@+Thierry
 

Statistiques des forums

Discussions
315 167
Messages
2 116 924
Membres
112 915
dernier inscrit
Ludof