[Catégorie modifiée VB6 --> VBA] évènement dans UserForm dans Excel [Résolu]

biopikachu 7 Messages postés mercredi 27 septembre 2006Date d'inscription 19 août 2010 Dernière intervention - 16 août 2010 à 13:25 - Dernière réponse : cs_Le Pivert 5356 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention
- 19 août 2010 à 16:57
bonjour,

Après avoir parcouru plein de forums, je me résous à poster car aucune des solutions proposées n'a fonctionné...

Voici le problème: j'ai un UserForm avec des boutons radio. Je voudrais que quand on répond "non" ou "oui" à une des questions, cela désactive certains groupes de boutons.
J'ai fait plusieurs essais, mais au moment où je clique, rien ne se passe, c'est comme si l'évènement "click" n'était pas détecté.

Ce n'est pas mon premier formulaire, mais comme mes connaissances en vba sont limitées, j'ai besoin d'aide!!

Voici mon code:
Sub encodage()
Load FormFEI
FormFEI.Show

'*sélection de la cellule A1:
Range("A1").Select

'*renvoi du pointeur de cellule sur la dernière cellule occupée:
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select

'* réponse à la question 1 dont la variable associée est NUMFICHE sur la feuille xls
ActiveCell.Value = FormFEI.NUMFICHE

'*réponse à la question 5 dont la variable associée est EIG sur la feuille xls
ActiveCell.Offset(0, 1).Range("A1").Select
If FormFEI.EIGoui.Value True Then EIG "OUI"
If FormFEI.EIGnon.Value True Then EIG "NON"
ActiveCell.Value = EIG

'*réponse à la question 6 dont la variable associée est EIS sur la feuille xls
ActiveCell.Offset(0, 1).Range("A1").Select
If FormFEI.EISoui.Value = True Then Call grise_soins((FormFEI), (att3), (Frame1))
If FormFEI.EISoui.Value True Then EIS "OUI"
If FormFEI.EISnon.Value True Then EIS "NON"
ActiveCell.Value = EIS

'* La boîte de dialogue est déchargée de la mémoire et disparaît
Unload FormFEI
End Sub

Sub grise_soins(FormFEI As UserForm, att3 As Frame, Frame1 As Frame)

Dim Ctrl As Control
For Each Ctrl In att3.Controls
             If Ctrl.Name = EISoui Then
             If EISoui.OptionButton True Then GroupName.PATIENT.Enable False
            
End If
Next
End Sub

Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
cs_Le Pivert 5356 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention - 18 août 2010 à 18:09
3
Merci
Tu prends un classeur tout neuf.
Un UserForm dans lequel tu mets 2 Frames que tu nommes :FrameEIG et FrameEIS
Dans chacune de ces 2 Frames tu mets 2 OptionButton nommé:
Dans la FrameEIG: :EIGnon et EIGoui
Dans la FrameEIS :EISnon et EISoui
Tu cliques sur EISnon et mets ce code:
FrameEIG.Visible = False
Tu cliques sur EISoui et mets ce code:
FrameEIG.Visible = True
Ensuite tu compiles et cliques sur EISnon
la FrameEIG devient invisible
Tu cliques sur EISoui et elle redevient visible
Cela devrait fonctionner, c'est tout simple!!!!
Le Pivert

Merci cs_Le Pivert 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_Le Pivert
cs_Le Pivert 5356 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention - 16 août 2010 à 13:42
0
Merci
Bonjour,
Je ne me suis pas penché sur le code, mais si vous voulez que l'OptionButton soit True il faut mettre le code suivant:

OptionButton1.Value = True
@+
Le Pivert
Commenter la réponse de cs_Le Pivert
biopikachu 7 Messages postés mercredi 27 septembre 2006Date d'inscription 19 août 2010 Dernière intervention - 16 août 2010 à 14:21
0
Merci
J'ai oublié de préciser que EISoui et EISnon sont mes OptionButton.

Donc oui, j'ai déjà mis cette formule EISoui.Value = True
Commenter la réponse de biopikachu
biopikachu 7 Messages postés mercredi 27 septembre 2006Date d'inscription 19 août 2010 Dernière intervention - 16 août 2010 à 16:07
0
Merci
mais ca ne marche pas...
Commenter la réponse de biopikachu
cs_Le Pivert 5356 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention - 16 août 2010 à 19:09
0
Merci
Je ne comprends pas très bien. J'ai fait ceci qui fonctionne, mais je ne sais pas si c'est cela que vous recherchez:

Private Sub CommandButton1_Click()
ActiveCell.Offset(0, 1).Range("A1").Select
If EIGoui.Value True Then EIG "OUI"
If EIGnon.Value True Then EIG "NON"
ActiveCell.Value = EIG
End Sub
Private Sub EIGnon_Click()
ActiveCell.Offset(0, 1).Range("A1").Select
If EIGnon.Value True Then EIG "NON"
ActiveCell.Value = EIG
End Sub
Private Sub EIGoui_Click()
ActiveCell.Offset(0, 1).Range("A1").Select
If EIGoui.Value True Then EIG "OUI"
ActiveCell.Value = EIG
End Sub


J'ai mis cela dans un bouton par commodité.
@+
Le Pivert
Commenter la réponse de cs_Le Pivert
biopikachu 7 Messages postés mercredi 27 septembre 2006Date d'inscription 19 août 2010 Dernière intervention - 17 août 2010 à 17:55
0
Merci
Merci Pivert pour ta réponse, mais en fait, ce n'est pas exactement ce que je cherche.

EIGoui/EIGnon et EISoui/EISnon sont des OptionButton. Je voudrais que quand par exemple EISoui est coché, d'autres OptionButton se désactivent immédiatement, pas avec l'utilisation d'un Bouton.

Je veux que l'évènement se produise pendant que l'utilisateur est en train de saisir le formulaire. J'ai vu un fichier avec ca mais je n'ai pas réussi à déchiffrer le code trop long et trop complexe pour moi.
Commenter la réponse de biopikachu
cs_Le Pivert 5356 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention - 17 août 2010 à 18:40
0
Merci
Mettre ce code dans la Feuille où l'on saisit les données.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 On Error Resume Next
 If Target.Value = "OUI" Then
         UserForm1.EIGoui.Value = True
  UserForm1.EIGnon.Value = False
   End If
If Target.Value = "NON" Then
         UserForm1.EIGoui.Value = False
  UserForm1.EIGnon.Value = True
   End If
End Sub

On saisit "OUI" ou "NON" et l'on clique dessus et l'optionButton correspondant s'active et désactive les autres. Chaque fois que l'on clique sur les saisies les optionButton suivent
Le Pivert
Commenter la réponse de cs_Le Pivert
biopikachu 7 Messages postés mercredi 27 septembre 2006Date d'inscription 19 août 2010 Dernière intervention - 18 août 2010 à 10:17
0
Merci
Merci Pivert, j'ai essayé mais ca ne marche pas...

Je ne suis pas sûre que tu voie vraiment ce que je veux faire, je vais tenter d'être plus précise, peut être que ca permettra également à d'autres de nous aider à trouver la solution.

Mon Userform s'appelle FormFEI. Il comporte une série de questions, dont l'une est:
"S'agit t'il d'un évènement indésirable lié aux soins ?"
Deux réponses possibles à cette question dans des OptionButton, oui et non, nommés chacun EISoui et EISnon.

Pour ce que je veux faire, j'envisage 2 stratégies.
- Soit quand on clique sur EISoui, je voudrais qu'apparaisse immédiatement un nouveau groupe de boutons radio
- Soit quand on clique sur EISnon, je voudrais qu'un groupe de boutons soit désactivé.

P.S: et bien sûr je cherche à comprendre le code, je ne cherche pas bêtement une solution toute faite !!!


Merci d'avance pour votre aide.
Commenter la réponse de biopikachu
cs_Le Pivert 5356 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention - 18 août 2010 à 11:23
0
Merci
Je vois un truc tout simple:
2 Frame nommées:
FrameEIG et FrameEIS
Dans ces 2 Frames j'ai mis 2 OptionButton pour l'exemple:
FrameEIG :EIGnon et EIGoui
FrameEIS :EISnon et EISoui
Voici le code tout simple
Private Sub EISnon_Click()
FrameEIG.Visible = False
End Sub
Private Sub EISoui_Click()
FrameEIG.Visible = True
End Sub

On peut mettre aussi
FrameEIG.Enabled = False qui reste visible mais inactive
Si tu veux mettre un OptionButton coché il suffit d'ajouter
EIGoui.Value = True dans ton code
J'espère avoir compris et avoir été assez explicite
@+
Le Pivert
Commenter la réponse de cs_Le Pivert
biopikachu 7 Messages postés mercredi 27 septembre 2006Date d'inscription 19 août 2010 Dernière intervention - 18 août 2010 à 17:54
0
Merci
bonsoir Pivert, et merci de ta patience (et du temps que tu consacres à m'aider !)

J'ai testé (je me suis même créé un petit formulaire simple pour les tests), mais au moment où je clique, rien ne se passe...

Est ce que j'ai oublié une option ou un paramètre quelque part? Parce que ca m'a fait pareil avec toutes les fonctions que j'ai testé (Onfocus etc...)
Commenter la réponse de biopikachu
biopikachu 7 Messages postés mercredi 27 septembre 2006Date d'inscription 19 août 2010 Dernière intervention - 19 août 2010 à 14:13
0
Merci
MIRACLE, CA MARCHE !!! Merci encore pour tout Pivert...

Par contre, si ma joie est contenue (sissi!), ca m'ennuie mais je n'ai pas trouvé pourquoi ca ne fonctionnait pas avant.
-parce que je tapais le code dans "module1" sous VBA?
-parce que l'ordre de création des cadres/boutons n'était pas bon?

bref, le principal c'est que ca marche, maintenant il me reste à trouver pourquoi lol !!
Commenter la réponse de biopikachu
cs_Le Pivert 5356 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 21 septembre 2018 Dernière intervention - 19 août 2010 à 16:57
0
Merci
Si tu avez mis cela dans un module il faut appeler ton controle avec le nom de l'UserForm devant.
Mais ton ton cas cela n'est pas possible car les OptionButton sont activés depuis ton UserForm, donc le code est dans l'UserForm
Si tu veux mettre des OptionButton sur ta feuille le code se fera depuis ta feuille.
@+
Le Pivert
Commenter la réponse de cs_Le Pivert

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.