Excel 2007 - Macro à partir d'une case d'option (formulaire)
Résolu
guigol
Messages postés
66
Statut
Membre
-
guigol Messages postés 66 Statut Membre -
guigol Messages postés 66 Statut Membre -
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
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:
- Excel 2007 - Macro à partir d'une case d'option (formulaire)
- Whatsapp formulaire opposition - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Save as pdf office 2007 - Télécharger - Bureautique
- Liste déroulante excel - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
6 réponses
Bonjour,
Je pense qu'il faut creer un classeur avec la macro suivante :
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,
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,
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?
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?
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 :
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,
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,
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 :
Selon la ligne et colonne tu peux choisir le traitement à effectuer
eric
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