Macro EXCEL : Réinitialisation case d'options

[Résolu/Fermé]
Signaler
-
 Peyo -
Bonjour à tous et d'avance merci beaucoup pour votre aide !

Après maintes recherches, je ne suis pas arrivé à trouver mon erreur, je vous soumets donc mon problème très simple.

Sous Excel 2007, avec le contrôle de formulaires, j'ai créé 2 cases d'options (appelons-les "CASE 1" et "CASE 2") contenues dans une zone de groupe.

Je veux affecter à un bouton (contrôle de formulaires) une macro de réinitialisation, telle que, à son exécution, je coche CASE 1 (et décoche par conséquent CASE 2) et ce quelle que soit la case cochée par l'utilisateur (1 ou 2).

Pratiquant le VBA depuis environ 2 heures, j'ai essayé le code suivant dans mon module 1 :
Sub Reinitialisation_case_option() 
     OptionButton(1).Select 
     Selection.Value = False 
     OptionButton(2).Select 
     Selection.Value = True 
End Sub 


Lorsque j'exécute, le message d'erreur suivant apparaît :
"Erreur de compilation :
Sub ou Function non définie."

Pourriez-vous me dire quelle(s) erreur(s) - probablement grossière(s) - je commets ?

MERCI BEAUCOUP D'AVANCE :D !

6 réponses

Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 181
Bonjour tous,
Tu dis...il me faut maintenant remplacer tous mes contrôles de formulaires par des contrôles ActiveX (je n'en ai pas seulement 2, snif !)
Une solution pour remplacer tes optionB automatiquement.
Donne aussi la possibilité de tester tout les contrôles en 3 lignes de code.
La démo ajoute des boutons mais il est facile de remplacer par des OptionB dans le code.
D'accord, c'est compliquer, mais avec un peu de persévérance tu peu y arriver.
Maintenant, si tu à 20.. ou plus d'OptionB formulaire tu à la commande (malheureusement en deux fois, ça marche pas autrement)
ActiveSheet.Shapes("Option Button 1").Select
Selection.Value = xlOff

Ou xlOn pour le cocher et bien sûr, entre les guillemets c'est chaque fois le nom du bouton.
Tu te vois copier ces 40.. lignes pour les initialiser et c'est pas tout, encore 40 lignes + Les If Then pour les tester ??
Quoi qu'il en soit, bon courage.
A+
7
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 181
Hum, j'avais pas vu.
Pour connaitre le nom du contrôle.
Clic droit sur le contrôle >> Format de contrôle >> dans la fenêtre qui s'ouvre >> Web
Et tu a le nom du contrôle.
Mais tu est conscient qu'il n'y aura jamais qu'un seul Option qui serra sélectionner ?
Quand tu clic sur l'un, l'autre se met à zéro..
Tu est sûr que ce sont des Option et pas des CheckBox ?
Messages postés
10146
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
13 octobre 2021
2 227
bonjour

utilises plutôt les contrôles activeX (afficher/boite à outils contrôles) qui sont plus commodes à manipuler.
le petit triangle bleu est une bascule mode création/mode exécution

le code suivant devrait alors fonctionner

Sub Reinitialisation_case_option()
Sheets(1).OptionButton1.Value = False
Sheets(1).OptionButton2.Value = True
End Sub

bonne suite
Merci beaucoup pour la réponse ccm81 !

Le problème avec ta solution est qu'il me faut maintenant remplacer tous mes contrôles de formulaires par des contrôles ActiveX (je n'en ai pas seulement 2, snif !) ... Quelqu'un aurait-il une autre idée ?

Par ailleurs, dans les propriétés des cases d'options ActiveX, j'ai un souci avec le fond "Backcolor" : comment le rendre soit transparent (comme le Backstyle), soit lui donner la couleur que je veux (qui n'est évidemment pas dans la palette proposée ...) ?

Merci beaucoup d'avance !
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
622
Bonjour,

Je ne sais pas si j'ai bien compris le problème mais il me semble qu'il suffit d'écrire cela dans le code associé au bouton :

Private Sub Reinitialisation_case_option_Click()      
   OptionButton1.Value = False     
   OptionButton2.Value = True    
End Sub


sachant que OptionButton1 et OptionButton2 sont les noms des cases options du formulaire et Reinitialisation_case_option le nom du bouton

A+

Cordialement,
Merci beaucoup pour la réponse pilas31 !

Alors, il est probable que je dise de grosses bêtises (je découvre tout juste le VBA), mais ton code ne fonctionne-t-il pas que pour des contrôles ActiveX ?

Je demande car à priori cela ne fonctionne pas avec mes contrôles de formulaires alors que ça fonctionne si j'essaye avec des contrôles ActiveX.

Si ce n'est pas le cas, comment puis-je connaître le nom de mes cases d'options et de mon bouton ?

Merci beaucoup !
Merci beaucoup pour ta réponse lermite222 !

En fin de compte, j'ai opté pour des boutons et cases d'options en contrôle ActiveX, je ne referai plus "l'erreur" !

Du coup, par coquetterie, j'en reviens à une de mes questions préalables : dans les propriétés des cases d'options ActiveX, j'ai un souci avec le fond "Backcolor" : comment le rendre soit transparent (comme le Backstyle), soit lui donner la couleur que je veux (qui n'est évidemment pas dans la palette proposée ...) ?

Merci d'avance pour votre aide !
Je réponds à ma propre question :
"propriétés" de l'objet => "backcolor" => "palette" => clic droit

Youpi !!!

Merci à tous !