XL 2016 Listes déroulantes en cascade avec combobox

KTM

XLDnaute Impliqué
Bonsoir chers tous
Je voudrais renseigner ma page de garde via un formulaire.
Mais j'ai un soucis avec mes listes qui alimentent mes combobox.
Pour chaque année choisie dans mon combobox1 je voudrais avoir en combobox2 les mois de l'année.
MERCI de m'épauler.
 

Pièces jointes

  • Class1.xlsm
    27.1 KB · Affichages: 10

patricktoulon

XLDnaute Barbatruc
bonjour

1° pourquoi rowsource pour la combo1

perso je ne vois pas l'interet d'utiliser une plage intermédiaire
on remplie directement la combo2
VB:
Private Sub ComboBox1_Change() 'année
  Dim i As Byte
  If Me.ComboBox1.ListIndex = -1 Then Exit Sub
  Sheets("B").Range("C1") = ComboBox1.Value
    For i = 1 To 12
    Me.ComboBox2.AddItem Format(CDate("01/" & i & "/" & ComboBox1), "mmm-yy")
  Next
End Sub


le msgbox "non renseigné" pour quoi utiliser le wscript.shell qui est une librairie externe?


pourquoi remplir les première cellules avec l'afterupdate des textbox
et finir par valider avec le bouton pour remplir la date en B5
autant tout faire au bouton non?

donc on reprend tout
VB:
Option Explicit
Dim Loc As Long
Private Sub ComboBox1_Change()    'année
    Dim i As Byte
    If Me.ComboBox1.ListIndex = -1 Then Exit Sub
    Sheets("B").Range("C1") = ComboBox1.Value
    For i = 1 To 12
        Me.ComboBox2.AddItem Format(CDate("01/" & i & "/" & ComboBox1), "mmm-yy")
    Next
End Sub

Private Sub UserForm_Initialize()
    Sheets("B").Range("c1") = [A!B4].Value
    TextBox3.Text = Sheets("A").Range("B1").Value
    TextBox1.Text = Sheets("A").Range("B2")
    ComboBox1.List = [liste1].Value
End Sub

Private Sub Par_Click()    'enregistrer
    If Me.TextBox1 = "" Or TextBox3 = "" Or ComboBox1 = "" Or ComboBox2 = "" Then MsgBox "Champs non Renseignés ", vbOK + 64: Exit Sub
    If MsgBox(" Changer les Parametres du  Fichier ? ", vbYesNo + 32) = vbYes Then
        Sheets("A").Range("B1") = Me.TextBox3
        Sheets("A").Range("B2") = Me.TextBox1
        Sheets("A").Range("B3") = "DISTRICT SANITAIRE  " & Me.TextBox1
        Sheets("A").Range("B5") = DateSerial(Me.ComboBox1, Me.ComboBox2.ListIndex + 1, 1)
        Unload Parametrer
    End If
End Sub

a+;)
 

Discussions similaires

Réponses
6
Affichages
391

Statistiques des forums

Discussions
312 070
Messages
2 085 045
Membres
102 766
dernier inscrit
Awiix