Menu déroulant en cascade

Accueil – Le CFO masqué Forums VBA Menu déroulant en cascade

  • Ce sujet contient 9 réponses, 2 participants et a été mis à jour pour la dernière fois par Lionel, le il y a 3 années et 8 mois.
10 sujets de 1 à 10 (sur un total de 10)
  • Auteur
    Articles
  • #72366
    Pimpin
    Participant

    Bonsoir,

    Je souhaite créer sur mon formulaire un menu déroulant en cascade :
    – Immeuble
    – Etage / Côté
    – Chambre.
    La textbox10 affiche l’adresse concaténée de la chambre.
    ex: la chambre 208 qui se trouve au 2ème étage côté pair de l’immeuble 3 (IMMEUBLE3 2P 208).
    Merci pour votre aide.

    Attachments:
    You must be logged in to view attached files.
    #72376
    Lionel
    Participant

    Bonjour Pimpin,
    Il est difficile de se rendre compte où tu es arrivé. Surtout avec la Textbox10. Un petit printscreen rendrait la chose plus claire.
    Pour tes listes en cascade, je te propose ceci (voir l’onglet LISTE).
    Pour le code ceci en ayant créé un UserForm1 :

    Dim f
    Private Sub UserForm_Initialize()
      Set f = Sheets("LISTE")
      Set d = CreateObject("Scripting.Dictionary")
      For Each c In f.Range("A2:A" & f.[A65000].End(xlUp).Row)
        d(c.Value) = ""
      Next c
      Me.ComboBox1.List = d.keys
    End Sub
    Private Sub ComboBox1_Change()
      Set d = CreateObject("Scripting.Dictionary")
      For Each c In f.Range("A2:A" & f.[A65000].End(xlUp).Row)
        If c.Value = Me.ComboBox1 Then d(c.Offset(, 1).Value) = ""
      Next c
      Me.ComboBox2.List = d.keys
      Me.ComboBox2.ListIndex = -1
      Me.ComboBox3.ListIndex = -1
    End Sub
    Private Sub ComboBox2_Change()
      Set d = CreateObject("Scripting.Dictionary")
        For Each c In f.Range("A2:A" & f.[A65000].End(xlUp).Row)
        If c.Value = Me.ComboBox1 And c.Offset(, 1).Value = Me.ComboBox2 Then d(c.Offset(, 2).Value) = ""
       Next c
       Me.ComboBox3.List = d.keys
       Me.ComboBox3.ListIndex = -1
    End Sub
    Attachments:
    You must be logged in to view attached files.
    #72503
    Pimpin
    Participant

    Salut QUESTVBA,

    Je te remercie mais ça a l’air un peu compliqué pour moi tout ça lol
    Sinon comment je te fais un printscreen j’ai un PC portable et je n’ai pas de touche qui le fait.
    J’ai remarqué que tu as mis devant Private Sub, Dim f seulement. Il ne manque pas Dim f as quelque chose ?
    Sinon j’ai essayé d’envoyer mon Userform mais j’ai été bloqué.
    comment je peux faire pour te l’envoyer ?

    #72548
    Pimpin
    Participant

    Merci mon ami,

    J’ai pu trouver la formule pour afficher l’adresse concaténée que je voulais.
    Sinon j’aimerais savoir comment faire pour afficher un tableau comme EXCEL en VBA.
    Actuellement je remplie un formulaire via un Userform mais j’aimerais afficher un tableau à l’écran
    comme EXCEL. En clair, un tableau est déjà dessiné à l’écran, comme une facture simple avec des colonnes :
    Référence, Désignation, Prix, Total, etc…
    Peux-tu m’aider stp

    #73683
    Lionel
    Participant

    Salut Pimpin,
    Voici un petit fichier avec quelques trucs (beaucoup en formule et sans VBA). Tu as plusieurs onglets :
    . BD : c’est la base de données permettant le lien entre immeuble, étage et chambre. J’y ai inclus le prix.
    . Visualisation : permet de voir – mois par mois – les chambres réservées
    . Réservation : c’est la feuille où tout va s’enregistrer. On y touche pas.
    . Encodage : c’est là que tu encodes tes données (tu peux y donner plus de relief pour en faire un vrai formulaire). En fonction des données, il t’indiques si c’est valide ou non comme réservation : réagit sur la période et la chambre.

    Ensuite, tu valides la réservation en appuyant sur le bouton Go! qui a ce petit code vba :

    Sub GoReservation()
    Dim Table(16)
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    DerniereLigne = Sheets("Réservation").Range("A1").End(xlDown).Row + 1
    Sheets("Réservation").Unprotect ""
    With Sheets("Encodage")
        .Activate
        If .Range("A2").Value = "NOK" Or IsNumeric(.Range("G5").Value) = False _
            Then MsgBox "Réservation non valide": _
            Application.ScreenUpdating = True: _
            Application.Calculate: _
            Application.Calculation = xlCalculationAutomatic: _
            Exit Sub
        
        Table(1) = .Range("A5").Value
        Table(2) = .Range("C5").Value
        Table(3) = .Range("E5").Value
        Table(4) = .Range("A8").Value
        Table(5) = .Range("C8").Value
        
        Table(6) = .Range("E8").Value
        Table(7) = .Range("G8").Value
        Table(8) = .Range("A12").Value
        Table(9) = .Range("C12").Value
        Table(10) = .Range("E12").Value
        Table(11) = .Range("A15").Value
        Table(12) = .Range("C15").Value
        Table(13) = .Range("E15").Value
        Table(14) = .Range("A18").Value
        Table(15) = .Range("C18").Value
        Table(16) = .Range("E18").Value
    End With
        
    With Sheets("Réservation")
        .Activate
            .Range("A" & DerniereLigne).Value = Table(1)
            .Range("B" & DerniereLigne).Value = Table(2)
            .Range("C" & DerniereLigne).Value = Table(3)
            .Range("E" & DerniereLigne).Value = Table(4)
            .Range("F" & DerniereLigne).Value = Table(5)
            .Range("G" & DerniereLigne).Value = Table(6)
            .Range("D" & DerniereLigne).Value = Table(7)
            .Range("H" & DerniereLigne).Value = Table(8)
            .Range("I" & DerniereLigne).Value = Table(9)
            .Range("J" & DerniereLigne).Value = Table(10)
            .Range("K" & DerniereLigne).Value = Table(11)
            .Range("L" & DerniereLigne).Value = Table(12)
            .Range("M" & DerniereLigne).Value = Table(13)
            .Range("N" & DerniereLigne).Value = Table(14)
            .Range("O" & DerniereLigne).Value = Table(15)
            .Range("P" & DerniereLigne).Value = Table(16)
    End With
    
    Sheets("Réservation").Protect ""
    Application.ScreenUpdating = True
    Application.Calculate
    Application.Calculation = xlCalculationAutomatic
    Sheets("Encodage").Activate
    MsgBox "Réservation encodée."
    End Sub
    Attachments:
    You must be logged in to view attached files.
    #73792
    Pimpin
    Participant

    Salut mon ami,

    J’ai téléchargé ton fichier mais ça me donne une page EXCEL vide.

    Merci pour ton aide.

    #74481
    Lionel
    Participant

    Pimpin,
    Je pense que je ne peux pas transférer ce genre de fichiers via cette plateforme.
    Suis ce lien : Hôtels

    #74509
    Lionel
    Participant

    Pimpin, tu aurais une adresse mail pour que je te transfères le fichier ?

    #74751
    Pimpin
    Participant

    Oui bien sûr, rony97100@yahoo.fr

    #75063
    Lionel
    Participant

    Voilà, c’est via WeTransfer.

10 sujets de 1 à 10 (sur un total de 10)
  • Vous devez être connecté pour répondre à ce sujet.