Macro EXCEL : Réinitialisation case d'options

Résolu/Fermé
Peyo - Modifié par Peyo le 4/01/2012 à 16:46
 Peyo - 4 janv. 2012 à 22:56
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 !
A voir également:

6 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
4 janv. 2012 à 20:39
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
4 janv. 2012 à 20:49
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 ?
0
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
Modifié par ccm81 le 4/01/2012 à 17:23
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
0
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 !
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 4/01/2012 à 18:48
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,
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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 !
0
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 !
0
Je réponds à ma propre question :
"propriétés" de l'objet => "backcolor" => "palette" => clic droit

Youpi !!!

Merci à tous !
0