USERFORM et Listes Déroulantes

S

shasha

Guest
Bonsoir à tous,

J'ai plein de petit souci entre les while, case et if !!!

J'ai une feuille excel sur laquelle je stocke mes voitures avec les marques les modèles et d'autres critères. Elles sont stockées sous forme de liste avec filtre.

J'ai créé un userform et je souhaiterai qu'il affiche la liste des modèles + d'autres info de la ligne en fonction du modèle que j'ai sélectionné dans une liste déroulante. la liste est à sélection unique

Mais cela ne marche pas !! En fait j'ai voulu utiliser un "case" mais avec la valeur d'une cellule au lieu d'un texte. Je ne sais pas si cela est possible.
J'ai aussi essayé avec if mais alors là cela ne marche pas du tout.

Index = 8 (ma liste commence à partir de la ligne 8)
POINT.Clear (c'est le nom de ma liste)
While Sheets("VOITURE").Cells(Index, 1) <> ""
Select Case Sheets("VOITURE").Cells(Index, 2).Value
Case Sheets("STEP 4").Cells(10, 4).Value
POINT.AddItem (Sheets("VOITURE").Cells(Index, 4) + ": " + Sheets("VOITURE").Cells(Index, 1) + " - " + Sheets("VOITURE").Cells(Index, 2))
End Select

Index = Index + 1

Wend
End Sub


J'ai 2 autres questions:
1- Une fois qu'il m'affiche la liste et que j'ai sélectionné une ligne, comment récuperer la valeur de la première colonne de la feuille où sont stockée les info de la ligne sélectionnée. Pour l'instant je sais seulement récuperer:
- soit les colonnes mais pour une liste à choix multiple
- soit les 1er caractères à gauche dans le cas d'une liste à sélection unique

2- comment peux-on mélander du while avec du case et du if dans un userform pour qu'il me détermine les valeurs d'une liste déroulante:
En fait, je souhaite pouvoir faire:
- du while pour sélectionner que les lignes non vides d'une feuille excel
- du if pour sélectionner les lignes non vides dont la colonne 2 correspond au numéro de client que j'ai saisi dans la feuille où j'ai mis mon userform
- du case pour qu'il me sélectionne que les lignes non vides pour le client sélectionné dont la valeur de la colonne 7 est = EN COURS
J'ai essayé plein de truc mais soit il reconnait pas le END IF soit le WEND
exemple:

Private Sub UserForm_Initialize()
Index = 7
BDETUDE.Clear

While Sheets("BDETUDE").Cells(Index, 1) <> ""
IF Sheets("BDETUDE").Cells(Index, 1).value = ("CLIENT").Cells(1, 4).value then
Select Case Sheets("BDETUDE").Cells(Index, 7).Value
Case "EN COURS"
BDETUDE.AddItem (Sheets("BDETUDE").Cells(Index, 1) + ": " + Sheets("BDETUDE").Cells(Index, 2) + " - " + Sheets("BDETUDE").Cells(Index, 5))
End Select
End if
Index = Index + 1

Wend
End Sub






Merci d'avance pour votre aide
A+

Shasha
 
P

Papy Novice

Guest
Bonjour shasha
Trop fort, vraiment trop fort pour moi, désolé.
Monique ou d'autres devraient te solutionner. Bonne journée à toi, et encore une fois DESOLE. (regarde Bien démarrer en Vb) et tu trouveras Monique.
Merci le forum.
 
S

shasha

Guest
Hello,
Je viens de faire les corrections et cela marche !!!!

Merci bcp car j'étais bloquée depuis 2 jours.

Au fait, quelle est la différence entre & et + quand tu veux afficher plusieurs colonnes dans la liste.


NB: Sans vouloir abusée, as-tu une idée pour mon prb concernant le fait que qd je sélectionne une valeur dans ma liste (mono-valeur), je veux ramener que la valeur de la première colonne de la source.


Bonne journée
shasha
 
C

ChTi'160

Guest
Re "shasha"
pour extraire le premier mot de la chaine sélectionnée
tu peux utiliser ceci
Private Sub BDETUDE_Click()
BDETUDE.Text = Mid(BDETUDE, 1, InStr(1, BDETUDE, " ", 1))
End Sub
A+++
Jean Marie
 

Discussions similaires

Statistiques des forums

Discussions
312 163
Messages
2 085 863
Membres
103 007
dernier inscrit
salma_hayek