Afficher le contenu de listbox selon condition

tekmars

XLDnaute Nouveau
Bonjour,

J’utilise un formulaire qui comprend des listbox,

Je bloque au niveau de l’affichage du contenu de la listbox2 (de variable) qui dépend de la ligne sélectionnée dans la listbox3 (de paramètre)

Autre problème : La source de la listbox3 = cellules B1 à D1 (de l’onglet « Listes ») or je ne voit que la cellule B1 !

Avez-vous une solution ?

Merci pour votre aide.

Ci-contre le fichier en question Cliquez ici
 

Excel-lent

XLDnaute Barbatruc
Re : Afficher le contenu de listbox selon condition

Bonsoir Tekmars;

Comment se fait-il que ton fichier soit si gros alors qu'il est quasi vide???

Ne pouvant mettre ton fichier corrigé sur le forum, je vais donc te donner mes réponses ci-dessous.

tekmars à dit:
Autre problème : La source de la listbox3 = cellules B1 à D1 (de l’onglet « Listes ») or je ne voit que la cellule B1 !

Effacer ta macro : Private Sub UserForm_Initialize()

et la remplacer par celle ci-dessous :
Code:
Private Sub UserForm_Initialize()
[COLOR="Green"]' Macro modifié par Excel-lent le 26/10/09
[/COLOR]
ListBox1.RowSource = "Listes!A2:A4"    [COLOR="Green"]'Operateur[/COLOR]

End Sub

Rajouter la macro suivante :
Code:
Private Sub ListBox1_Click()
[COLOR="Green"]' Macro créé par Excel-lent le 26/10/09[/COLOR]

Dim Tablo, k As Long

  Tablo = Sheets("Listes").Range("B2:D6")

With ListBox3
    .ColumnCount = 3
    .ColumnWidths = "50;30;30"
    .Clear
    For k = 1 To UBound(Tablo)
      If Sheets("Listes").Cells(k, 1) = Me.ListBox1.Value Then
        .AddItem Tablo(k, 1)
        .List(.ListCount - 1, 1) = Tablo(k, 2)
        .List(.ListCount - 1, 2) = Tablo(k, 3)
      End If
    Next k
End With

End Sub

Ainsi ta ListBox3, se remplira (avec toutes les colonnes) en fonction de la ligne sélectionné dans la ListBox1.

Pour ta ListBox2, n'ayant pas compris ce que tu veux mettre dedans, je ne peux malheureusement t'aider. Tu peux détailler?


Un petit conseil en passant : pour plus de clarté dans ton code (et ton explication), si tu avais changé le nom de ta ListBox1, ListBox2, ListBox3 cela aurait nettement mieux!

Par exemple au lieu d'appeler ta première ListBox : ListBox1, tu aurais pu l'appeler : ListBoxOpérateur.

Pour ta ListBox2, tu aurais pu la nommer : ListBoxVariable

Pour ta ListBox3 => ListBoxParamètre

Pour le faire, c'est simple, il suffit de cliquer une fois sur la ListBox de ton choix, et dans la partie de gauche, sur la ligne (Name), remplacer ListBox1 par ListBoxOpérateur.

Avantage de nommer tes ListBox ainsi, c'est que tu sais qu'il s'agit de ListBox et en même temps tu sais ce qu'il y a dedans!

Evidement, tu peux faire la même chose (c'est même conseillé) pour tes CommandButton et compagnie

Le mieux c'est de faire cela lors de la création de ton UserForm (lui aussi tu peux le renommer ;)). Car si tu le fais maintenant, après avoir renommer tes ListBox, il faudra également renommer tes noms de macro!

Ta macro : Private Sub ListBox1_Click() deviendra : Private Sub ListBoxOpérateur_Click()

Et dans ta macro, il faudra remplacer : With ListBox3 par With ListBoxParamètre

etc...

PS. : pour information, pour les noms, il ne faut mettre d'espace.

A te lire

Cordialement
 
Dernière édition:

tekmars

XLDnaute Nouveau
Re : Afficher le contenu de listbox selon condition

Merci Excel-lent pour ta réponse,

En effet le fichier était volumineux, je l'ai modifie pour pouvoir le passer directement sur le forum en le compressant,

en fait j'ai cette liste :
liste.jpg


et avec cet Userform je souhaite :

afficher les variables correspondants au paramètre choisi

essai 1.png


de la même manière si on clique sur numero (en parametre) on doit voir :
1
2
3
4
5
dans la listbox des variables

Et ça je n'arrive pas à le faire :(

Merci encore pour votre aide

Tekmars
 

Pièces jointes

  • test3.zip
    24.5 KB · Affichages: 76
  • test3.zip
    24.5 KB · Affichages: 75
  • test3.zip
    24.5 KB · Affichages: 79
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : Afficher le contenu de listbox selon condition

Bonsoir Tekmars,

Je constate avec plaisir que tu as nommé tes ListBox et Cie :)

J'ai réglé ci-joint ton problème de ListBoxVariable, et j'ai profité de l'occasion pour terminer ta macro lié au bouton "Validation".

Et tant qu'à faire, j'ai rajouté dans cette dernière macro quelques contrôles basiques pour qu'avant que la macro referme l'UserForm et enregistre les données sur la feuille "Datas", elle s'assure que l'utilisateur a bien :
-> sélectionné un opérateur
-> sélectionné une variable
-> saisie le nombre de jours
-> ...

Et tant que l'utilisateur n'a pas corrigé sa saisie, il ne peut quitter l'UserForm (à moins de cliquer sur la croix de l'UserForm)

J'ai mis des commentaires dans la macro, pour que tu t'y retrouve et comprenne plus facilement. Si tu as le moindre soucis, n'hésites pas à demander des explications complémentaires.

L'idéal serait de rajouter un bouton "Annuler la saisie" avec pour macro :
Code:
Private Sub CommandButtonAnnulerLaSaisie_Click()

Unload UserForm1

End Sub

Dans le cas où évidement tu as nommé ce CommandButton : CommandButtonAnnulerLaSaisie ;)

Sinon...

Bonne nuit

Cordialement
 

Pièces jointes

  • tekmars proposition 2.zip
    31.1 KB · Affichages: 119
Dernière édition:

Discussions similaires

Réponses
26
Affichages
2 K

Statistiques des forums

Discussions
312 321
Messages
2 087 264
Membres
103 500
dernier inscrit
Suk Ram