Variable tableau ListBox

  • Initiateur de la discussion Initiateur de la discussion cibleo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cibleo

XLDnaute Impliqué
Bonsoir le forum,

Je me bat encore avec une variable tableau et une Listbox 😱
Dans le formulaire, ComboCritere me permet d'afficher différentes listes dans ListBoDescription.

J'aimerais remplir la variable Tablo1 avec les différents choix successifs effectués dans ListBoDescription, puis les afficher dans ListBox1 par l'intermédiaire du bouton B_Afficher.

Exemple :
Critère Spécialités, je sélectionne Cardiologie et Diabétologie
Critère Praticiens, je sélectionne Dr Favre er Dr Grison
Critère Traitement ou soins, je sélectionne Chimio et Rayons

En 1 seul clic, j'aimerais voir s'afficher dans ListBox1 les 6 sélections de LisBoDescription en cliquant sur B_Afficher.

Formulaire.jpg

Dans UserForm2, j'ai ceci :

VB:
Dim Tablo1()
 
Private Sub Remise_Zero()
Me.ComboCritere.ListIndex = -1
Me.ListBoDescription.Clear
'vider le tableau Tablo1
ReDim Tablo1(0) 'est-ce bon ?
End Sub

VB:
 Private Sub ListBoDescription_Change() ' A revoir
Dim tmp As Byte, i As Byte
For i = 0 To Me.ListBoDescription.ListCount - 1
If Me.ListBoDescription.Selected(i) Then
tmp = tmp + 1
ReDim Preserve Tablo1(tmp)
Tablo1(tmp) = Me.ListBoDescription.List(i)
End If
Next i
End Sub

VB:
Private Sub UserForm_Initialize()
Me.Caption = Now
Me.ComboCritere.List = Application.Transpose(Range("Rubrique3"))
ReDim Tablo1(0) 'Est-ce bon ?
End Sub
VB:
Private Sub B_Afficher_Click() 'Afficher dans ListBox1
Dim Ctrl As Control, i As Integer
If ListBox1.ListCount > 0 Then Me.ListBox1.AddItem ""
.../...
For j = 0 To UBound(Tablo1)
Me.ListBox1.AddItem Tablo1(j)
Next j
'Me.ListBox1.AddItem Me.ListBoDescription.List(i)
 
If MsgBox("Voulez-vous rajouter autre chose ? ", vbYesNo + vbExclamation, "Attention :") = vbYes Then
Remise_Zero
Me.ComboCritere.SetFocus
Else
Remise_Zero
Me.B_Inserer.SetFocus
End If
 
End Sub

Pouvez-vous m'aider à revoir Private Sub ListBoDescription_Change() et la boucle For j next j dans Private Sub B_Afficher_Click()

Merci de votre aide Cibleo
Bonne soirée à tous.
 

Pièces jointes

  • Formulaire.jpg
    Formulaire.jpg
    16.7 KB · Affichages: 352
  • Formulaire.jpg
    Formulaire.jpg
    16.7 KB · Affichages: 353
  • Formulaire1.zip
    Formulaire1.zip
    18.6 KB · Affichages: 54
Dernière édition:
Re : Variable tableau ListBox

Salut,

Code:
For Each Ctrl In Me.Controls 'ListBoEtat, ListBoRecom, ListBoConditions, ListBoFormalites
    If Ctrl.Tag = "L" Then
      For i = 0 To Controls(Ctrl.Name).ListCount - 1
         If Controls(Ctrl.Name).Selected(i) Then Me.ListBox1.AddItem Controls(Ctrl.Name).List(i)
      Next
    End If
  Next

et

Code:
 For j = 0 To UBound(Tablo1)
    Me.ListBox1.AddItem Tablo1(j)
  Next j


ça fait la même chose , pourquoi donc ?

A+++


Ps pour les couleurs tu utilises quoi ? ta main ou 1 outil ?
 
Re : Variable tableau ListBox

Bonsoir,
Il faut quand même une sacré mémoire pour se souvenir sur quoi on a clické !
Pourquoi ne pas rajouter les données au fur et à mesure, d'autant que tu pourrais utiliser le glisser/déposer ?!
Mais bon...
A+
kjin
 

Pièces jointes

Re : Variable tableau ListBox

Bonsoir Zon, kjin
Bonsoir à tous,

Zon, effectivement j'avais oublié de redéfinir la propriété Tag de ListBoDescription qui ne devait donc pas être concernée par la 1ère boucle.
Pour les couleurs, j'utilise les nouvelles balises codes, je les saisie manuellement.

kjin
Pour l'exemple, j'ai épuré mon formulaire qui contient plusieurs contrôles et donc plus d'infos à insérer dans ListBox1.
En fait les données sont rajoutées au fur à mesure dans ListBox1 si je clique sur oui à l'apparition de la MsgBox ----> (je lance alors une nouvelle saisie dans le formulaire)

L'instruction ci-dessous me permet d'insérer une ligne blanche entre les nouvelles saisies.
VB:
Private Sub B_Afficher_Click() 'Afficher dans ListBox1
 
'Insère une ligne blanche si une ligne déjà présente dans ListBox1
If ListBox1.ListCount > 0 Then Me.ListBox1.AddItem ""
.../...
If MsgBox("Voulez-vous rajouter autre chose ? ", vbYesNo + vbExclamation, "Attention :") = vbYes Then
Remise_Zero
Me.ComboCritere.SetFocus
Else
Remise_Zero
Me.B_Inserer.SetFocus
End If
 
End Sub

Pour en revenir à ta réponse, elle me convient sur le fond mais pas tout à fait sur la forme.
En effet, j'avais prévu que ListBoDescription soit une ListBox Multiselect, cela serait un poil plus intuitif 😎
Peux-tu revenir sur ton code, j'ai une erreur en Multiselect, je te remercie kjin.

Sinon, pour la mémoire cela devrait aller, je n'ai pas l'intention de cliquer frénétiquement sur ListBoDescription 😀

Bonne soirée Cibleo
 
Re : Variable tableau ListBox

En effet, j'avais prévu que ListBoDescription soit une ListBox Multiselect, cela serait un poil plus intuitif 😎
Peux-tu revenir sur ton code, j'ai une erreur en Multiselect, je te remercie kjin.
C'est normal, l'événement click n'est pas géré par une listbox avec Multiselect, c'est le pourquoi je n'ai pas utilisé cette propriété.
Il faut dans ce cas utiliser l'événement MouseDown et boucler à chaque click dans la listbox
Il me semble que tu compliques vraiment l'histoire, dans la mesure ou comme je te l'ai dit, tu peux utiliser le drag and drop
A+
kjin
 
Re : Variable tableau ListBox

Bonsoir kjin,
Bonsoir à tous,

Dans l'immédiat ta solution me convient, je l'intègre dans mon projet initial.
A l'occasion, je jetterai un oeil sur le drag and drop.
L'événement MouseDown, je ne m'y suis jamais attardé et donc ne connais pas du tout.

Merci kjin
Cibleo
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
314
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
153
Réponses
3
Affichages
205
Réponses
3
Affichages
680
Réponses
4
Affichages
235
Réponses
10
Affichages
801
Réponses
4
Affichages
508
Retour