Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 
C

ChTi'160

Guest
Salut "Shasha"
bonjour papy
en pièce jointe un exemple de ce que j'ai cru comprendre oups
tiens nous au courant
A+++
Jean Marie
 

Pièces jointes

  • USERFListeV1.zip
    12.2 KB · Affichages: 61
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
 
P

Papy Novice

Guest
Bonjour shasha,
Pour répondre à ta question, je crois que le & signifie : concaténer
Mais tu sais je débute seulement en vb et j'avoue : c'est pas simple.
Bonne soirée à toi
 
C

ChTi'160

Guest
Re
peut etre une solution à adapter

Private Sub BDETUDE_Click()
BDETUDE.Text = Left(BDETUDE, 2)
End Sub
cela t'affiche les deux premiers caracteres de la selection
A+++
Jean Marie
 
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…