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 :

Comment aligner des groupes de boutons radio sur des cellules


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Points : 34
    Points
    34
    Par défaut Comment aligner des groupes de boutons radio sur des cellules
    Bonjour

    Je rencontre un problème lors de la génération automatique de bouton radio (OptionButton).

    Je souhaite associer plusieurs boutons radio dans un groupe que je génère dynamiquement en fonction du nombre d'item d'un formulaire.

    Le problème est que je n'arrive pas bien à aligner les groupes avec les cellules. Et de ce fait, les boutons radio n'ont pas le comportement désiré, et il est possible de sélectionner 2 boutons radio dans un même groupe !

    Vous pouvez constater le problème sur la capture d'écran suivante :

    Capture

    Une chose même très étonnant, est que le 2ème groupe semble lié au 4ème groupe de boutons. Ainsi, lorsque je clique sur un bouton radio du 2ème groupe, ça désélectionne un bouton radio du 4ème groupe. Je ne comprends absolument pas pourquoi.

    Voici le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set groupeCellules = ActiveSheet.Cells(cellule.Row, 6).Resize(nbCellulesFusionnees, 1)
     
    With groupeCellules
     Set monGroupBox = ActiveSheet.GroupBoxes.Add(Top:=.Top, Left:=.Left, Height:=.Height, Width:=.Width)
    End With
    Pouvez-vous m'indiquer comment affecter un bouton radio à un groupe, et comment les aligner sur les cellules ?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    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 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Pourquoi ne te sers-tu pas des options buttons ActiveX ? C'est beaucoup plus facile à manier et tu n'as pas besoin de groupboxes.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    Pourquoi pas utiliser les ActiveX si cela permet de faire ce que je veux.

    A une époque j'avais entendu dire qu'il valait mieux les éviter.
    Maintenant je ne sais pas.

    Quels en sont les inconvénients ? (s'il y en a)
    La rétro-compatibilité est-elle assurée ?

    En regardant sur le net, j'ai vu que les ActiveX ne marchaient pas sous Mac.

    Voici un cours exemple simplifié montrant le problème.

    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
     
    Dim myCell As Range
    Dim numCell As Integer
    Dim myGroupBox As GroupBox
    Dim myOptionButton As OptionButton
     
    ActiveSheet.OptionButtons.Delete
    ActiveSheet.GroupBoxes.Delete
     
    numCell = 0
    For Each myCell In ActiveSheet.Range("E2:E12").Cells
        If numCell = 0 Then
            Set myGroupBox = ActiveSheet.GroupBoxes.Add(myCell.Left, myCell.Top, myCell.Width, myCell.Height * 3)
            myGroupBox.Caption = ""
        End If
        numCell = numCell + 1
        If numCell = 3 Then numCell = 0
    Next
     
    For Each myCell In ActiveSheet.Range("E2:E13").Cells
        Set myOptionButton = ActiveSheet.OptionButtons.Add(myCell.Left, myCell.Top, myCell.Width, myCell.Height)
        myOptionButton.Caption = "Option Button"
    Next
    Si qqun a une solution en utilisant les contrôles Excel, je suis preneur.

    Merci par avance.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    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 207
    Points : 14 362
    Points
    14 362
    Par défaut
    En regardant sur le net, j'ai vu que les ActiveX ne marchaient pas sous Mac.
    Apparemment c'est exact. Si tu travailles pour des Mac ...

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Points : 307
    Points
    307
    Par défaut
    j'arrive peut être un peu tard sur la post mais..


    Si ton problème consiste à aligner les controls sur la feuille , prend tes repéres sur la feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    left_W = ActiveSheet.Columns(Selection.Column).Left  ' Position Gauche selection fenêtre active
    top_W = ActiveSheet.Rows(Selection.Row).Top  '

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    Ca correspond à peu près à ce que je faisais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set myGroupBox = ActiveSheet.GroupBoxes.Add(myCell.Left, myCell.Top, myCell.Width, myCell.Height * 3)
    En fait, le problème vient du fait que souvent le dernier bouton radio n'est pas inclu dans le groupBox.
    Du coup, je dimensionne un peu plus grand mon groupBox afin que tous les OptionButtons soient bien inclus dedans.

    Ca marche pas trop mal (sauf à certains zooms).

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/05/2010, 14h40
  2. Principe des boutons radios sur les checkbox
    Par misterphil dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/10/2008, 16h34
  3. [Débutant][Netbeans 4.1]Groupe de boutons RADIO
    Par Terminator dans le forum NetBeans
    Réponses: 1
    Dernier message: 12/09/2005, 16h22
  4. [JPanel] ajouter un groupe de boutons radio
    Par ummon99 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 25/04/2005, 14h42

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