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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro VBA ListBox : erreur si une seule entrée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Macro VBA ListBox : erreur si une seule entrée

n°2292084
vylkor
Posté le 18-11-2016 à 11:57:08  profilanswer
 

Bonjour,
 
Je reviens vers vous pour une nouvelle question, comme dit dans le message precedent ( par ici ) je veux afficher la liste des couleurs que j'ai crée, pour ça j'utilise le bout de code suivant :
 

Code :
  1. Dim nb_couleurs As Integer
  2. Private Sub UserForm_Initialize()
  3.     Sheets("Couleurs" ).Activate
  4.     nb_couleurs = Range("A1" ).End(xlDown).Row
  5.     ListBox1.List() = Range(Cells(2, 1), Cells(nb_couleurs, 1)).Value
  6.    
  7. End Sub


 
Le soucis est que si je n'ai qu'une seule entrée dans mon tableau, ça plante, je pense à cause du Range d'une seule case.
 
Le message d'érreur :
Erreur d'exécution '381':
 
Impossible de definir la propiété List. Index de table de proprietés non valide.
 
 
Je sais que ça doit être un problème deja abordé, mais je n'arrive pas à trouver de réponse accéssibles à mon niveau pour pallier à ça.
 
Le problème n'est pas majeur, car il ne devrait "normalement" jamais y avoir qu'une seule valeur dans le tableau, mais je n'aime pas l'idée de sortir du code qui puisse planter "sur un malentendu", surtout que les utilisateurs derriers ne feront aucun éffort pour comprendre.
 
Encore une fois merci de votre aide,
 
 :hello:

mood
Publicité
Posté le 18-11-2016 à 11:57:08  profilanswer
 

n°2292555
Marc L
Posté le 23-11-2016 à 16:33:13  profilanswer
 

 
            Bonjour,
 
            comme indiqué dans l'aide VBA interne concernant  List  utiliser la méthode  AddItem  …
 

n°2292618
vylkor
Posté le 24-11-2016 à 09:21:31  profilanswer
 

Effectivement, maintenant que j'ai plus d'expérience, j'ai revu le code en utilisant cette methode et c'est passé tout seul, pour les curieux voila le code :
 

Code :
  1. Private Sub UserForm_Initialize()
  2.     Sheets("Couleurs" ).Activate
  3.     color_num = Range("A1" ).End(xlDown).Row
  4.    
  5.     For i = 2 To color_num
  6.     color_select_value = Cells(i, 1).Value
  7.     color_select.AddItem color_select_value
  8.     Next i
  9.    
  10.    
  11. End Sub


 
Désolé pour le dérangement  :jap:

n°2292635
Marc L
Posté le 24-11-2016 à 10:51:50  profilanswer
 

 
            La ligne n°6 est inutile, ajouter directement la valeur de la cellule :  color_select.AddItem Cells(i, 1).Value  …
 

n°2292652
vylkor
Posté le 24-11-2016 à 12:39:07  profilanswer
 

Merci pour l'astuce, mon code est encore très brouillon, mais je l'améliore petit à petit avec tout ce que j'apprend et que vous m'apportez :)

n°2292666
Marc L
Posté le 24-11-2016 à 14:50:33  profilanswer
 

Code :
  1. Private Sub UserForm_Initialize()
  2.     With Worksheets("Couleurs" ).Cells(1).CurrentRegion.Rows
  3.         Select Case .Count
  4.                Case 1:      Exit Sub
  5.                Case 2:      color_select.AddItem .[A2].Value
  6.                Case Else:   color_select.List() = .[A2].Resize(.Count - 1).Value
  7.         End Select
  8.     End With
  9. End Sub


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

  Macro VBA ListBox : erreur si une seule entrée

 

Sujets relatifs
Macro VBA pour écrire du code Macro ImageJ[PYTHON] VBA & Formules Excel vers site web Python
Creer un bouton macro plusieurs feuilles d'un classeurNovice en VBA (Projet Excel)
Page personnalisée pour erreur 500faire une somme avec nom d'onglet et ligne variable en VBA
Transcription formule excel en VBAAfficher plusieurs lignes sur une seule
verrouiller un fichier excel avec une macro 
Plus de sujets relatifs à : Macro VBA ListBox : erreur si une seule entrée


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