Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

lebast

XLDnaute Junior
Bonjour, à tous

je suis en train de réaliser un formulaire par userform avec le langage VBA.
J'avance pas à pas car je débute dans le VBA.

En ayant déjà fait appel à de l'aide sur le forum, je reviens vers vous car après de multiples recherche je n'arrive pas à faire ce que je recherche.

Voila mon problème :

dans mon formulaire j'ai créé une une première liste déroulante qui permet de sélectionner "me groupe siège des liaisons lors d'un accident de travail".

Maintenant je souhaiterais réalisé une autre liste déroulante qui soit conditionnelle en fonction du groupe siège des liaisons.

je m'explique, par exemple, si je sélectionne le groupe siège des liaisons "Tête" je souhaiterais qu'il ne s'affiche seulement les parties de la tête susceptibles d'être touché (Cuir chevelu, oreille, oeil, dents, ...)

si je sélectionne Membre supérieur (épaule, bras, poignet, ...)

j'ai commencé quelque chose avec une condition IF Condition THEN Action mais sa ne marche pas.

Quelqu'un aurait-il un solution ou un aide à m'apporter ?

je ne demande pas à ce que l'on me fasse le travail mais juste que l'on me mette sur la bonne piste car je n'arrive pas à trouver ce que je veux.

je vous joint mon fichier et vous remercie par avance.

Cordialement
 

Pièces jointes

  • essais macro AT 2 - Copie2.xlsm
    24.6 KB · Affichages: 207

Robert

XLDnaute Barbatruc
Repose en paix
Re : Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

Bonjour Lebast, bonjour le forum,

J'ai cré une petite base de données dans l'onglet BD qui permet d'alimenter dynamiquement les comboboxes. Complète-la... Tu pourras ajouter/supprimer des items dans la base ça sera automatiquement pris en compte.
Le code :
Code:
Option Explicit

Private Sub Userform_initialize()
With Sheets("BD") 'prend en compte l'onglet "BD"
    'alimentation dynamique des comboboxes
    ComboBox2.List = .Range("A2:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
    ComboBox1.List = .Range("A2:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
    ComboBox3.List = .Range("B2:B" & .Cells(Application.Rows.Count, 2).End(xlUp).Row).Value
    ComboBox4.List = .Range("C2:C" & .Cells(Application.Rows.Count, 3).End(xlUp).Row).Value
    ComboBox5.List = .Range("D2:D" & .Cells(Application.Rows.Count, 4).End(xlUp).Row).Value
    ComboBox6.List = .Range("F2:F" & .Cells(Application.Rows.Count, 6).End(xlUp).Row).Value
End With 'fin de la prise en compte de l'onglet "BD"
End Sub


Private Sub ComboBox6_Change()
Dim pl As Range 'déclare la variable pl (PLage)
Dim col As Byte 'déclare la variable col (COLonne)
Me.ComboBox7.Clear 'vide la ComboBox7
With Sheets("BD") 'prend en compte l'onglet "BD"
    Set pl = .Range("G1:" & .Cells(1, Application.Columns.Count).End(xlToLeft).Address(0, 0)) 'définit dynamiquemment la plage pl
    If Me.ComboBox6.Value <> "" Then col = pl.Find(CStr(Me.ComboBox6.ListIndex), , xlValues, xlWhole).Column 'si la ComboBox6 est renseignée, récupère le numéro de colonne correspondant
    Me.ComboBox7.List = .Range(.Cells(2, col), .Cells(Application.Rows.Count, col).End(xlUp)).Value 'alimente dynamiquement la ComboBox7
End With 'fin de la prise en compte de l'onglet "BD"
End Sub
Le fichier :
 

Pièces jointes

  • Lebast_v01.xls
    66.5 KB · Affichages: 381

lebast

XLDnaute Junior
Re : Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

merci beaucoup ROBERT

je me douté bien qu'il fallait créé une base de données mais je ne savais pas comment l’interroger !
J'apprends pas à pas ! et je vous remercie de me permettre de progresser.

Cependant quand je clic sur le bouton "nouvelle saisie" mon formulaire ne s'ouvre plus ! est ce normal ?

Pouvez vous me dire comment arranger cela?

encore merci en tout cas

Cordialement
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

Bonjour Lebast, bonjour le forum,

Comme je n'ai pas ta version d'excel, j'utilise un convertisseur et ça supprime les macros affectées aux boutons... La version 2 est corrigée.
 

Pièces jointes

  • Lebast_v02.xls
    67.5 KB · Affichages: 322

lebast

XLDnaute Junior
Re : Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

Merci beaucoup Robert,

Tout marche trés bien !
un grand merci et salut à vos connaissances.
je continue mon projet petit à petit car je découvre beaucoup de chose d'un coup.

à bientôt
 

fanfan38

XLDnaute Barbatruc
Re : Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

Bonjour,

J'ai fait quelques changements...(Dtpicker pour la date...et surtout la feuille 3 je l'ai renommée données (elle peut être masquée)
Dans cette feuille j'ai mis les sources des différents combobox. Ces sources je les ai nommées... Donc dans propriété de chaque combobox on peut voire rowsource est le nom de la colonne affectée
pour le combobox6 j'ai utilisé les colonnes E et F que j'ai nommée "partie"
en fait la colonne F est le nom de la source correspondante...
exemple inf pour membre inférieure....
Si vous cliquez sur formule, gestionnaire de noms vous constatez que cela correspond à la colonne L...
J'espère que vous m'avez compris car je n'ai fait que tete, inf et sup... à vous de faire les autres...

a+ François
 

Pièces jointes

  • macro AT 2 - Copie2.xlsm
    26.6 KB · Affichages: 236

lebast

XLDnaute Junior
Re : Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

Merci francois, encore du super travail que les utilisateurs du forum font.
J'ai pris note de vos remarques et modifications.
Robert avait déjà fait du super travail et je vais donc garder sa base cependant je vais utiliser vos modifications et remarques pour l'améliorer ! :)

cependant pour quoi je n'arrive pas à installer l'outils DTpicker ?
le savez vous ?

en attente de votre réponse

cordialement
 

fanfan38

XLDnaute Barbatruc
Re : Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

Bonjour
Quand tu es en mode développeur, que tu sélectionnes un userform une boite à outils apparait... clic droit sur la boite à outils et choisis contrôle supplémentaire. Sélectionne Microsoft date and time...

A+ François
 

lebast

XLDnaute Junior
Re : Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

Bonjour tout le monde,

Tout d'abord merci pour vos réponse.

je poursuis toujours mon projet et me voila confronter à de nouveaux problèmes malgré toute mes recherches.

Je souhaiterais à l'aide de mon second bouton sur la FEUIL1faire apparaitre une fenêtre qui me permettais de saisir la date de fin d'arrêt de travail et de sélectionner dans une liste déroulante (alimenter dynamiquement par la base de données déjà créer par l'aide du premier formulaire) le nom de la personne concerner. l'idée voudrait qu'une fois ses deux information sélectionner la date vienne se reporter dans la colonne "Date fin AT" sur la ligne correspondant au nom.

J'ai essayé de créer quelques choses dans l'Userform 2 mais malgré tout mes efforts je n'arrive pas à avoir le rendu souhaité.

je ne comprend pas pourquoi la liste déroulante ne s'alimente pas dynamiquement ?

et puis, comment dois-je faire pour que la date sélectionner s'insère dans la colonne "Date fin AT" en fonction du nom choisi précédemment dans la liste déroulante?

J'espère qu vous pourrez offrir des réponses à mes questions.

j'ai à cœur de réussir ce projet et de m'améliorer en VBA.

c'est promis je vais acheter "la VBA pour les nuls !"

je vous remercie par avance,

Cordialement,

Bastien
 

Pièces jointes

  • Projet RH Bastien.xls
    84 KB · Affichages: 133

fanfan38

XLDnaute Barbatruc
Re : Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

Bonjour
Private Sub UserForm_Initialize() et non Private Sub UserForm2_Initialize()...

J'espère avoir répondu à ta question...

A+ François
 

Pièces jointes

  • Copie de Projet RH Bastien.xls
    83 KB · Affichages: 150

lebast

XLDnaute Junior
Re : Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

encore une fois cela marche très bien ! je vous remercie encore pour votre aide et je continue d'apprendre.

je continue mon projet.

à bientôt pour d'éventuelles question ;)

merci ..
 

lebast

XLDnaute Junior
Re : Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

Bonjour tout le monde !

je reviens vers vous car j'ai un problème que je ne m'explique pas!

en effet tout marché bien vendredi et aujourd'hui cela ne marche plus.

j'ai un problème lorsque je veux ouvrir mon formulaire "userform2" via le bouton "saisis fin AT". c'est alors qu'un message d'erreur s'affiche.

je ne comprend pas pourquoi alors que tout marché très bien !

Si quelqu'un avait une idée et pourrais m'aider ce serait extrêmement gentil.

je vous remercie d'avance,
 

Pièces jointes

  • Projet GRH Bastien xx.xls
    150 KB · Affichages: 189

fanfan38

XLDnaute Barbatruc
Re : Aide pour liste déroulante conditionnelle dans un formulaire userform avec VBA

Bonjour
Je n'ai pas pût te répondre avant ayant moi aussi, eu des problèmes d'ordi...
Ton problème vient du code l'userform2
Private Sub UserForm_Initialize()
'With Sheets("Feuil1") alors que tu n'as pas de feuille qui s'appelle feuil1...

A+ François
 

Discussions similaires

Statistiques des forums

Discussions
312 291
Messages
2 086 851
Membres
103 400
dernier inscrit
MINOU WILL