Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tester les optionbuttons dans une userform

6 réponses
Avatar
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

6 réponses

Avatar
michdenis
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é" a écrit dans le message de groupe de discussion :

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




Avatar
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é" a écrit dans le message de groupe de discussion :

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






Avatar
michdenis
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é" a écrit dans le message de groupe de discussion :

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é" a écrit dans le message de groupe de discussion :

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










Avatar
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é" a écrit dans le message de groupe de discussion :

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é" a écrit dans le message de groupe de discussion :

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












Avatar
michdenis
Le frame2 est inactif par design

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




"Circé" a écrit dans le message de groupe de discussion :

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é" a écrit dans le message de groupe de discussion :

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é" a écrit dans le message de groupe de discussion
:
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
















Avatar
Circé
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é" a écrit dans le message de groupe de discussion :

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é" a écrit dans le message de groupe de discussion :

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é" a écrit dans le message de groupe de discussion
:
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