ComboBox

  • Initiateur de la discussion Delirum
  • Date de début
D

Delirum

Guest
Salut tout le monde.

J'ai un problème avec un combobox (suis débutant en VBA).

Je suis en train de réaliser un fichier Excel avec plusieur userform.

Dans l'userform nomé "Dép" j'ai un combobox nomé "ComboBoxStation"
dont je voudrais qu'il prenne pour plage les cellules de B2 à B4 de la feuille nomé "aide". Je voudrais que la cellule liée dans laquelle est affecté une valeur soit la cellule C3 de la feuille "aide". La valeur qui y sera afficher sera fonction du choix de l'utilisateur (1 pour le choix qui correspond à la cellule B2, 2 pour le choix qui correspond à la cellule B3, 3 pour le choix qui correspond à la cellule B4).

Pour info: mon userform ce lance d'une autre feuille que la feuill "aide" donc pas de activecelles.select.

Quelq'un m'a déja aider sur un problème similaire, mais son aide ne ma pas fait avancé.

A + tard
 
M

Maximilium

Guest
Stl le forum
Slt Delirum


"Please", Is it possible to you to explain mieux....

Je souris, Stp, peux tu mieux explique ton problème, voire y joindre ton fichier, pour qu'on puisse y travailler dessus et t'apporter une solution(si solution ya)

MAxi
 
N

nicole

Guest
Bonjour Délirium, le forum,


je peux déja te donner ces infos en attendant de comprendre mieux ton pb.

lorsque tu crée ton combobox, tu vas sur la fenêtre des propriétés:

- a rowsource tu marques la plage de cellule de laquelle tu tires tes infos ( aide!B2:B4)
- à colulmncount tu dis combien de colonne de cette plage tu veux afficher ( ic 1 colonne)

- à boundcolumn tu dis quelle valeur tu vas retirer ( celle de la 1ère, 2ème, .. colonne) ici la 1ère puisque tu n'as qu'une colonne ( soit 1)

- à controlsource tu dis où dois être renvoyée cette info ( aide!C3)

pour la dernière partie je comprends pas tb essaie déja cela et dis moi si tu as avancé.

Bonne journée

nicole
 
D

Delirum

Guest
Re salut tous le monde et merci de votre aide.
Nicole est pas loin du résultat que je cherche à obtenir, si ce n'est que dans la plage inscrite dans rowsource contient du texte et dans le cellule inscrite dans controlsource, je voudrais qu'il soit renvoyé un chiffre en fonction du choix fait par l'utilisateur.

Je voudrais que ce chiffre soit inscrit dans une cellule directement, sans fermeture de l'userform (si c'est possible bien sur).

Merci et a+.
 
D

Delirum

Guest
Merci CHti160.
La fonction que tu m'as envoyé correspond à ce que je veux, c'est nickel.
Reste à voir si sa marche une fois intégré à mon userform qui est un peu compliqué, mais je pense que c'est bon.

A+tard
 
D

Delirum

Guest
Petite modif que j'ai apporté à ton code CHti160.

Pour mon application les données des cellules B2 à B4 changes sous l'effet de d'autres userforms.

J'ai don cmodifier ton code comme ceci :


Private Sub ComboBox1_Change()
Dim ws As Worksheet
Select Case ComboBox1.Value
Case Is = Worksheets("aide").Range("B2")
Worksheets("aide").Range("C3") = 1
Case Is = Worksheets("aide").Range("B3")
Worksheets("aide").Range("C3") = 2
Case Is = Worksheets("aide").Range("B4")
Worksheets("aide").Range("C3") = 3
End Select
End Sub

merci et a+.
 

Pièces jointes

  • essai.zip
    10.5 KB · Affichages: 23
  • essai.zip
    10.5 KB · Affichages: 22
  • essai.zip
    10.5 KB · Affichages: 23
L

LaurentTBT

Guest
Bonsoir à tous

Delirium, il y a peut-être ceci, en plus court:
Private Sub ComboBox1_Change()
Worksheets("aide").Range("C3") = combobox1.listindex+1
End Sub

La propriété ListIndex donne le numéro de l'élément sélectionné dans la liste, sachant que cela commence à 0 pour le premier élément, d'où le +1
Mais je ne sais pas si c'est valable pour une combo alimentée à partir d'un RowSource, que je n'utilise jamais personnellement. Je préfère des additem, quitte à faire une boucle pour alimenter la combo, car cela permet par la suite de modifier la liste si nécessaire, et de retirer plus facilement des éléments.

Petite remarque: je ne sais pas si tu permets à l'utilisateur de saisir autre chose dans la combo que les éléments proposés dans la liste, car cela provoquerait une erreur. Tu peux tout simplement ajouter un test auparavant:
Private Sub ComboBox1_Change()
if combobox1.listindex<>-1 then Worksheets("aide").Range("C3") = combobox1.listindex+1
End Sub
En effet, si la saisie dans le combobox n'est pas un élément de la liste, alors ListIndex vaut -1, ce qui est souvent super pratique pour déceler qu'il s'agit d'une nouvelle saisie!

Bonne soirée.
 
D

Delirum

Guest
Ah désolé Laurent, y'a un ptit bug tout de même.

Lorsque j'ouvre mon userform, dans mon combobox il s'affiche un "2".

Autrement sait tu ce qu'il faut rajouter au code que tu m'as donné pour qu’à l'ouverture de l'userform, la valeur en "C3" soit détecter pour que le combobox soit dans la position qui lui correspond. Car je voudrais que si l'utilisateur à déjà fait son choix et qu'il est amené à ré-ouvrir l'userform il ne soit pas obliger de re-selectionner son choix dans le combobox.
 
L

LaurentTBT

Guest
Salut, Delirium

Pour le bug à l'ouverture, je ne vois pas trop. J'ai remis mon code dans ta pièce jointe "essai" de l'autre jour, et je n'ai pas de 2 qui s'affiche. Cela doit venir d'un autre endroit dans ton programme.
Peux-tu joindre le fichier où tu as ce bug?

Sinon, pour avoir présélectionner l'élément dans la combo en fonction du contenu de la cellule lors de l'ouverture de ton USF, c'est la même chose à l'envers, à mettre lors de l'initialisation du USF:
Private Sub UserForm_Initialize()
Me.ComboBox1.ListIndex = Worksheets("aide").Range("C3") - 1
End Sub

Bonne journée.
 
L

LaurentTBT

Guest
Hi hi, comme toujours dans ces cas, c'est un tout petit truc de rien du tout caché quelque part:
regarde ton userform en mode création, c'est-à-dire dans l'éditeur visual basic, tu verras que tu y a mis un 2. Donc le userform tel qu'il est construit a déjà mis la valeur 2 dans la combobox!
Efface-le, et tu n'auras plus de problème.

Ensuite, rajoute dans la feuille de code de ton userform la procédure UserForm1_Initialize que je t'ai mise dans le post de tout à l'heure, et tu auras la bonne initialisation de ton USF en fonction de la valeur précédemment mise dans ta cellule.

Bye.
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz