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

Excel Discussion :

Comment faire pour avoir une liste cochable dans un Tableau / CheckedListBox


Sujet :

Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut Comment faire pour avoir une liste cochable dans un Tableau / CheckedListBox
    Bonjour à tous !


    Je souhaite pouvoir :
    Dans un tableau avoir la possibilité pour une colonne de pouvoir cocher parmi une liste de libellé.
    Idéalement:
    - J'aimerai dire à Excel, définir une colonne en temps que "CheckedListBox" dans un tableau Excel (les nouveau tableaux qui sont apparu en 2007)
    - Second niveau de difficulté : Je souhaite pouvoir le récupérer les sélections par programmation (j'utilise Aspose Cells C#) // bon ça c'est mon problème, si déja j'arrive à définir ma colonne je serai heureux !

    Voila, je tourne un peu en rond et je ne sais pas faire ca dans un tableau !
    L'alternative que j'ai trouvé: c'est de créer une colonne par option avec un Oui/Non, mais c'est franchement pas Glop !


    Un modèle est dispos CJ (mais bon y a rien de concret)

    Merci pour votre aide !
    Fichiers attachés Fichiers attachés

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

    La macro suivante crée les checkboxes en colonne E et les cellules liées correspondantes en colonne H. Donc, tu dois tester ces cellules pour récupérer l'état du checkbox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub CreationCB()
        Dim C As Range, chkbx, Plage As Range
        With Sheets("Client")
            Set Plage = .ListObjects(1).ListColumns(5).Range
            Set Plage = Plage.Offset(1).Resize(Plage.Rows.Count - 2)
            For Each C In Plage
                Set chkbx = .CheckBoxes.Add(588, C.Top + 0.75, 72.75, 16)
                chkbx.LinkedCell = C.Offset(, 3).Address
                C.Offset(, 3) = False
            Next C
        End With
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    et pour la mise à jour dynamique, mets quelque part sur la feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =LIGNES(Utilisateurs[Nom])
    (éventuellement masquée); dans un module standard (au début) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public NbLignes As Long
    Dans le module "thisworkbook" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        NbLignes = [Client!H1]
    End Sub
    et dans le module de la feuille :

    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
    Private Sub Worksheet_Calculate()
        Dim S As Shape
        Dim c As Range, Plage As Range
        If [H1] <> NbLignes Then
            Set Plage = Sheets("Client").ListObjects(1).ListColumns(5).Range
            Set Plage = Plage.Offset(1).Resize(Plage.Rows.Count - 2)
            Plage.Select
            NbLignes = [H1]
            For Each S In ActiveSheet.Shapes
                If S.FormControlType = xlCheckBox Then S.Delete
            Next S
            For Each c In Plage
                Set chkbx = ActiveSheet.CheckBoxes.Add(588, c.Top + 0.75, 72.75, 16)
                chkbx.LinkedCell = c.Offset(, 3).Address
                c.Offset(, 3).Value = False
            Next c
        End If
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    Daniel.C
    Merci pour ces précisions !

    C'est pas sur que je puisse facilement exploiter l'information en programmation, de façon dynamique.. Quant à la maintenance du bouzin...
    Une chose est sur c'est que ça se fait pas intuitivement.

    Je vais regarder demain au calme, comment l'exploiter au mieux

    Merci du (gros) coup de main !
    Bonne soirée !

Discussions similaires

  1. Réponses: 12
    Dernier message: 14/04/2009, 20h10
  2. Comment faire pour avoir une barre de chargement pour un SWF externe?
    Par rigolman dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 10/04/2009, 10h49
  3. [gedit] Comment faire pour avoir une instance de gedit par onglet ?
    Par Davidbrcz dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 25/06/2007, 11h58
  4. Réponses: 5
    Dernier message: 06/10/2006, 17h55
  5. Réponses: 7
    Dernier message: 21/04/2005, 15h55

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