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 :

checkbox dans un tableau de dénombrement


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 6
    Points
    6
    Par défaut checkbox dans un tableau de dénombrement
    J'ai un tableau de dénombrement tout bête avec des colonnes et trois lignes..

    Je voudrais mettre une checkbox dans l'entête des colonnes et des lignes pour pouvoir les exclure de ma fonction somme qui liste les résultats en ligne et en colonne.

    de cette manière je pourrais manipuler les données et voir l'impact sur mon total qui est la somme de mes lignes ou de mes colonnes

    pouvez vous m'aider ou me mettre sur la voie car je suis bloqué, merci !

    je met une capture d'écran du résultat que j'aimerais obtenir


  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour


    Un exemple,en supposant que le tableau commence dans la cellule A1:
    (La classe est initialisée lors de l'ouverture du classeur)


    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
    '--------------------------------------
    'à placer dans le module objet ThisWorbook pour que la classe
    'soit initialisée lors de l'ouverture du classeur.
     
    Option Explicit
     
    Private Sub Workbook_Open()
    Dim Obj As OLEObject
    Dim Cl As Classe1
     
    Set Collect = New Collection
     
    'boucle sur les objets de la Feuil1
    For Each Obj In Feuil1.OLEObjects
        'verifie s'il s'agit d'un CheckBox
        If TypeOf Obj.Object Is MSForms.CheckBox Then
     
            Set Cl = New Classe1
            Set Cl.ChBox = Obj.Object
            Collect.Add Cl
        End If
    Next Obj
     
    End Sub
    '--------------------------------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    '--------------------------------------
    'dans un module standard
    Option Explicit
     
    Public Collect As Collection
    '--------------------------------------

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    '--------------------------------------
    'dans un module de classe nommé "Classe1"
    '
    Option Explicit
     
    Public WithEvents ChBox As MSForms.CheckBox
     
     
    Private Sub ChBox_Click()
        Dim x As Long
        Dim Ws As Worksheet
        Dim PlageSomme As Range
        Set Ws = ActiveSheet
     
        'Vérifie si un checkbox placé sur la premiere ligne
        'est utilisé:
        If ChBox.TopLeftCell.Row = 1 Then
     
            'Recupere la derniere ligne du tableau
            x = Ws.Cells(1, 1).End(xlDown).Row
     
            'Si le checkbox est coché :
            If ChBox.Value Then
     
                'Definit la plage de sellules pour la somme
                Set PlageSomme = Ws.Range(Ws.Cells(2, ChBox.TopLeftCell.Column), _
                    Ws.Cells(x - 1, ChBox.TopLeftCell.Column))
     
                'Applique la formule dans la derniere cellule de la
                'colonne.
                Ws.Cells(x, ChBox.TopLeftCell.Column).Formula = _
                    "=SUM(" & PlageSomme.Address & ")"
            Else
                'Sinon indique 0 dans la cellule
                Ws.Cells(x, ChBox.TopLeftCell.Column) = 0
            End If
        Else
     
            x = Ws.Cells(1, 1).End(xlToRight).Column
     
            If ChBox.Value Then
     
                Set PlageSomme = Ws.Range(Ws.Cells(ChBox.TopLeftCell.Row, 2), _
                    Ws.Cells(ChBox.TopLeftCell.Row, x - 1))
     
                Ws.Cells(ChBox.TopLeftCell.Row, x).Formula = _
                    "=SUM(" & PlageSomme.Address & ")"
            Else
                Ws.Cells(ChBox.TopLeftCell.Row, x) = 0
            End If
        End If
    End Sub
     
    '--------------------------------------


    bonne soirée
    michel

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bonsoir !
    J'ai essayé cela, mais j'ai un message d'erreur qui me renvoi à la déclaration des variables dans le module de classe "Classe1" : "type défini par l'utilisateur non défini" sur Public 'WithEvents ChBox As MSForms.CheckBox'

    Merci pour ta réponse en tout cas SilkyRoad, car ton code me semble parfait pour ce que je voudrais faire. Je vais quand même solliciter une aide supplémentaire :

    Saurais-tu me dire quelles sont les références à activer pour que ce projet fonctionne ? (et accessoirement comment rendre active l'option 'références' du menu Outils dans l'éditeur VBA d' Excel 2007

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour

    tu as utilisé des checkbox de la barre d'outils "formulaires" ou de la "boite à outils controles" ?
    L'exemple proposé utilise les checkbox de la "boite à outils controles".


    Il n'y a aucune référence à ajouter.


    bonne journée
    michel

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci Michel !
    Je m'étais aventuré dans une bien drôle d'aventure sur une mauvaise piste ! Le problème venait bien du fait que je n'utilisais pas le même composant !

    Cet exemple fonctionne parfaitement comme ce que je voulais. Cependant il va me rester deux ou trois choses à faire, comme par exemple :

    Mettre à jour le total en ligne si une colonne est désactivée
    Mettre à jour le total en colonne si une ligne est désactivée
    Mettre à jour le total en cellule D5 dans l'exemple en tenant compte des totaux en ligne ou en colonne mis à jour

    Vois tu ce que je pourrais essayer de faire ?

Discussions similaires

  1. Mauvais affichage des checkbox dans un tableau
    Par Raiden1234 dans le forum Struts 2
    Réponses: 2
    Dernier message: 26/11/2012, 11h38
  2. Récupérer des checkbox dans un tableau
    Par franklinou dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 12/05/2007, 19h06
  3. checkbox dans un tableau dynamique
    Par memoza dans le forum ASP
    Réponses: 16
    Dernier message: 02/03/2007, 00h05
  4. Réponses: 3
    Dernier message: 12/07/2006, 14h54
  5. [Tableaux] Checkbox dans un tableau
    Par mxmorin dans le forum Langage
    Réponses: 9
    Dernier message: 02/06/2006, 14h35

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