Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3005 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème d'affichage avec une listbox - Besoin d'aide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème d'affichage avec une listbox - Besoin d'aide

n°1350980
Nullos59
débutant
Posté le 21-04-2006 à 10:14:30  profilanswer
 

Bonjour tout le monde,
 
Voilà un petit moment que je commence réaliser des petites applications sous vba avec excel, dans la plupart des cas j'arrive à corriger mes erreurs mais là, j'aurai besoin d'aide ou de conseils.
 
Je travaille actuellement sur une base de données excel importante (en terme de volume) 1 tableau par feuille (le classeur contient 20 feuilles) chaque tableau posséde entre 50 et 100 lignes... En un mot c'est la fête  :sleep:  
Pour faciliter la lecture et la saisie de nouvelles valeurs, j'utilise des userform.
 
Mais voilà, sur l'un des userform, j'ai 2 listbox (listbox1 et listbox2). La valeur de la listbox1 va déterminer la liste utilisée par la listbox2.
 
Lorsque je lance l'application, la liaison listbox1 et listbox2 marche mais le problème est que la listbox2 ne va pas faire apparaître l'ensemble des valeurs de la liste.  
(cette liste est composé d'une soixantaine de noms, et seul les 15 ou 20 premier apparaissent!!!  :fou: )
Ensuite, c'est la valeur retenue par la listbox2 qui commandes l'affichage des textbox (pas de problème de ce cote là.
 
Je ne sais pas si cela vient de ma déclaration de variables ou d'autres chose... Je vous file un petit bout de code, je n'ai pas trouvé ce qui clochait! Maaatin diiiiffffffiiiicccillllleeee!!
 
 
Private Sub ListBox1_change()
 
Dim nom As String
 
nom = Range("A4" ).Address & ":" & Range("A4" ).End(xlDown).Address
     
If ListBox1.ListIndex = 0 Then
    Sheets("Autorisation de travail" ).Select
Else
If ListBox1.ListIndex = 1 Then
    Sheets("CMME" ).Select
Else
........
.......
.......
End if
 
    ListBox2.RowSource = nom
    ListBox2.ListIndex = 0
 
End Sub
 
 
Merci d'avance

mood
Publicité
Posté le 21-04-2006 à 10:14:30  profilanswer
 

n°1351019
Nullos59
débutant
Posté le 21-04-2006 à 10:44:29  profilanswer
 

Bon je viens de copier sur un nouveau fichier excel la partie du code et çà fonctionne parfaitement!!!!
 
En revanche, sur l'autre fichier (cf. message au-dessus), la listbox2 n'affiche pas la liste complètement seulement quand
ListBox1.ListIndex=0
 
Et je ne sais pas pourquoi... car çà à l'air de fonctionner pour les autres valeurs de ListBox1.ListIndex
 
Je sens venir une longue journée...

n°1351039
Nullos59
débutant
Posté le 21-04-2006 à 10:59:19  profilanswer
 

Encore moi ;-)
 
J'ai trouvé!!! les variables sont bonnes, le problème vient des conditions (environ 20 pour les changements de feuilles)
 
Bon le truc est de faire un petit bidoullage maison en répétant la définition du "nom" dans chaque condition
 
 
Private Sub ListBox1_change()  
 
Dim nom As String  
 
     
If ListBox1.ListIndex = 0 Then  
    Sheets("Autorisation de travail" ).Select  
    nom = Range("A4".Address & ":" & Range("A4".End(xlDown).Address  
Else  
If ListBox1.ListIndex = 1 Then  
    Sheets("CMME" ).Select  
    nom = Range("A4".Address & ":" & Range("A4".End(xlDown).Address  
Else  
........  
.......  
.......  
End if  
 
    ListBox2.RowSource = nom  
    ListBox2.ListIndex = 0  
 
End Sub  
 
c'est pas le meilleur truc de gonfler le prgm par des répétitions de lignes mais çà fonctionne...
 
Enfin si vous avait une autre solution je suis toujours prenneur
 
voilà voilou

n°1351062
watashi
La démotivation : JAMAIS !
Posté le 21-04-2006 à 11:23:40  profilanswer
 

Salut nullos59,
 
pour tes condition en chaines comme ici tu devrais le tenter avec Select Case/End select. Par ailleurs, pour ma part c'est la feuille que je mettrais en variable :

Code :
  1. Dim nom as string, Ws as Worksheet
  2. Select Case ListBox1.ListIndex
  3.     Case Is 0
  4.         Set Ws = Sheets("Autorisation de travail" )
  5.     Case Is 1
  6.         Set Ws = Sheets("CMME" )
  7. '... tous tes cas possibles
  8. End Select
  9. nom = ws.range("A4:A" & ws.range("A4" ).end(xldown).row).address
  10. listbox2.rowsource=nom
  11. listbox2.listindex=0

De plus si ton listbox1 renvois en value le nom de ta feuille tu dois pouvoir encore alléger ton code.
A voir ;)

n°1351092
Nullos59
débutant
Posté le 21-04-2006 à 11:54:20  profilanswer
 

Je te remercie Watashi
 
Je vais appliquer ton conseil pour alléger mon code


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème d'affichage avec une listbox - Besoin d'aide

 

Sujets relatifs
[résolu] Probleme de popup sur mon siteBesoin d'un script
Sauts de ligne pas pris en compte à l'affichage (avec MySQL)SwishMax Probleme Swf / Xml Loadmovie
affichage, sauvegarde etc.. d'une map 2D[Résolu] probleme de syntaxe *&
besoin d'aide pour installer un sondage ![VBS] Aide sur expression régulière
Problème d'écriture de cookie 
Plus de sujets relatifs à : Problème d'affichage avec une listbox - Besoin d'aide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR