tester les optionbuttons dans une userform

Le
Circé
Bonjour à tous !

J'ai une userform avec un certain nombre de frames comprenant chacun 4
optionbuttons.
A l'initialisation, tous les boutons d'option sont false.

J'ai un bouton de commande qui remplit une feuille Excel en fonction
des choix parmis les optionbuttons et qui ferme la userform.

Certains frames sont inactifs.
Je cherche à tester, avant la fermeture de la userform, si on n'a pas
laissé des frames actifs sans avoir fait un choix parmi les 4 proposés
(càd les 4 boutons d'option seraient false).
Le frame s'afficherait en rouge par exemple avec un msgbox.
Et je bloque lamentablement la dessus.

Merci pour l'aide.

Circé
http://faqword.com
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #21160361
Bonjour,

Tu as un exemple ici :
http://www.cijoint.fr/cjlink.php?file=cj201002/cij0HYjrCo.xls
(ne pas tenir compte de la ligne inactive dans la procédure.. j'aurais dû
l'effacer !


Le code de la procédure principale :
'----------------------------------------------
Private Sub CmdTest_Click()

Dim X As Control, Opt As Control
Dim Ok As Boolean

For Each X In Me.Controls
If TypeName(X) = "Frame" Then
Ok = False
For Each Opt In Me.Controls(X.Name).Controls
Select Case Opt.Value
Case Is = True
Ok = True
End Select
Next
If Ok = False Then
With Me.Controls(X.Name)
.BackColor = vbRed
MsgBox "aucun bouton option est activée dans le cadre " &
X.Name
End With
End If
End If
Next
End Sub
'----------------------------------------------



"Circé"
Bonjour à tous !

J'ai une userform avec un certain nombre de frames comprenant chacun 4
optionbuttons.
A l'initialisation, tous les boutons d'option sont false.

J'ai un bouton de commande qui remplit une feuille Excel en fonction des
choix parmis les optionbuttons et qui ferme la userform.

Certains frames sont inactifs.
Je cherche à tester, avant la fermeture de la userform, si on n'a pas
laissé des frames actifs sans avoir fait un choix parmi les 4 proposés
(càd les 4 boutons d'option seraient false).
Le frame s'afficherait en rouge par exemple avec un msgbox.
Et je bloque lamentablement la dessus.

Merci pour l'aide.

Circé
http://faqword.com




Circé
Le #21160411
Bonjour

Merci, ça fonctionne bien !
Juste un truc cependant : la macro ne tient pas compte des frames
inactifs (enabledúlse).
Si les frames sont inactifs, ils ne doivent pas être considérés comme
étant sans réponse.

La condition pour avoir le message est si le frame.enabled=true et si
aucun des boutons n'est coché.

Circé
http://faqword.com

michdenis a pensé très fort :
Bonjour,

Tu as un exemple ici :
http://www.cijoint.fr/cjlink.php?file=cj201002/cij0HYjrCo.xls
(ne pas tenir compte de la ligne inactive dans la procédure.. j'aurais dû
l'effacer !


Le code de la procédure principale :
'----------------------------------------------
Private Sub CmdTest_Click()

Dim X As Control, Opt As Control
Dim Ok As Boolean

For Each X In Me.Controls
If TypeName(X) = "Frame" Then
Ok = False
For Each Opt In Me.Controls(X.Name).Controls
Select Case Opt.Value
Case Is = True
Ok = True
End Select
Next
If Ok = False Then
With Me.Controls(X.Name)
.BackColor = vbRed
MsgBox "aucun bouton option est activée dans le cadre " &
X.Name
End With
End If
End If
Next
End Sub
'----------------------------------------------



"Circé"
Bonjour à tous !

J'ai une userform avec un certain nombre de frames comprenant chacun 4
optionbuttons.
A l'initialisation, tous les boutons d'option sont false.

J'ai un bouton de commande qui remplit une feuille Excel en fonction des
choix parmis les optionbuttons et qui ferme la userform.

Certains frames sont inactifs.
Je cherche à tester, avant la fermeture de la userform, si on n'a pas
laissé des frames actifs sans avoir fait un choix parmi les 4 proposés (càd
les 4 boutons d'option seraient false).
Le frame s'afficherait en rouge par exemple avec un msgbox.
Et je bloque lamentablement la dessus.

Merci pour l'aide.

Circé
http://faqword.com






michdenis
Le #21160591
Il s'agit d'ajouter une ligne de code à la procédure :
" If Me.Controls(X.Name).Enabled <> False Then"


'Procédure corrigée :
'----------------------------------------------------
Private Sub CmdTest_Click()

Dim X As Control, Opt As Control
Dim Ok As Boolean

For Each X In Me.Controls
If TypeName(X) = "Frame" Then
If Me.Controls(X.Name).Enabled <> False Then
Ok = False
For Each Opt In Me.Controls(X.Name).Controls
Select Case Opt.Value
Case Is = True
Ok = True
End Select
Next
If Ok = False Then
With Me.Controls(X.Name)
.BackColor = vbRed
MsgBox "aucun bouton option est activée dans le cadre "
& X.Name
End With
End If
End If
End If
Next
End Sub
'----------------------------------------------------




"Circé"
Bonjour

Merci, ça fonctionne bien !
Juste un truc cependant : la macro ne tient pas compte des frames inactifs
(enabledúlse).
Si les frames sont inactifs, ils ne doivent pas être considérés comme
étant sans réponse.

La condition pour avoir le message est si le frame.enabled=true et si
aucun des boutons n'est coché.

Circé
http://faqword.com

michdenis a pensé très fort :
Bonjour,

Tu as un exemple ici :
http://www.cijoint.fr/cjlink.php?file=cj201002/cij0HYjrCo.xls
(ne pas tenir compte de la ligne inactive dans la procédure.. j'aurais dû
l'effacer !


Le code de la procédure principale :
'----------------------------------------------
Private Sub CmdTest_Click()

Dim X As Control, Opt As Control
Dim Ok As Boolean

For Each X In Me.Controls
If TypeName(X) = "Frame" Then
Ok = False
For Each Opt In Me.Controls(X.Name).Controls
Select Case Opt.Value
Case Is = True
Ok = True
End Select
Next
If Ok = False Then
With Me.Controls(X.Name)
.BackColor = vbRed
MsgBox "aucun bouton option est activée dans le cadre " &
X.Name
End With
End If
End If
Next
End Sub
'----------------------------------------------



"Circé"
Bonjour à tous !

J'ai une userform avec un certain nombre de frames comprenant chacun 4
optionbuttons.
A l'initialisation, tous les boutons d'option sont false.

J'ai un bouton de commande qui remplit une feuille Excel en fonction des
choix parmis les optionbuttons et qui ferme la userform.

Certains frames sont inactifs.
Je cherche à tester, avant la fermeture de la userform, si on n'a pas
laissé des frames actifs sans avoir fait un choix parmi les 4 proposés
(càd les 4 boutons d'option seraient false).
Le frame s'afficherait en rouge par exemple avec un msgbox.
Et je bloque lamentablement la dessus.

Merci pour l'aide.

Circé
http://faqword.com










Circé
Le #21160811
Euh... c'est toujours pareil !
Les inactifs sont testés aussi...

Circé
http://faqword.com

michdenis a utilisé son clavier pour écrire :
Il s'agit d'ajouter une ligne de code à la procédure :
" If Me.Controls(X.Name).Enabled <> False Then"


'Procédure corrigée :
'----------------------------------------------------
Private Sub CmdTest_Click()

Dim X As Control, Opt As Control
Dim Ok As Boolean

For Each X In Me.Controls
If TypeName(X) = "Frame" Then
If Me.Controls(X.Name).Enabled <> False Then
Ok = False
For Each Opt In Me.Controls(X.Name).Controls
Select Case Opt.Value
Case Is = True
Ok = True
End Select
Next
If Ok = False Then
With Me.Controls(X.Name)
.BackColor = vbRed
MsgBox "aucun bouton option est activée dans le cadre "
& X.Name
End With
End If
End If
End If
Next
End Sub
'----------------------------------------------------




"Circé"
Bonjour

Merci, ça fonctionne bien !
Juste un truc cependant : la macro ne tient pas compte des frames inactifs
(enabledúlse).
Si les frames sont inactifs, ils ne doivent pas être considérés comme étant
sans réponse.

La condition pour avoir le message est si le frame.enabled=true et si aucun
des boutons n'est coché.

Circé
http://faqword.com

michdenis a pensé très fort :
Bonjour,

Tu as un exemple ici :
http://www.cijoint.fr/cjlink.php?file=cj201002/cij0HYjrCo.xls
(ne pas tenir compte de la ligne inactive dans la procédure.. j'aurais dû
l'effacer !


Le code de la procédure principale :
'----------------------------------------------
Private Sub CmdTest_Click()

Dim X As Control, Opt As Control
Dim Ok As Boolean

For Each X In Me.Controls
If TypeName(X) = "Frame" Then
Ok = False
For Each Opt In Me.Controls(X.Name).Controls
Select Case Opt.Value
Case Is = True
Ok = True
End Select
Next
If Ok = False Then
With Me.Controls(X.Name)
.BackColor = vbRed
MsgBox "aucun bouton option est activée dans le cadre " &
X.Name
End With
End If
End If
Next
End Sub
'----------------------------------------------



"Circé"
Bonjour à tous !

J'ai une userform avec un certain nombre de frames comprenant chacun 4
optionbuttons.
A l'initialisation, tous les boutons d'option sont false.

J'ai un bouton de commande qui remplit une feuille Excel en fonction des
choix parmis les optionbuttons et qui ferme la userform.

Certains frames sont inactifs.
Je cherche à tester, avant la fermeture de la userform, si on n'a pas
laissé des frames actifs sans avoir fait un choix parmi les 4 proposés
(càd les 4 boutons d'option seraient false).
Le frame s'afficherait en rouge par exemple avec un msgbox.
Et je bloque lamentablement la dessus.

Merci pour l'aide.

Circé
http://faqword.com












michdenis
Le #21160931
Le frame2 est inactif par design

http://www.cijoint.fr/cjlink.php?file=cj201002/cijQXPhlHD.xls




"Circé"
Euh... c'est toujours pareil !
Les inactifs sont testés aussi...

Circé
http://faqword.com

michdenis a utilisé son clavier pour écrire :
Il s'agit d'ajouter une ligne de code à la procédure :
" If Me.Controls(X.Name).Enabled <> False Then"


'Procédure corrigée :
'----------------------------------------------------
Private Sub CmdTest_Click()

Dim X As Control, Opt As Control
Dim Ok As Boolean

For Each X In Me.Controls
If TypeName(X) = "Frame" Then
If Me.Controls(X.Name).Enabled <> False Then
Ok = False
For Each Opt In Me.Controls(X.Name).Controls
Select Case Opt.Value
Case Is = True
Ok = True
End Select
Next
If Ok = False Then
With Me.Controls(X.Name)
.BackColor = vbRed
MsgBox "aucun bouton option est activée dans le
cadre " & X.Name
End With
End If
End If
End If
Next
End Sub
'----------------------------------------------------




"Circé"
Bonjour

Merci, ça fonctionne bien !
Juste un truc cependant : la macro ne tient pas compte des frames
inactifs (enabledúlse).
Si les frames sont inactifs, ils ne doivent pas être considérés comme
étant sans réponse.

La condition pour avoir le message est si le frame.enabled=true et si
aucun des boutons n'est coché.

Circé
http://faqword.com

michdenis a pensé très fort :
Bonjour,

Tu as un exemple ici :
http://www.cijoint.fr/cjlink.php?file=cj201002/cij0HYjrCo.xls
(ne pas tenir compte de la ligne inactive dans la procédure.. j'aurais
dû l'effacer !


Le code de la procédure principale :
'----------------------------------------------
Private Sub CmdTest_Click()

Dim X As Control, Opt As Control
Dim Ok As Boolean

For Each X In Me.Controls
If TypeName(X) = "Frame" Then
Ok = False
For Each Opt In Me.Controls(X.Name).Controls
Select Case Opt.Value
Case Is = True
Ok = True
End Select
Next
If Ok = False Then
With Me.Controls(X.Name)
.BackColor = vbRed
MsgBox "aucun bouton option est activée dans le cadre "
& X.Name
End With
End If
End If
Next
End Sub
'----------------------------------------------



"Circé" :
Bonjour à tous !

J'ai une userform avec un certain nombre de frames comprenant chacun 4
optionbuttons.
A l'initialisation, tous les boutons d'option sont false.

J'ai un bouton de commande qui remplit une feuille Excel en fonction
des choix parmis les optionbuttons et qui ferme la userform.

Certains frames sont inactifs.
Je cherche à tester, avant la fermeture de la userform, si on n'a pas
laissé des frames actifs sans avoir fait un choix parmi les 4 proposés
(càd les 4 boutons d'option seraient false).
Le frame s'afficherait en rouge par exemple avec un msgbox.
Et je bloque lamentablement la dessus.

Merci pour l'aide.

Circé
http://faqword.com
















Circé
Le #21161481
Re...

OK, merci pour le fichier.
J'ai compris l'erreur.
Ce n'est pas mes frames qui étaient inactifs, mais les boutons
d'options qui s'y trouvent.
Donc, cette fois, tout va bien...

Je te remercie.

Circé
http://faqword.com

Il se trouve que michdenis a formulé :
Le frame2 est inactif par design

http://www.cijoint.fr/cjlink.php?file=cj201002/cijQXPhlHD.xls




"Circé"
Euh... c'est toujours pareil !
Les inactifs sont testés aussi...

Circé
http://faqword.com

michdenis a utilisé son clavier pour écrire :
Il s'agit d'ajouter une ligne de code à la procédure :
" If Me.Controls(X.Name).Enabled <> False Then"


'Procédure corrigée :
'----------------------------------------------------
Private Sub CmdTest_Click()

Dim X As Control, Opt As Control
Dim Ok As Boolean

For Each X In Me.Controls
If TypeName(X) = "Frame" Then
If Me.Controls(X.Name).Enabled <> False Then
Ok = False
For Each Opt In Me.Controls(X.Name).Controls
Select Case Opt.Value
Case Is = True
Ok = True
End Select
Next
If Ok = False Then
With Me.Controls(X.Name)
.BackColor = vbRed
MsgBox "aucun bouton option est activée dans le cadre
" & X.Name
End With
End If
End If
End If
Next
End Sub
'----------------------------------------------------




"Circé"
Bonjour

Merci, ça fonctionne bien !
Juste un truc cependant : la macro ne tient pas compte des frames
inactifs (enabledúlse).
Si les frames sont inactifs, ils ne doivent pas être considérés comme
étant sans réponse.

La condition pour avoir le message est si le frame.enabled=true et si
aucun des boutons n'est coché.

Circé
http://faqword.com

michdenis a pensé très fort :
Bonjour,

Tu as un exemple ici :
http://www.cijoint.fr/cjlink.php?file=cj201002/cij0HYjrCo.xls
(ne pas tenir compte de la ligne inactive dans la procédure.. j'aurais
dû l'effacer !


Le code de la procédure principale :
'----------------------------------------------
Private Sub CmdTest_Click()

Dim X As Control, Opt As Control
Dim Ok As Boolean

For Each X In Me.Controls
If TypeName(X) = "Frame" Then
Ok = False
For Each Opt In Me.Controls(X.Name).Controls
Select Case Opt.Value
Case Is = True
Ok = True
End Select
Next
If Ok = False Then
With Me.Controls(X.Name)
.BackColor = vbRed
MsgBox "aucun bouton option est activée dans le cadre "
& X.Name
End With
End If
End If
Next
End Sub
'----------------------------------------------



"Circé" :
Bonjour à tous !

J'ai une userform avec un certain nombre de frames comprenant chacun 4
optionbuttons.
A l'initialisation, tous les boutons d'option sont false.

J'ai un bouton de commande qui remplit une feuille Excel en fonction
des choix parmis les optionbuttons et qui ferme la userform.

Certains frames sont inactifs.
Je cherche à tester, avant la fermeture de la userform, si on n'a pas
laissé des frames actifs sans avoir fait un choix parmi les 4 proposés
(càd les 4 boutons d'option seraient false).
Le frame s'afficherait en rouge par exemple avec un msgbox.
Et je bloque lamentablement la dessus.

Merci pour l'aide.

Circé
http://faqword.com


















Publicité
Poster une réponse
Anonyme