petit code à corriger

pascal21

XLDnaute Barbatruc
bonjour le forum
je bricolé un bout de code pour avoir le contenu de la listbox variable en fonction du contenu d'une autre cellule
un peu à le manière d'une liste en cascade
mais comme je ne suis pas arrivé à mettre dans les propriétés du listbox "=indirect(e8)"
j'ai crée 3 listes et j'y fais réfrence dans le code
Code:
Private Sub UserForm_Initialize()
If Range("e8").Select Then
ListBox1.RowSource = "liste_chantier1"
    Else
    If Range("e13").Select Then
    ListBox1.RowSource = "liste_chantier2"
        Else
        If Range("e18").Select Then
        ListBox1.RowSource = "liste_chantier3"
End If
    End If
        End If
End Sub
mais bien çà ne fonctionne pas çà ne prend en compte que e18 soit le première condition que je sois sur e13 ou e8
je n'ai pas du etre très clair même pas du tout en fait

merci de votre aide
 

Papou-net

XLDnaute Barbatruc
Bonjour Pascal21,

As-tu essayé comme ceci?

Private Sub UserForm_Initialize()
If Not Selection.Column = 5 Then Exit Sub
Select Case Selection.Row
Case 8
ListBox1.RowSource = "liste_chantier1"
Case 13
ListBox1.RowSource = "liste_chantier2"
Case 18
ListBox1.RowSource = "liste_chantier3"
End Select
End Sub

Bonne journée.

Cordialement.

Edit: salut JP14
 

Papou-net

XLDnaute Barbatruc
merci ça fonctionne
faut que je la note quelque part cette méthode
je ne comprends toujours paqs pourquoi ma méthode ne fonctionnait pas
bonne journée
RE

Tout simplement parce que la ligne

If Range("e8").Select Then

sélectionne la ligne 8 en premier et met donc fin à la condition.

Je ne sais pas si je suis clair, mais si tu exécutes ton code au pas-à-pas, tu verras mieux comment agit ta formule conditionnelle.

Cordialement.
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

En effet, avec ta méthode des IF je pense qu'il aurait mieux valu écrire quelque chose comme ça :
VB:
Private Sub UserForm_Initialize()
    If ActiveCell.Address = "$E$8" Then
        ListBox1.RowSource = "liste_chantier1"
    Else
        If ActiveCell.Address = "$E$13" Then
            ListBox1.RowSource = "liste_chantier2"
        Else
            If ActiveCell.Address = "$E$18" Then
                ListBox1.RowSource = "liste_chantier3"
            End If
        End If
    End If
End Sub
Mais dans un tel cas le mieux est tout de même d'utiliser un SELECT CASE. ;)
 

Discussions similaires

Réponses
4
Affichages
197
Réponses
2
Affichages
82

Statistiques des forums

Discussions
312 115
Messages
2 085 451
Membres
102 889
dernier inscrit
monsef JABBOUR