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 :

Boucle sur checkbox (module de classe) [XL-2007]


Sujet :

Macros et VBA Excel

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Boucle sur checkbox (module de classe)
    Bonjour,

    Grâce à Mercatog, qui a intervenu à 2 reprises pour me donner un sacré coup de main, que je salue et remercie.

    Donc en cochant une checkbox son caption est inscrit sur la feuille BD (selon des coordonnées répertoriées en feuille App) et en décochant le caption est effacer.
    Mercatog a utilisé un module de classe, que je ne maitrise pas du tout. J'ai compris qu'il gère la multitude des checkboxs présentent sur la feuille "m_a" et que le code réagit à l'action de cocher/décocher.

    Maintenant, je voudrais utiliser un bouton sur la feuille BD pour faire une boucle sur les chekboxs, si la checkbox est cochée inscrire comme auparavant le caption.
    Par contre, si la checkbox est décochée l'effacer et l'inscrire en colonne L (soit .offset(i,5), mais comme en colonne L, il peut y avoir une donnée, on concatène cette donnée et le caption. exemple, en L4 il y a "RAS" , le caption étant "TT08", il est effacer de G4 et concaténer en L4, résultat:"RAS" "TT08".

    je bute sur 2 difficulté, la première c'est le module de classe existant. Je ne sais pas l'utiliser et la seconde, je tourne en rond pour compter ces satanées checkboxs (est-ce des shapes ou des objects). Tous mes essais ont été vains.
    voici les codes actuels du fichier qui fonctionne bien
    module
    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
    Option Explicit
     
    Sub TestOnOff(ByVal App As String, ByVal Etat As Boolean)
    Dim LastLigD As Long, LastLigB As Long, i As Long, j As Long
    Dim Tb, Td
     
    With Worksheets("APP")
        LastLigD = .Cells(.Rows.Count, "A").End(xlUp).Row
        Td = .Range("A2:F" & LastLigD)
    End With
     
    With Worksheets("BD")
        LastLigB = .Cells(.Rows.Count, "B").End(xlUp).Row
        Tb = .Range("B2:G" & LastLigB)
        For i = 1 To LastLigD - 1                         'boucle sur Td (App)
            For j = 1 To LastLigB - 1                     'boucle sur Tb (BD)
                If Not Etat Then
                    If Tb(j, 6) = App Then Tb(j, 6) = ""
                Else
                    If Tb(j, 6) = "" Then
                        If Td(i, 6) = App And Td(i, 1) & "|" & Td(i, 2) & "|" & Td(i, 3) & "|" & Int(Td(i, 4)) = _
                           Tb(j, 1) & "|" & Tb(j, 2) & "|" & Tb(j, 3) & "|" & Int(Tb(j, 4)) Then Tb(j, 6) = App
                    End If
                End If
            Next j
        Next i
        .Range("B2:G" & LastLigB) = Tb
    End With
    End Sub
    Classe
    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
    Option Explicit
    Public WithEvents Chk As MsForms.CheckBox
     
    Private Sub Chk_Click()
     
    If ChkExists(Chk.Caption) Then
        TestOnOff Chk.Caption, Chk.Value
    Else
        If Chk.Value Then
            Chk.Value = False
            MsgBox Chk.Caption & " inéxistant dans la BD!"
        End If
    End If
    End Sub
     
    Private Function ChkExists(ByVal NomApp As String) As Boolean
    ChkExists = Not Worksheets("APP").Range("F:F").Find(NomApp, LookIn:=xlValues, lookat:=xlWhole) Is Nothing
    End Function
    code feuille "m_a"
    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
    Option Explicit
     
    Dim CC() As Classe1
     
    Private Sub Worksheet_Activate()
    Dim CB As OLEObject
    Dim i As Integer
     
    For Each CB In Feuil1.OLEObjects
        If Left(CB.Name, 3) = "Chk" Then
            i = i + 1
            ReDim Preserve CC(1 To i)
            Set CC(i) = New Classe1
            Set CC(i).Chk = CB.Object
        End If
    Next CB
    End Sub
     
    Private Sub Cb_RetourBD_Click()
    Sheets("BD").Activate
    End Sub
    Sur la feuille "m_a", il y a 45 checkboxs et 1 commandButton. En vous remerciant par avance
    Dernière modification par cathodique ; 27/04/2014 à 09h03.

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

Discussions similaires

  1. boucle sur checkbox
    Par kOrt3x dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/04/2011, 21h20
  2. [XL-2007] Problème boucle sur checkbox
    Par amelyfred dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/04/2010, 22h13
  3. Probleme de boucle sur checkbox
    Par nuFox dans le forum VBA Access
    Réponses: 10
    Dernier message: 05/12/2008, 14h25
  4. Votre avis sur ce module de classe perso
    Par borislotte dans le forum Access
    Réponses: 2
    Dernier message: 06/12/2006, 12h20
  5. Boucle sur chaque div avec class= ....
    Par zevince dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/04/2006, 12h12

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