vb excel - liste deroulante - VB/VBA/VBS - Programmation
Marsh Posté le 23-06-2005 à 06:16:33
Première remarque. Pas besoin d'utiliser Sendkeys alors que tu as tout ce qu'il te faut dans VBA:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) |
Ceci dit, tiens-tu absolument a faire tes listes dans une feuille?
Je pense que c'est plus "pro" en créant un Form et en mettant tes listes dedans.
Je dis ça sans avoir regardé ton fichier.
Si j'ai le temps aujourd'hui, j'y jette un oeil.
Marsh Posté le 23-06-2005 à 09:09:52
merci pour les infos. je suis d'accord avec toi sur le fait qu'il ne faudrait pas mettre les listes dans la feuille, mais a vrai dire je n'ai pas compris ce qu'etait un "form". c'est un peu comme un tableau?
Marsh Posté le 23-06-2005 à 15:03:01
Non, c'est plutôt comme un Msgbox que tu configures avec tout ce que tu veux dessus (Boutons, Labels, Textbox, Listes, Boutons radio, cases à cocher...)
Tu peux en modifier la taille et la présentation.
Bref, très souple et ça donne un aspect "pro" à ton application.
Pour en créer un, tu vas en VBA et, dans le menu Insert(ion), tu choisis UserForm.
Marsh Posté le 23-06-2005 à 16:29:20
A ta place je ferai une boucle. Je ne sais pas trop non plus comment boulcer sur les lignes sans utiliser la méthode "offset" à deux arguments de l'objet "Range". Elle déplace la cellule courante selon les deux arguments, le premier pour le nombre de lignes et le second pour les colonnes.
Si tu es sur B33 et que tu fais Offset(3,3) tu seras sur E36.
J'ai pas matté de code non plus, je suis pas un pro... j'essaye d'aider
Marsh Posté le 23-06-2005 à 18:16:55
salut
pourquoi pas faire un userform avec deux combobox et du code du genre
Private Sub ComboBox1_Change()
'select case
If ComboBox1.Value = "securite" Then ComboBox2.RowSource = "a13:a22"
If ComboBox1.Value = "dossier" Then ComboBox2.RowSource = "b13:b17"
If ComboBox1.Value = "information" Then ComboBox2.RowSource = "c13:c17"
If ComboBox1.Value = "traitement" Then ComboBox2.RowSource = "d13:d18"
If ComboBox1.Value = "information" Then ComboBox2.RowSource = "c13:c17"
End Sub
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "a2:a10"
End Sub
Marsh Posté le 24-06-2005 à 11:56:52
merci a tous pour votre aide;
j'ai fini par reussi a faire ce que je voulais avec du VB + donnees / validation / liste.
mais je vais quand meme essayer vos methodes avec le userform histoire d'approfondir un peu plus mes (petites) connaissances en VB.
si quelqu'un veut voir le resultat pour faire la meme chose :
http://cjoint.com/?gymfBvbZAc
encore merci a tous, et bonne journee
Marsh Posté le 24-06-2005 à 14:32:19
Pas de fichier joint...
Marsh Posté le 27-06-2005 à 09:28:13
oui effectivement il doit y avoir un petit souci. si tu es interesse, je peux te l'envoyer par mail....ecris moi, mon adresse est sur le lien..
Marsh Posté le 22-06-2005 à 15:43:49
bonjour a tous,
je debute en vb et j'ai besoin dans un fichier excel de creer des listes deroulantes. je m'explique :
colonne A : je choisie un type de pb (ex : securite, information...)
colonne B : en fonction de ce qui est selectionne dans la colonne A je dois choisir un sous-type (ex : pour securite on aura vol, intrusion... et pour inforamtion on aura defaut de transmission, mauvaise orientation...)
je suis arrivée a faire mes listes deroulantes en utilisant donnees / validation /liste et avec le code suivant je recupere l'interieur de mes listes:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$36" Then
[B36] = Range([A36]).Item(1)
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$36" _
Or Target.Address = "$B$36" _
Then Application.SendKeys "%{down}"
End Sub
ca marche super bien pour la ligne 36, mais le probleme c'est que j'ai un certain nombre de ligne (environ 100 et ce pour chaque service cad 4) a rentrer et que je n'ai pas envie de me taper tout le code.
je ne sais pas comment declarer le n° de la ligne en variable??
ou peut etre qu'une boucle pourrait fonctionner?
si quelqu'un veut voir mon fichier : http://cjoint.com/?gwoFzbbgOg
merci d'avance pour votre aide.