IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Cases d'options groupées [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut Cases d'options groupées
    Bonjour,

    Soit 3 cases d'options (contrôles de formulaire) et une zone de groupe. Les 4 éléments sont groupés. Avec Excel 2013, je peux accéder à la valeur d'une case d'option avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Var = ActiveSheet.Shapes(1).GroupItems(2).ControlFormat.Value
    Ca ne fonctionne pas avec Excel 2007 (erreur 1004 Impossible de lire la propriété Value de la classe OptionButton). Quelle est la solution ?

    Merci d'avance.

  2. #2
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    bonsoir Daniel,

    j'ai été confronté à ce problème une fois sans parvenir à le solutionner autrement que par lier les shapes à une cellule avant le groupage.
    une fois groupée on ne peut plus lire sur 2007 ControlFormat.Value.
    La cellule liée reste toujours liée.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 66
    Par défaut
    A priori, cela fonctionne avec la solution ci dessous.

    réponse sur Commentcamarche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub lancer_macro()
    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
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    une fois groupée on ne peut plus lire sur 2007 ControlFormat.Value
    Le problème est que le classeur arrive tout fait. Excel 2013 y arrive (je n'ai pas essayé Excel 2010). Mais l'utilisateur ne dispose que d'Excel 2007. Donc "Ungroup", puis récupération du bouton activé.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour Daniel,
    Je viens de faire un test et l'erreur 1004 est provoquée par un Shape dont le nom est Group Box si on passe au-dessus on n'a plus d'erreur.
    J'utilise très peu ce type d'objet, je n'ai donc pas une grande expérience de ceux-ci.
    En général je regroupe les objets OptionButton dans un Frame et j'utilise la cellule liée.
    Mais comme tu l'as signalé l'utilisateur n'a pas la main sur le classeur.
    Code de mon test (rapide)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
     Dim s As Shape
     Dim sht As Worksheet: Set sht = ActiveSheet
     Debug.Print sht.Shapes.Count '  .Shapes(1).GroupItems(1).ControlFormat.Value
     For Each s In sht.Shapes
      Debug.Print s.Name
      s.Select
       Select Case Left(s.Name, 5)
         Case "Group"
          If InStr(s.Name, "Box") = 0 Then Debug.Print s.GroupItems.Count
       End Select
     Next
     ' MsgBox "Vous avez cliqué sur un élément du Group53"
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonsoir Philippe,

    Mon but est de savoir quel bouton est activé, à l'intérieur du groupe.

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir à tous

    Ci-joint code testé avec le fichier initial sur Excel 2010. On sortie on récupère le nom du groupe et le bouton activé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub Test()
    Dim Shp As Shape, Gpe As Shape
    Dim i As Integer, j As Integer
    Dim Tb()
     
    For Each Shp In ActiveSheet.Shapes
        If Shp.Type = msoGroup Then
            For Each Gpe In Shp.GroupItems
                If Gpe.FormControlType = xlOptionButton Then
                    If Gpe.ControlFormat.Value = 1 Then
                        j = j + 1
                        ReDim Preserve Tb(1 To 2, 1 To j)
                        Tb(1, j) = Shp.Name
                        Tb(2, j) = Gpe.TopLeftCell.Address    'ou Shp.GroupItems(i).name
                        Exit For
                    End If
                End If
            Next Gpe
        End If
    Next Shp
     
    If j > 0 Then
        For i = 1 To j
            Debug.Print "Groupe: " & Tb(1, i), "Bouton activé: " & Tb(2, i)
        Next i
    End If
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Ajout case d'option dans groupe d'option
    Par Nessie37 dans le forum IHM
    Réponses: 5
    Dernier message: 02/10/2009, 18h12
  2. Réponses: 7
    Dernier message: 06/08/2008, 11h07
  3. cases à cocher et groupe d'options
    Par krina85 dans le forum IHM
    Réponses: 2
    Dernier message: 17/03/2008, 22h37
  4. Réponses: 3
    Dernier message: 03/04/2007, 11h29
  5. Problème avec les cases d'un groupe d'option.
    Par auriolbeach dans le forum Access
    Réponses: 2
    Dernier message: 01/10/2005, 07h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo