Masquer/afficher un boutton sous conditions multiples

Oianoteur Messages postés 5 Date d'inscription mardi 15 septembre 2015 Statut Membre Dernière intervention 29 septembre 2015 - Modifié par Oianoteur le 29/09/2015 à 17:09
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 30 sept. 2015 à 00:01
Bonjour,
voilà j'ai une boite de dialogues comprenant plusieurs éléments :
- renseignements sur la personne (nom, prénom, adresse .... ....)
- Une case a cocher si elle désire un hébergement
Si c'est le cas deux options sont possibles :
  • Logement en résidence U
  • Logement en Hôtel

Dans ce dernier cas, si la case est cochée, un menu déroulant apparaît permettant de choisir la classe (A, B ou C) de l'hôtel.

- Un bouton OK permettant de valider l'inscription et ainsi saisir les infos dans le classeur excel.


Voila mon problème :
Je voudrais que le bouton Ok ne soit pas dispo si :
- la case a cocher "hébergement?" est cochée et que l'option résidence U ou Hôtel n'est pas cochée
- l'option hôtel et cochée et que la classe A, B, ou C n'est pas choisie

Dans mon code VBA j'avais réalisé un enchaînement successif de If / End If imbriqués les uns dans les autres mais cela ne fonctionne pas.

d'avance merci.

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 sept. 2015 à 18:31
Bonjour,
Qu'est-ce qui t'empêche d'écrire un code selon cette logique :
dim erreur as boolean
If souhait_hebergement = true then
If optionU = false and optionHotel = false then
erreur = true
Else
if optionHotel = true and choixHotel = "" then
erreur = true
-- end if
BoutonOK.visible = not erreur
end if

ou choixHotel est le choix fait dans ta liste déroulante ?
C'est presque enfantin.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Oianoteur Messages postés 5 Date d'inscription mardi 15 septembre 2015 Statut Membre Dernière intervention 29 septembre 2015
29 sept. 2015 à 18:50
Voila ma boite de dialogue :


Et voila mon code VBA pour ce que je recherche (griser ou non le bouton OK :



Mais, j'ai quelques soucis :
Certaines conditions fonctionnent mais pas d'autres :
- Lorsque je coche la case "Hébergement?" le Boutton OK est bien inaccessible.
- Si je le décoche (au cas ou je me serais trompé) le bouton (à n'importe quel moment) OK reste inaccessible
- Si je coche l'option Résidence U alors le bouton OK reste inaccessible
- Si je coche l'option Hotel, le bouton est bien inaccessible car je n'ai pas encore choisie la catégorie de l'hotel
- Si après avoir choisi l'option hotel et sa catégorie, le bouton OK reste inaccessible
0
Oianoteur Messages postés 5 Date d'inscription mardi 15 septembre 2015 Statut Membre Dernière intervention 29 septembre 2015
Modifié par Oianoteur le 29/09/2015 à 20:14
Ah, j'ai compris mon erreur, je mettais tout le code dans le même sub sauf que faut attribuer chaque ligne / ordre au sub correspondant !
Désolé, je débute dans la VBA =)

Par contre il me reste un seul soucis :
Je n'arrive pas a rendre mon bouton OK indisponible quand je clic sur Hôtel et que la valeur du type d'hôtel = ""

j'ai pourtant écrit ce code la dans le sub du bouton option Hôtel :

If Hôtel.Value = True And TypeHôtel.Value = "" Then
OK.Enabled = False
End If
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 30/09/2015 à 00:32
Il faut que tu désélectionnes tout dans ta listbox, au click sur ton bouton Hébergement ( TypeHotel.listindex = -1)
Car si tu ne le fais pas, la dernière sélection reste bien évidemment là. Le fait de rendre ta listbox invisible ne désélectionne pas ce qui y est déjà sélectionné.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Rejoignez-nous