vb excel - liste deroulante

vb excel - liste deroulante - VB/VBA/VBS - Programmation

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.

Reply

Marsh Posté le 22-06-2005 à 15:43:49   

Reply

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)  
  If Target.Address = "$A$36" _  
  Or Target.Address = "$B$36" _  
  Then Target.Cells(2,1).Select
End Sub


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.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

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?

Reply

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.


Message édité par AlainTech le 23-06-2005 à 15:03:49

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

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 ;)

Reply

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


Message édité par papou_net le 23-06-2005 à 18:17:49
Reply

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 ;)

Reply

Marsh Posté le 24-06-2005 à 14:32:19    

Pas de fichier joint...


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

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..

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed