Excel 2007 - Macro à partir d'une case d'option (formulaire)

Résolu/Fermé
guigol Messages postés 65 Date d'inscription mardi 12 décembre 2006 Statut Membre Dernière intervention 30 janvier 2019 - 22 févr. 2013 à 15:24
guigol Messages postés 65 Date d'inscription mardi 12 décembre 2006 Statut Membre Dernière intervention 30 janvier 2019 - 22 févr. 2013 à 20:33
Bonjour,

J'aimerais pouvoir lancer 3 macros différentes en fonction de l'état de cercle situés en C15, C16 et C17. ces cercles ont été insérés via la commande developpeur/Inserer/Controle de formulaire/Case d'option
ils sont regroupés dans un bloc nommé 51.

Le fichier en question m'est fourni par mon client. Donc impossible de le modifier. mais il contient des informations précieuses (indiquées par ces fameuses cases d'options). Et en fonction de ces cercles cochés (ou non), lancer des calculs différents.

Je ne souhaite pas lancer une macro lorsque je vais cliquer sur l'un de ces 3 cercles.
Ce que je souhaite, c'est :
----------Ouvrir le fichier
----------Lancer une macro qui fera différentes actions en fonction du cercle cliqué.

J'ai beau retourner le truc dans tous les sens, à base de shapes, de "option button",.... rien n'y fait, la macro plante.

Une idée?

Par avance, merci
A voir également:

6 réponses

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 22/02/2013 à 16:10
Bonjour,

Je pense qu'il faut creer un classeur avec la macro suivante :

Sub lancer_macro() 

If ActiveSheet.OptionButtons(1).Value = 1 Then 
  Call Macro1 
End If 
If ActiveSheet.OptionButtons(2).Value = 1 Then 
  Call Macro2 
End If 
If ActiveSheet.OptionButtons(3).Value = 1 Then 
  Call Macro3 
End If 

End Sub

Macro1 2 et 3 correspondent aux traitements voulus.

Il faut ensuite ouvrir le classeur du client, se positionner sur la feuille qui contient les case d'options et appeler la macro "lancer_macro"

A tester

A+
Cordialement,
0
guigol Messages postés 65 Date d'inscription mardi 12 décembre 2006 Statut Membre Dernière intervention 30 janvier 2019 1
Modifié par guigol le 22/02/2013 à 16:29
Merci pour ta réponse.

Mais il me répond :
"Impossible de lire la propriété OptionsButtons de la classe Worksheet"


J'ai essayé de le mettre en ligne.

http://tilidom.com/tilidom/download/183245806

Arrivez vous à y acceder?
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
22 févr. 2013 à 17:42
C'est OK on peut acceder au fichier.
Je me penche sur le sujet et je reviens...
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 22/02/2013 à 17:59
Bon c'était pas facile mais voilà mon analyse.
On ne peut pas lire les controls parcequ'ils sont groupés.
Donc il faut d'abord les dégrouper puis faire la macro "d'aiguillage" d'ou mes deux macros comme ceci :
Sub Degrouper() 
On Error Resume Next 
ActiveSheet.Shapes.Range(Array("Group 51")).Select 
Selection.ShapeRange.Ungroup 
ActiveSheet.Shapes.Range(Array("Group 52")).Select 
Selection.ShapeRange.Ungroup 
ActiveSheet.Shapes.Range(Array("Group 53")).Select 
Selection.ShapeRange.Ungroup 
ActiveSheet.Shapes.Range(Array("Group 54")).Select 
Selection.ShapeRange.Ungroup 
End Sub 

Sub lancer_macro() 
If ActiveSheet.Shapes("Case d'option 3").ControlFormat.Value = xlOn Then 
  Call OUI3 
End If 
If ActiveSheet.Shapes("Case d'option 4").ControlFormat.Value = xlOn Then 
  Call OUI4 
End If 
If ActiveSheet.Shapes("Case d'option 5").ControlFormat.Value = xlOn Then 
  Call OUI5 
End If 
'etc... avec 8,9, 10 ...
End Sub



Sachant qu'il y a 4 groupes d'options qui sont respectivement
3,4, 5
8,9, 10
14,15, 16
19,20, 21

A tester
Cordialement,
0
guigol Messages postés 65 Date d'inscription mardi 12 décembre 2006 Statut Membre Dernière intervention 30 janvier 2019 1
Modifié par guigol le 22/02/2013 à 18:28
Ca marche chez toi?
Parce que chez moi, non.

Lorsque j'exécute pas à pas les 2 sub successivement, il :
_____ exécute Degrouper() sans problème (et les groupes sont bien dégroupés)
_____ bloque sur le if en indiquant "L'élément portant ce nom est introuvable"



De plus, ma feuille étant protégé par mot de passe (que je connais) il faut que je trouve la ligne de code à ajouter pour la débloquer avant de commencer à dégrouper.


J'édite mon message.
Après avoir fait tourner tes 2 subs (et ou ca plante a la deuxième), je suis retourné sur mon fichier.
je me rends compte qu'il y a des zones de groupe (22, 30, 37, 42) qui restent.
0

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

Posez votre question
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
22 févr. 2013 à 20:10
Bonjour à tous,

Ta question m'a intéressé.
Je n'ai pas réussi non plus à tester les boutons sans dégrouper.
Une proposition qui ramène l'adresse des cellules avec un radio button actif :
Dim groupe As Shape, opt As Object, adr As String
For Each groupe In ActiveSheet.Shapes
    If groupe.Type = msoGroup Then groupe.Ungroup
Next groupe
For Each opt In ActiveSheet.Shapes
    If opt.FormControlType = xlOptionButton Then
        adr = opt.TopLeftCell.Address
        If opt.ControlFormat = 1 Then MsgBox (adr & ", ligne " & Split(adr, "$")(1) & ", colonne " & Split(adr, "$")(2))
    End If
Next opt


Selon la ligne et colonne tu peux choisir le traitement à effectuer

eric
0
guigol Messages postés 65 Date d'inscription mardi 12 décembre 2006 Statut Membre Dernière intervention 30 janvier 2019 1
22 févr. 2013 à 20:33
Effectivement. cela fonctionne.

Merci beaucoup.
0