Accueil – Le CFO masqué › Forums › VBA › Menu déroulant en cascade
Mots-clés : VBA : Menu déroulant en cascade
- This topic has 9 réponses, 2 participants, and was last updated il y a 4 years et 4 months by Lionel.
-
AuteurArticles
-
27 juillet 2020 à 16 h 23 min #72366PimpinParticipant
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.28 juillet 2020 à 6 h 02 min #72376LionelParticipantBonjour 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.28 juillet 2020 à 15 h 15 min #72503PimpinParticipantSalut 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 ?29 juillet 2020 à 1 h 22 min #72548PimpinParticipantMerci 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 stp3 août 2020 à 5 h 11 min #73683LionelParticipantSalut 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.3 août 2020 à 12 h 19 min #73792PimpinParticipantSalut mon ami,
J’ai téléchargé ton fichier mais ça me donne une page EXCEL vide.
Merci pour ton aide.
5 août 2020 à 10 h 23 min #74481LionelParticipantPimpin,
Je pense que je ne peux pas transférer ce genre de fichiers via cette plateforme.
Suis ce lien : Hôtels5 août 2020 à 10 h 35 min #74509LionelParticipantPimpin, tu aurais une adresse mail pour que je te transfères le fichier ?
5 août 2020 à 14 h 17 min #74751PimpinParticipantOui bien sûr, rony97100@yahoo.fr
6 août 2020 à 11 h 53 min #75063LionelParticipantVoilà, c’est via WeTransfer.
-
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.