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 :

Travailler avec un contrôle checkbox activeX sur une feuille de calcul


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Par défaut Travailler avec un contrôle checkbox activeX sur une feuille de calcul
    Bonjour à tous,

    Après insertion d'un checkbox dans une feuille XL, je désire le manipuler via le VBA, notamment les propriétés Visible, Value , Caption.
    Autant avec un Userform, je n'ai pas de souci pour coder, autant là je ne m'en sors pas.

    Pour afficher ou cacher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          Activesheet.OLEObjects("Changer_" & i).Visible = False   / ou True
    Pour récupérer la valeur ( état coché ou pas), j'utilise une variable publique au module de feuille et utilise la méthode click de l'objet que j'ai nommé Changer_1 dans les propriétés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Changer_1_Click()
        Valcheck(1) = Changer_1.Value
    End Sub
    Quelle pourrait être le code pour agir sur la valeur, à savoir initialiser à False, puis ensuite récupérer l'état défini par l'utilisateur ?
    Merci de vos conseils

    Pounet95
    XL2013 / Windows 10

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je se suis pas sûr de bien comprendre; parce que, chez-moi (Excel 2010), la propriété value est automatiquement à False à la création du contrôle. En principe, tant que tu ne la modifies pas manuellement dans la boîte de dialogue des propriétés ou par code, elle reste à False. Et, dans le module de la feuille, tu peux utiliser les événements du CheckBox.

  3. #3
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut checkbox sur feuille
    Je viens de faire un essai de récupération des choix et de visibilité, ça fonctionne mais as tu pensé de désactiver le mode création...

    voici mes codes d'essai dans la feuille 1 , pour l'exemple j'affiche et mets à false lorsque la feuille est activée et créé un bouton pour vérifier les contenus des variables :

    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
    Dim c1 As Boolean, c2 As Boolean
     
     
    Private Sub choix1_Click()
    c1 = choix1.Value
    End Sub
     
    Private Sub choix2_Click()
    c2 = choix1.Value
    End Sub
     
    Private Sub CommandButton1_Click()
    Cells(1, 1) = c1
    Cells(2, 1) = c2
    End Sub
     
    Private Sub Worksheet_Activate()
    choix1.Value = False
    choix2.Value = False
    choix1.Visible = True
    choix2.Visible = True
    End Sub
    copie d'écran :
    Nom : table essai.jpg
Affichages : 2967
Taille : 50,3 Ko

    bonsoir

    geogeo

  4. #4
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Par défaut
    Bonjour à toutes et tous,

    Merci pour les premières réponses à ma demande.
    Depuis celle-ci, j'ai quelques peu avancé en "accouchant" d'un code qui fonctionne, certes, mais qui ne me satisfait pas , persuadé qu'il doit y avoir plus simple.
    Je voudrais bien le joindre, mais, nouveau sur ce forum, je ne sais pas comment faire pour le joindre de façon à ce qu'il apparaisse comme sur la réponse de Geogeo70.

    Sinon, le mode Création est bien inactif et tous les contrôles créés sont des ActiveX .... dont je pensais la manipulation des méthodes et propriétés identique à ceux des Userform !!!

    Je fouille dans le forum pour voir si je trouve ( avant que vous me le souffliez ) le moyen de joindre ce que j'appellerais "fenêtre déroulante du code".

    Pounet95

    Re Bonjour,

    J'ai trouvé pour le code que je m'empresse de vous joindre !
    Toutes vos suggestions et commentaires ( non désobligeants bien sûr ) seront les bienvenus.

    Pounet95

    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
    55
    56
    57
    58
    59
    60
     
    'Valeur des checkbox visible pour tout le module
    Dim Valcheck(7)    As Boolean
     
    Private Sub btn_Changer_Lettres_Click()
        Dim rep                     As VbMsgBoxResult
        Dim LettreChangée(7)        As String
        Dim ValLettreChangée(7)     As Integer
     
        If btn_Changer_Lettres.Caption = "Changer Lettre(s)" Then
     
            'change le libellé pour valider ou pas le changement au prochain clic
            btn_Changer_Lettres.Caption = "Effectuer Changer"
            'sous chaque lettre, afficher un checkbox initialisé à False ( non coché )
            For i = 1 To 7
                If Range("Tirée_L" & i) <> "" Then
                    For Each obj In ActiveSheet.OLEObjects
                        If TypeName(obj.Object) = "CheckBox" And obj.Name = "Changer_" & i Then
                            obj.Visible = True
                            obj.Object.Value = False
                        End If
                    Next obj
                    Valcheck(i) = False
                End If
            Next i
        Else
            'valaidation .... ou pas
            rep = MsgBox("Echange confirmé ?", vbYesNo)
            If rep = vbYes Then
                'Ok, changer les lettres
                For i = 1 To 7
                    If Valcheck(i) = True Then
                        'remet la lettre dans le paquet
                        With Sheets("Tirage")
                            .Activate
                            lig = .Range("AE500").End(xlUp).Row
                            If .Range("AE" & lig) <> "" Then lig = lig + 1
                            .Range("AE" & lig) = Sheets("Scrabble").Range("Tirée_L" & i)
                            .Range("AF" & lig) = Sheets("Scrabble").Range("Tirée_V" & i)
                            Sheets("Scrabble").Range("Tirée_L" & i) = ""
                            Sheets("Scrabble").Range("Tirée_V" & i) = ""
                        End With
                    End If
                Next i
                'Tirer lettres
                btn_Tirer_Lettres_Click
            End If
     
            'remet le libellé du bouton à l'état initial
            btn_Changer_Lettres.Caption = "Changer Lettre(s)"
            'cache les checkbox
            For i = 1 To 7
                For Each obj In ActiveSheet.OLEObjects
                    If TypeName(obj.Object) = "CheckBox" And obj.Name = "Changer_" & i Then
                        obj.Visible = False
                    End If
                Next obj
            Next i
        End If
    End Sub

  5. #5
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    Citation Envoyé par Pounet95 Voir le message
    Re Bonjour,

    J'ai trouvé pour le code que je m'empresse de vous joindre !
    Toutes vos suggestions et commentaires ( non désobligeants bien sûr ) seront les bienvenus.

    Pounet95
    Je viens de faire fonctionner ton code ça fonctionne, peut être séparer les actions "affichage des checkbox" et "Validation" pour plus de clarté

    a++

    geogeo

  6. #6
    Candidat au Club
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2016
    Messages : 4
    Par défaut Travailler avec un contrôle checkbox activeX sur une feuille de calcul
    Bonsoir,

    Bon, a priori, ce n'est pas si "tordu" que ça !
    Merci et au prochain post.

    Pounet95

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

Discussions similaires

  1. [XL-2013] Ordre de superposition de contrôles ActiveX sur une feuille
    Par Daniel.C dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/04/2014, 14h51
  2. Réponses: 6
    Dernier message: 03/04/2011, 16h10
  3. Grouper les contrôles sur une feuille de calcul
    Par stos dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/09/2007, 16h11
  4. Réponses: 2
    Dernier message: 04/07/2007, 15h20
  5. Contrôles (CheckBox) sur une feuille de calcul
    Par yogyx dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/12/2006, 10h54

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