Menu déroulant avec renvoi

bomber

XLDnaute Nouveau
Bonjour à tous

Débutant en VBA, j'arrive en général à trouver des solutions à mes problèmes mais là, je suis vraiment bloqué.
Je souhaiterai faire une liste de choix comprenant les différents mois de l'année et lorsque je clique sur ce mois la feuille descendrait au mois concerné (scroll down).

Ce serait sympa si quelqu'un pourrait me dépanner...

Merci d'avance :) [file name=Menu_deroulant.zip size=5289]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Menu_deroulant.zip[/file]
 

Pièces jointes

  • Menu_deroulant.zip
    5.2 KB · Affichages: 48

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir bomber, le forum,

Voici un exemple dont tu pourras t'inspirer...

Amicalement
Charly [file name=Bomber.zip size=9177]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Bomber.zip[/file]
 

Pièces jointes

  • Bomber.zip
    11.6 KB · Affichages: 66

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Bomber, bonsoir Charly, bonsoir le forum,

Une approche un peu différente avec ce code :


Private Sub ComboBox1_DropButtonClick() 'au clic sur le triangle de la ComboBox
Dim x As Byte 'déclare la variable x

'la ComboBox1 est configuré ainsi (voir propriétés):
'ComboBox1.ColumnCount=2 (2 colonnes)
'ComboBox1.BoundColumn=2 (la seconde colonne définit la priopriété Value)
'ComboBox1.ColumnWidth=;0 pt (la seconde colonne est masquée)

ComboBox1.Clear 'vide la ComboBox1
x = 0 'définit la variable x

'boucle sur toutes les cellule éditées de la colonne A (à partir de A12)
For Each cel In Range('A12:A' & Range('A65536').End(xlUp).Row)
'condition : si la clellule n'est pas vide
If cel.Value <> '' Then
ComboBox1.AddItem cel.Value 'ajoute la valeur de la cellule
ComboBox1.List(x, 1) = cel.Row 'ajoute le numéro de ligne de la cellule
x = x + 1 'redéfinit la variable x
End If 'fin de la condition
Next cel

End Sub

Private Sub ComboBox1_Change() 'au changement de la ComboBox
If ComboBox1.ListCount = 0 Then Exit Sub 'si la comboBox est vide, sort de la procédure

'active la cellule correspondante
'la propriété BoundColumn renvoie le numéro de ligne
'de la valeur sélectionnée dans la ComboBox1
Cells(ComboBox1.Value, 1).Select 'active la cellule correspondante
End Sub
[file name=Menu_deroulant_V3.zip size=10581]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Menu_deroulant_V3.zip[/file]

Message édité par: Robert, à: 25/10/2005 23:58
 

Pièces jointes

  • Menu_deroulant_V3.zip
    10.3 KB · Affichages: 69
E

Excel_lent

Guest
Salut Bombe et à ceux qui liront cette réponse

Moi aussi je débute et j'essaie de résoudre les problèmes soumis dans les forums.
Je te soumets une autre résolution de ton problème.
Est- elle élégante ? pratique ? @voir !
Si les spécialistes désirent faire des commentaires, je suis preneur.
à+ [file name=Tuto.zip size=6599]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Tuto.zip[/file]
 

Pièces jointes

  • Tuto.zip
    6.4 KB · Affichages: 56

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir bomber, Robert, Excel_lent, le forum,

Tout cela me donne des idées ;)

Bomber, peut-être pourrais-tu mettre ce bout de code :

Option Explicit

Private Sub ComboBox1_Change()
'
Dim Mois As String
Dim FoundCell As Range
'
Mois = ComboBox.Text
Range('A:A').Find (Mois)
If Not FoundCell Is Nothing Then
FoundCell.Select
Else
MsgBox 'Mois non trouvé dans la feuille !'
End If
End Sub

Pssssttt, merci Robert et Excel-lent (pas si lent que ça !)

Amicalement
Charly
 

bomber

XLDnaute Nouveau
Bonjour à tous,

Puisque ce message vous donne des idées je vais vous expliquer ce que je cherche à faire, en fait entre chaque mois se trouvera un tableau qui ne sera pas amené à être modifié, je cherchais à faire une liste déroulante pour atteindre directement le mois concerné. Bien entendu les mois ne vont pas changer, c'est pourquoi je voudrai savoir si c'était possible de rentrer les mois directement dans la macro et non avoir un lien vers le tableau comme j'ai actuellement.
Je ne sais pas si je suis assez clair, j'espère que le fichier joint aidera à comprendre ce que je cherche à faire.

Merci d'avance.

Bomber [file name=menu_deroulant_2.zip size=10428]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/menu_deroulant_2.zip[/file]
 

Pièces jointes

  • menu_deroulant_2.zip
    10.2 KB · Affichages: 40

Charly2

Nous a quittés en 2006
Repose en paix
Bonjour bomber, le fil, le forum,

Oui, c'est possible, je te renvoie ton fichier modifié. Cette solution n'est peut-être pas la meilleure mais elle fonctionne.

Amicalement
Charly [file name=BomberV2.zip size=10729]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/BomberV2.zip[/file]
 

Pièces jointes

  • BomberV2.zip
    10.5 KB · Affichages: 53

bomber

XLDnaute Nouveau
Bonjour Charly,

Tu vas me trouver ennuyeux, voir insistant mais je profite de tes compétences. Voilà, la feuille sur laquelle tu as fait le changement va être amenée a être copiée (et le menu déroulant par la même occasion...) ça veut dire que je devrai copier le code dans ThisWorkbook autant de fois qu'il y a de feuille en remplacant 'Feuil1' dans la macro par le nom des autres feuilles ?

Cordialement

Bomber :whistle:
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir Bomber, le fil, le forum,

Non bomber, je te rassure (quoique...), si tu n'as créé qu'un seul contrôle dans chaque feuille (Combobox), tu peux entrer le code suivant dans ThisWorkbook :

Private Sub Workbook_Open()
'
For i = 1 To Sheets.Count
On Error Resume Next
With Sheets(i).Combobox1
' l'initialisation de la Combobox
End With
On Error Goto 0
Next i
End Sub

C'est peut-être pas le plus beau des codes, mais il fonctionne !

Amicalement
Charly
 

Discussions similaires

F
Réponses
2
Affichages
888
F
S
Réponses
8
Affichages
1 K
Stéphane
S
E
Réponses
1
Affichages
775
K
Réponses
5
Affichages
2 K
SERENA
S
T
Réponses
4
Affichages
2 K
T
S
Réponses
3
Affichages
995
schtrumph
S

Statistiques des forums

Discussions
312 414
Messages
2 088 216
Membres
103 772
dernier inscrit
clemgi